The recruiter set up my first technical interview with an engineer in CA.
My first technical interviewer asked me 4 questions during my phone interview. The interview was conducted over the phone and Google Docs, where I would type my code. The questions were:
For the first coding question, the main one, I had to think about the answer and talk through what I was thinking with the interviewer. Talking through your thought process is a must for Google interviews. If you simply say nothing, the only thing the interviewer has to go off of is the correctness of your answer, rather than the approach you're using and your reasoning for it. Therefore, if the answer is wrong, the interviewer cannot get you back on track. Eventually, after I got the ball rolling, I had no trouble solving the problem. The solution consisted of a 2D matrix rotation and a recursive flood fill algorithm. The interviewer gave positive responses to my solution and did not ask how it could be improved.
I finished the problem with 20 minutes to spare, so the interviewer asked if I wanted to go over another problem, and I said, "Sure." The next problem was a piece of C code which had errors in it. The interviewer asked me to find the errors in the code, and I found most of them given what the code was supposed to do. I don't think the interviewer cared very much about this portion since I don't believe he expected me to finish so early, and the C question was just something to fill time.
He then asked me if I had any questions, so I asked him to describe what an average day was like for him and what he did. He was very thorough, and we had an interesting conversation.
After the phone interview was done, my recruiter called me back two business days later and told me I had done very well. Google wanted me to fly to Manhattan for my last interview, set over the course of a day.
Between flying to Manhattan (two weeks after the recruiter called me back), I studied my ass off. I reviewed every available resource to me online and offline prior to flying to Manhattan. I went to my primary coding review website (www.CodeEval.com) and solved every possible problem on this site.
Working as a back-end web developer for 10 months prior to this gave me some great knowledge about databases, object-oriented design, and multi-threaded applications. Some of the aforementioned skills and information are hard to get without prior experience, in my opinion, especially if you're straight out of college.
I had 6 interviews onsite. One of the interviews wasn't an interview at all and was really lunch/off-the-record conversation with another SET who had been working at Google for quite some time. The other 5 interviews were all very technical and mostly exclusively dealt with specific coding questions.
I won't reveal specifically any of the interview questions here since I signed an NDA, but I will reveal the phone interview question (mentioned above) since that was prior to me signing the NDA. I will go into the general format of the questions at the onsite interviews.
The first interview was with a young Software Engineer, who was around my age, probably 22. The question had to do with generating permutations in an efficient manner. He asked me for the complexity of my algorithm in terms of memory and run-time. He said my solution was correct off the bat and asked how the memory complexity could be improved. After talking out loud and exchanging ideas, I arrived at how to reduce memory complexity.
The following 4 technical interviews were of the same format, except the last, which was a higher-level design question that was mostly open.
Be prepared to be asked questions about how to test your code. That being said, your code ought to be written such that it's decoupled and easy to test, rather than ONLY implementing the solution.
Another piece of advice I would give to someone is that wherever possible in my interview, point out how a problem can be threaded. I was specifically interviewing in Java, so I knew how to do this using the available components in Java. Google is a big company, and any of the software that they build needs to be able to be parallelized and scaled wherever it can be. The interviewers will be looking for this.
After the interview, my onsite assigned recruiter said I would get a decision in less than 2 weeks, and after that, the offer stage would come.
About 4 weeks later, I was called and told that I didn't get the job, despite my performance in the interviews, which the recruiter told me was not bad.
Given a 2D rectangular matrix of boolean values, write a function that returns whether or not the matrix is the same when rotated 180 degrees.
Additionally, verify that every boolean true is accessible from every other boolean true if a traversal can be made to an adjacent cell in the matrix, excluding diagonal cells.
That is, (x, y) can access the set [(x + 1, y), (x - 1, y), (x, y - 1), (x, y + 1)].
For example, the matrix {{true, false}, {false, true}} should not pass this test.
The following metrics were computed from 4 interview experiences for the Google Software Engineer In Test role in New York, New York.
Google's interview process for their Software Engineer In Test roles in New York, New York is extremely selective, failing the vast majority of engineers.
Candidates reported having very good feelings for Google's Software Engineer In Test interview process in New York, New York.