I had the phone interview.
I've applied at Google before and took another job because the process took so long. This time, I applied to Google before I started looking anywhere else. It was a good decision, as it took over three weeks for the phone interview and another two weeks before they responded to my performance.
Write a function that, given an array of numbers, returns the highest occurrence of a number. If, for example, 6 showed up the most (8 times), return 8.
I overthought the question. This is in C, and I'm guessing they just wanted me to allocate a full array (256 for 8-bit) and increment an entry whenever that number occurs (histo[number]++), while keeping the highest occurrence in a return variable (if (histo[number] > highest) highest++;).
I thought the solution was way too simple (like 6 lines tops), so I devised a solution that would work for very large numbers for which a full array couldn't be allocated (64-bit = 2^64 array, for instance). It wasn't as memory- and computationally efficient as allocating a full array for lower bit number ranges (8, 16, 32), but it was a more robust and complete solution.
Anyways, I guess he didn't see it that way. They turned me down. 8(
So, warning: don't overthink a question on a phone interview. They're more likely to just want the 6-line quick answer on a phone interview. I think the phone interview is purely to weed out the complete idiots. If you overthink what they think is an easy problem, then you look like a complete idiot.
Onsite is more challenging. I did the onsite a few years ago, and the solutions and implementation required some thought.
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.