I applied online and Google responded very quickly (within a couple of days, I think).
I spoke with a recruiter about the application process during a 15-30 minute phone call. I was really impressed with the recruiter, who was both knowledgeable and likeable.
My first phone interview with an engineer did not go well. I could barely understand the accent of the person on the phone, and I didn't have headphones in, only the phone on speaker. This made it extremely difficult to understand the interviewer's questions.
I was asked:
Then came the tough question: If you have machine A, machine B, and a USB key, and an arbitrary binary tree in machine A, how would you copy it to machine B? (The key is to represent the tree correctly in memory.)
I thanked the recruiter, mentioning that I had trouble hearing the interviewer, and they scheduled me for a second phone interview.
My second interview went much better. My main question was to take a string, for example, "Hello World," and a number, such as 13, and add spaces to the existing spaces in the string until the string reached the length described by the given number.
For instance, "Hello World" becomes "Hello World."
The spaces needed to be balanced. If the string was, for example, "a b c" and the number was 7, the output would be "a b c."
I was then asked about linked lists and arrays, what they were, and to compare them.
How does the Java compiler handle a virtual function? I have not taken compilers and could not answer this question.
The following metrics were computed from 111 interview experiences for the Google Software Development Engineer role in United States.
Google's interview process for their Software Development 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 Development Engineer interview process in United States.