Last year, I had a job interview at Google. Here are the questions I was asked:

  • Tell me about one of the projects on your resume.
  • What technologies did you use to get this project going?
  • What if your project had 5000 or 50000 or 5000000 users?
  • What's an inode?
  • What's the angle between clock hands when it's 3:15?
  • Write a C function that returns angle between clock hands for any (hour, minute).
  • Write a binary tree.
  • How would you troubleshoot this problem - network diagram presented.
  • What's the difference between a router and switch?
  • Implement a routine in C that counts number of characters in a string.
  • Given 100GB file and a computer with 1GB of memory, how would you sort it.
  • Can you make it parallel and solve it on 100 computers?
  • What's a priority queue?
  • How does BGP work?
  • Can DNS use TCP? In which cases DNS uses TCP?
  • Implement set difference in any language you like.
  • How does HTTP work?
  • How does 3 way handshake work in TCP?
  • What's void *?
  • What's the sticky bit?
  • What's the system call for creating files?
  • Order by execution time: reading disk, accessing memory, context switch, writing a cpu register.
  • How would you count the number of set bits in a very huge number?

See you next time!