This is a something I originally posted 2-14-08, right as I was in the midst of doing interviews at Amazon, Microsoft, and Google. I remember finding first hand accounts of interviews at those companies really useful as I was preparing, so I figured I’d rescue this post from the old site and repost it here, in all its unedited glory:
The following post was more or less written on my laptop the evening after the interview, I’m just posting it now, with a few edits.
So, the Google Experience.
First of all, it was all amazingly fun. I’ve hear Google described as world-class people solving world-class problems, and that was definitely true. Overall I feel like I did fairly well. My interviewers were all friendly but professional, nothing like some of the horror stories I’ve heard. The questions were all pretty good, with a fairly clear purpose.
The topic areas broke down to 2 interviews focusing on algorithms, 1 interview on *nix systems, and 1 on networking and design (and I new my topics ahead of time). I started out the morning in a nice but actually slightly small lobby. I was offered juice or water, but I just watched Google searches come across a projector. The topics varied, including a few in other languages (and some in other character sets), but I noticed quite a few Google searches for ‘‘yahoo’’ as well as some for ‘‘gogle’’ (sic) and one for ‘‘undescended testicle.’’
I was met by my recruiter, who walked me to an interview room, or at least what was supposed to be my interview room. Turns our there were some scheduling problems, so my first interview was in that room but I moved to another room for the rest. The Google buildings look very nice, but the interior layout is more then a little confusing. I tend to like buildings like that with character, but I could see some people having a problem with it.
By the way, cool note on conference rooms at Google: they’re all named after cities. Apparently each building choses names from a different geographic area, and the higher in the alphabet the room name is the higher in the building it is.
Anyway, my first interview was with David, who asked me some questions on algorithms and C coding. He had some good questions, and I came up with some good answers. He was a pretty cool guy, and was fun to talk to. He ended the interview with a few things that he said every potential employee should know about Google, about how things work. It was good to know, including some stuff on how training works and so on. His information was probably some of the best I got. I think I did fairly well in this one.
Next up was Chris with some system administration type questions. He was a Summer of Coder, and he had apparently read this blog (and agreed with the point on using Python to teach). I was worried about what system administration questions would be like, but I think I did fairly well. The things I didn’t know I was able to more or less workout. I was able to bring in some of the cool digital forensics stuff I picked up in Liebrock’s class, which was good since I think it makes me stand out. He also phrased a lot of data recovery questions in terms of being the criminal, not the investigator, which made things a little interesting.
By the way, as I write this I’m watching Law & Order, and apparently someone just wiped out all their files by de-fragging a hard drive.
Next was lunch time. The Google cafeteria is as good as you’ve probably heard. I had a small pizza that was as good as any I’ve had, polenta with mushrooms, some vegetable curry with nan bread, and a couple of mini key lime canolis. I had a pretty great bottle of cream soda to go along with it, and talked with John about how the company works.
After lunch the interviews got a little rougher. First was more algorithms and C coding with Momchil and Adam. It may have been post-lunch sleepiness, but I got the answers slower. I think the questions were also harder, but I managed to arrive at reasonable answers, I just wish I had got to them a little faster. Another interview that was a lot of fun. It wasn’t until later that I realized I used an AND when I really meant NOT XOR. Oh well, I think my thought process was good, and I’ve been told that the interviews are at least in part about how you solve the problems, not just the solutions.
Finally I had networking and design with Jason. This was probably the roughest, I had a little bit of a hard time seeing exactly what the questions were about, and networking isn’t my strongest area. We were also in a different room, without much whiteboard space to work with, making for little space to write my solutions in. Probably my worst interview, but I didn’t feel like I messed up too bad.
Overall, it was incredibly enjoyable. After this process, any other interview is going to seem easy, and I had a lot of fun working out all these great problems. I’m sure some people will get here looking for exact questions and answers, which I’m not going to give. What I will say is that it’s more about thinking on your feet then memorization, for the most part. The questions they asked seemed designed not to make me (for example) implement Quicksort on the board, but to make me think about how to optimize hard problems in tight constraints, which is pretty much what Google does.