I applied to Google through an employee referral and heard back from a recruiter within a week of them receiving my resume.
The process was pretty quick and easy, with only a few required forms prior to my phone screening.
The phone interview was a simple data structure question requiring approximately 25 lines of Java code. After the interview, I was offered to fly to Mountain View for an on-site interview.
This consisted of four 45-minute interviews, plus an hour for lunch. All of them were algorithm/data structure questions (trees, graphs, arrays), so I can't comment on the nature of design-style questions.
In two of these interviews, I successfully answered the first question and was asked a second. In one interview, I answered the first question and we discussed my resume for the remaining time. The final interview was a bit more tricky, requiring careful handling of edge cases, so I got a bit mixed up and wasn't able to fully complete the problem (I did have a full whiteboard of code by the end of it).
I felt good about the interview but was notified 2.5 weeks later that the hiring committee decided not to continue the process. My recruiter suggested I get more experience but cited no more reasons beyond that.
Data structures and algorithms are a must. The most complicated algorithm one might use in these sorts of interviews is Dijkstra's (all of my questions were simpler, though).
Get used to coding on a whiteboard and be sure to understand the problem fully before jumping into the code. Bring thin-chisel markers, especially if you anticipate writing a couple of long lines of code.
The following metrics were computed from 748 interview experiences for the Google Software Engineer role in Mountain View, California.
Google's interview process for their Software Engineer roles in Mountain View, California is very selective, failing most engineers who go through it.
Candidates reported having very good feelings for Google's Software Engineer interview process in Mountain View, California.