The recruiter set up my first technical interview with an engineer in CA.
My first technical interviewer asked me 4 questions in my phone interview. The interview was conducted over the phone and Google Docs where I would type my code. The questions were:
1. Describe a time at your job when you debugged / tested something but couldn't find what was wrong.
2. Describe a good test.
3. Coding question
4. Coding question
For the first coding question, the main one, I had to think about the answer and talk through what I was thinking with the interviewer. Talking through your thought process is a must for Google interviews, if you simply say nothing, the only thing the interviewer has to go off of is the correctness of your answer rather than the approach you're using and your reasoning for it, so if the answer is wrong, the interviews can not get you back on track. Eventually after I got the ball rolling, had no trouble solving the problem. The solution consisted of a 2D matrix rotation and a recursive flood fill algorithm. The interviewer gave positive responses for my solution, and did not ask how it could be improved.
I finished the problem with 20 minutes to spare, so the interviewer asked if I wanted to go over another problem and I said, "Sure". The next problem was a piece of C code which had errors in it, the interviews asked me to find the errors in the code and I found most of them given what the code actually was supposed to do. I don't think the interviewer actually cared very much about this portion since I don't believe he expected me to finish so early and the C question was just something to fill time. He then asked me if I had any questions so I asked him to describe what an average day was like for him and what he did. He was very thorough and we had an interesting conversation. After the phone interview was done my recruiter called me back the 2 business days later and told me I had done very well, and that Google wanted me to fly to Manhattan for my last interview set over the course of a day. Between flying to Manhattan ( 2 weeks after the recruiter called me back ) I studied my ass off. I reviewed every available resource to me online and offline prior to flying to Manhattan. I went to my primary coding review website (www.CodeEval.com) and solved every possible problem on this site.
Working as a back-end web developer for 10 months prior to this gave me some great knowledge about databases , object-oriented design and multi-threaded
applications. Some of the aforementioned skills and information is hard to get without having prior experience, in my opinion, especially if you're straight out of college.
I had 6 interviews onsite, 1 of the interviews wasn't an interview at all, and was really lunch / off-the-record conversation with another SET who had been working at Google for quite some time. The other 5 interviews were all very technical and mostly exclusively dealt with specific coding questions. I won't reveal specifically any of the interview questions here since I signed an NDA, but I will reveal the phone interview question (mentioned above) since that was prior to me signing the NDA. I will go into the general format of the questions at the onsite interviews. The first interview was with a young Software Engineer, who was around my age, probably 22. The question had to do with generating permutations in an efficient manner. He asked me for the complexity of my algorithm in terms of memory and run-time. He said my solution was correct off the bat and asked how the memory complexity could be improved. After talking out loud and exchanging ideas, I arrived out how to reduce memory complexity. The following 4 technical interviews were of the same format except the last which was a higher level design question that was mostly open. Be prepared to be asked questions about how to test your code, that being said, your code ought to be written such that it's decoupled and easy to test
rather than ONLY implementing the solution.
Another piece of advice I would give to someone is that wherever possible in my interview, point out how a problem can be threaded. I was specifically interviewing in Java, so I knew how to do this using the available components in Java. Google is a big company and any of the software that they build needs to be able to parralelized and scaled wherever it can be, the interviewers will be looking for this.
After the interview my onsite assigned recruiter said I would get a decision in less than 2 weeks, and after that, the offer stage would come.
About 4 weeks later I was called and told that I didn't get the job, despite my performance in the interviews which the recruiter told me was not bad.