I applied online. The process took 3 weeks. I interviewed at Google (London, England) in Jan 2011
Interview
Applied online, got a call from the team lead of the job I was applying for. Had a very nice overview on how the interview process would go and what to revisit/study (e.g. algorithms, Big O nation, performance, system design).
Had the first phone interview about a week later with an engineer for the US. Fairly basic questions on object-oriented design, coding practises, networking (explain how your mobile phone talks to a web site) and such. No major problems with this and was invited for on-site interview.
4 back-to-back 45min minute interviews with a few minutes break in between. All the developers involved had a C/C++ background (I was applying with a Java/JavaME background). Numerous problems related to bit flipping/masking, graph algorithms, some design patterns, performance, application design, specific networking API questions. Had a hard time with some of the questions due to the very low nature (something that I hadn't done at all since pre-uni studies), so while was able to solve many of the problems, there were enough to make me fail the interviews. Got a call a few days later, "won't be progressing further with the application" - which was well expected based on how it went. Your success really depends a lot on which questions get picked, the background of the interviewers and how well you've rehearsed (math, algorithms, puzzles etc).
Contacted by a recruiter for a different position I had applied for. I ended up having a phone screen and phone interview for this position. The phone screen was standard. The recruiter explained the interview process and what to expect.
During the phone interview, the interviewer asked questions about Objective-C. There was a programming problem that involved creating a class per specific details.
Interview questions [1]
Question 1
Involved copying a linked list. The tricky part though was the objects in the list could refer to one another.