FIrst I had two technical interviews, which were back to back, by phone, 45 minutes each. I coded in a Google Doc that was shared with the interviewer. They asked standard factual questions about Java and OOP (which I had stated I was familiar with) and asked me to work through a programming problem in the language of my choice (I chose Perl, the interviewer wasn't familiar but was fine with that). I made some mistakes in my code, didn't check some boundary conditions, the interviewer asked e.g. "what about when x = y", I fixed it, it was fine.
Then I had two interviews with potential hosts, they asked me what I wanted to get out of the internship, what experience I had with the technologies they used, and how I would approach various research and engineering problems.
Interview questions [1]
Question 1
Google says you're not supposed to repeat specific questions. I don't remember anything anyway. Everything was pretty standard.
2 phone interviews, mostly technical, only a couple of minutes for your own questions at the end and perhaps a brief introduction of your previous experience at the beginning. If the interviews go well, then host matching begins. Different potential hosts interview candidates until they find a suitable match. The host matching is usually just a relaxed conversation.
Interview questions [1]
Question 1
I can't remember the toughest question. Preparing with TopCoder, ACM ICPC or uva online judge should do. Try to keep the conversation going at all times. It's alright to take a pause for a couple of seconds and think, but it's important to always let the interviewer know how we are tackling the problem.
I applied through a recruiter. The process took 1+ week. I interviewed at Google
Interview
The hiring process was pretty good. I was recruited, so I had a slightly different pathway, but the recruiter was always on top of things, and response time was quick.
Interview questions [1]
Question 1
Low level systems questions, non-traditional questions.