I applied online. The process took 3 weeks. I interviewed at Google in Sep 2013
Interview
I applied online and Google responded very quickly (within a couple of days, I think). I talked to a recruiter about the application process in a 15-30 minute phone call, and I was really impressed with the recruiter and how knowledgeable and likeable she was.
My first phone interview with an engineer was pretty bad. I could barely understand the accent of the person on the phone, and I didn't have headphones in, just had the phone on speaker, so it was really really hard to first understand what the interviewer was asking. I was asked what a virtual function was, how the java compiler does a virtual function, what projects I had coded in Java (I marked this as my primary language), and then the tough question as follows:
If you have machine A, machine B, and a USB Key, and an arbitrary Binary Tree in machine A, how would you copy it to machine B? (The key is to represent the tree correctly in memory)
I thanked the recruiter while still mentioning that I couldn't hear my interviewer, and they scheduled me for a second phone interview.
My second one went much better. My main question was to take a string, say "Hello World" and a number, for example: 13, and add spaces to the spaces already present in the string until the string becomes the length described by the given number.
So "Hello World" becomes "Hello World" here. The spaces need to be balanced so if the string is for example "a b c" and the number is 7, the output would be "a b c". I was then asked about linked lists and arrays, what they were and to compare them.
Interview questions [1]
Question 1
How does the Java compiler handle a virtual function? -- I have not taken compilers and could not answer this question.
I applied online. The process took 5 weeks. I interviewed at Google
Interview
Submit my resume online.
In the first phone interview, the google staff asked me about my projects and a programing problem about picking up a sample of 1000 keywords from huge amount of search requests. Of course, it is impossible to save all the requests. The solution can be found on the Cracking Coding Interview. But then he asked me to explain why that works. I failed. Then I was asked to propose a way to check if the algorithm works.
15 min laters, I got my second phone interview. Problems include Augmented Tree (from the book Introduction to Algorithms), a question using greedy algorithm. I did not finish the second problem, but proposed the right algorithm. And it took me a long time to fix the bugs in my programs.
Recruiters are very nice and guide me to debug. I passed the interview and got to team match, but no team leader contacted me. Maybe I do not have my own unique skills or project experience.