I interviewed in May 2018.
The interview process was reasonably straightforward: two phone screens that asked purely technical questions. These were not particularly difficult; however, explaining my solution and thought process over the phone was somewhat taxing. I am reasonably sure that my first interviewer didn't quite understand what I was thinking, hence the need for the second phone screen. At this point, I was transferred to a different recruiter for my onsite evaluation.
After passing the second phone screen, I was flown out to Mountain View for an onsite interview. I signed up for the interview prep session, held every Friday. The recruiter informed me that it would be a mock interview-style class; however, it presented repeated lots of information already given to me by the recruiter or what you could find online. There was one technical problem given to us, then students volunteered and told the class their solution. This was no reflection of coding on the whiteboard interview style. Honestly, this was probably a waste of time.
The onsite interview was 5 rounds plus lunch. Each round was exactly the same: 2-3 technical questions with a solution that could be coded on the whiteboard. I didn't find any of the questions particularly challenging; they were probably LeetCode medium-level questions and definitely shorter than most coding questions online. Some of the interviewers were easy to work with – it seemed like there was a correlation between how long they were at the company and how smooth the interview went. One guy was clearly sick and would awkwardly laugh throughout the interview. He left without any salutation and didn't ask any personal questions. Another interviewer had less than two years of experience; he had two questions prepared, one of which was already asked during my phone screen (hmmm, nice planning, Google). I told him that, and he was clearly thrown off. The last interviewer was unfamiliar with my requested coding language (Python) and didn't understand lots of the built-in methods that were being used.
The recruiter called me back a couple of days later and told me my interview was "borderline," and we would not proceed in the hiring process. She mentioned that I was not receptive to the feedback during the interviews; however, I got all the technical questions correct. When I requested more interviews, she checked with someone and replied that they wouldn't help my application. My best guess is she was lying through her teeth if my interview was truly "borderline." Also, the recruiter would never send me this information in writing via email; she would send an email and ask to call me. This was both inconvenient and sketchy; it's almost as if they didn't want to have a paper trail. I'm not certain, but there may have been some kind of hidden agenda. If they didn't like how I behaved, why would they encourage me to apply again? When I asked if I could leave my feedback on the interview process, my recruiter told me that I would be able to fill out a survey that would be sent to me in an email. It's been a month, and I still haven't received this email.
Overall, I was dissatisfied with the process. Although there was excellent communication, I think there could have been a bit more transparency and planning on their end. I get it; Google is big, and HR is huge and is going through growing pains, but I was sketched out by some of their shady tactics and poor planning. If Google was really looking for top candidates, they could spend a little more time evaluating candidates instead of telling them to simply 'reapply in 6-12 months.' Unfortunately, the flipside of this is that it's tiring for candidates to prepare and complete the interviewing process. If you interview 3-4 times and still don't get the job, you probably aren't cut out for Google, but I've heard of multiple instances where very qualified candidates need to interview multiple times before getting an offer. The process produces waste and false negatives, but seems to work for them.
Also, if you are driving to the Mountain View campus, be wary of parking. I spent upwards of 30 minutes after getting off 237 to find parking. This is really bad traffic at the freeway exit and the roads near Google. I ended up parking down the street at Microsoft and running to make my 10 am interview. Interviewer beware!
The questions were straightforward with minimal to no tricks. Practice makes perfect; understand DS and algorithms, then practice until you start visiting different websites and seeing the same problems. "Cracking the Code" + appendix covers most everything, then it's up to you to apply those techniques in real problems. Most of my problems were with tries, and practicing with tries really helped complete all the problems. The formula was the same over and over: get the problem, match the relevant data structure(s), then create one or more loops to populate the data structure(s). Possibly, do some sort of analysis at the end to produce the final answer.
At the same time, find a language that you are comfortable with and master it; know all the built-in functions. If you are at the point where you don't need to look up built-in functions, then you are ready.
The following metrics were computed from 3,728 interview experiences for the Google Software Engineer role in United States.
Google's interview process for their Software Engineer roles in the United States is extremely selective, failing the vast majority of engineers.
Candidates reported having very good feelings for Google's Software Engineer interview process in United States.