I was contacted by a recruiter thanks to a referral from a Googler friend.
First, I had a quick (5-10 minutes) phone call with a recruiter. I described my background and interests at a very high level. The recruiter didn't really ask any questions.
The next day, I was contacted to schedule a technical phone interview. I asked for three weeks for preparation.
The technical phone interview was about 30 minutes long. There was only one problem, and I had to implement a solution in a shared Google Doc.
Within a few days to a week, they contacted me to schedule an on-site interview. I asked for another month for preparation.
There were five back-to-back interviews with engineers, with a lunch break in the middle. Each interview was 45 minutes long, and all had a very similar structure.
Typically, there was one main problem, and the interviewer expected a simple brute-force solution to begin with. Then, I was asked to analyze its performance and try to optimize my solution (or in some cases, scale it up). Finally, I had to implement a solution on a whiteboard.
Some interviewers asked me to implement the brute-force solution first before discussing possible optimizations. Others wanted me to optimize the solution first and then implement one of the versions at the end (they didn't care which version I picked to implement, just wanted to see I could code).
If there was time left, we discussed another, more challenging, open-ended problem (at a high level, just to see how I think), or had time for me to ask questions. The problems were not too hard, but the interviews felt pretty intense overall.
After the interviews, I was contacted by my recruiter the same day. She told me she received some initial feedback, and what she heard so far was really good. In another 2-3 days, she confirmed that the interviews went well and told me she would be preparing my case for a hiring committee. Finally, about two weeks after the on-site interview, she told me they were ready to make an offer.
I can't recall the exact questions, but all problems were related to basic algorithms and data structures.
One problem involved a binary search tree. One involved dynamic programming. One was a two-player game where I had to determine which player had a chance to win. One was about a binary search array. One was related to basic hashing.
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.