The job was for a software development position. First, a Google recruiter contacted me with some initial questions to gauge my fit and interest.
Then came the technical phone screen. If you have a solid CS background, this is pretty easy to pass. It involved a couple of general data structure and algorithm questions. And every Google interview asks about big-O notation; you need to know this or forget about working at Google.
Next was the on-site interview. I interviewed with four engineers, 45 minutes each. They each spent about five minutes discussing my background or past projects. However, they weren't really interested in this and didn't pay much attention to my answers. The next 35 minutes consisted of technical grilling, with about five minutes at the end for me to ask questions.
Each interviewer presented a problem and asked me to solve it. Sometimes it was hard to figure out what the interviewer was asking, but asking lots of clarifying questions helped. I solved some problems and worked through others with many hints. I was then asked the order of complexity of my solution and how I could improve it.
Then came the real hard part, for me anyway. I was asked to write the code for the solution on the whiteboard. Writing code in an IDE after thinking about it for a few minutes is one thing, but writing code on a whiteboard in a short amount of time is another. I didn't do so well here.
After the interview and reflecting on all the problems they asked, none of them were particularly hard, and the coded solution was usually about ten lines of code.
I found most of the engineer interviewers very polite and interesting to talk to. A couple of them were arrogant and came with an attitude that you had to prove you were as smart as they were. But overall, I found the interview a positive experience and felt I learned something.
Given an array of numbers, replace each number with the product of all the numbers in the array except the number itself, without using division.
Create a stack of numbers where the maximum number is always known.
Create a cache with fast look-up that only stores the N most recently accessed items.
Explain the difference between Array Lists, Linked Lists, Vectors, Hash Maps (from Java's JDK), etc., and when one choice is better than another.
The following metrics were computed from 38 interview experiences for the Google Senior Software Engineer role in Mountain View, California.
Google's interview process for their Senior Software Engineer roles in Mountain View, California is extremely selective, failing the vast majority of engineers.
Candidates reported having good feelings for Google's Senior Software Engineer interview process in Mountain View, California.