UPDATE: I got an email saying that I passed the interviews, and now waiting to be matched to a project.
Today I had the chance to interview with Google. It was a unique experience, and worth blogging about.
Application
I started applying for summer internships towards the middle of February. But it turns out this is too late to apply for some companies, Google was at the late stages of interviews too. So to make sure that you get the best experience, start applying right after you have results from the Fall-Winter semester.
If there’s a possibility to get a recommendation from within Google, that would increase the chance of your resume getting a good look.
Response & Preparation
I got a response from my recruiter within 2 weeks, and she asked me for my schedule, and we set up the days for the interview. After that I had to fill in a questionnaire, sign a NDA, and fill up some other forms.
They ask you about the programming language(s) that you want to use for the interview. I said C++/Java, whatever language you select, make sure you know everything about it, because the questions can be from non-obvious parts, which you never thought was important.
For preparation, Steve Yegge has two posts regarding this. I highly recommend reading them.
I borrowed Introduction to Algorithms by CLRS from the library, and read through it to refresh my memory. The next thing was to do questions in the practice rooms at TopCoder. This would really help you get your problem solving skills polished.
Doing practice problems in other websites, such as Codeforces or UVa judge also helps a lot. But I found working on TopCoder questions to be more convenient. Because I told them that I know both Java and C++, I did TopCoder problems in Java, and Codeforces problems in C++.
Actual Interview
I was very nervous while waiting for my interviewer to call me, I had Google Docs open. They give you a link to a shared document, where you can type in code for the interviewer to see.
The nervous stage lasted halfway through the first interview, and by the end of it I was in good form. The first interviewer was from the Google Search Quality team, and his questions were more focused on optimizations. I found this interview to be hard, partly because this was the first interview I’ve had. Luckily I was able to answer all the questions correctly, within the given time.
Second interview was from an engineer with the Google Plus team, first half of the interview was writing a C program with lots of edge cases. I missed one edge case, but he was happy because I finished the program in 5 minutes, and only missed one case. From what he said, I performed better than many others.
After that I had to answer an algorithmic question, something similar to what you get on TopCoder, I got the solution to that pretty fast too, again he was happy with it. There were few more questions and the whole interview was done in 30 minutes. We spent the rest of the interview talking about life at Google, and he answered the questions I had about Google.
There were few incidents, including Sergey Brin going by my interviewer on roller-blades, wearing a pink helmet, and my interviewer promptly informed me about it.
I am very happy with how it went, and awaiting feedback from my recruiter.