My interview with Google

Published: April 05, 2008
Tags: google

A little less than a month ago, I received an email out of the blue from someone claiming to be a recruiter for Google, who had apparently stumbled upon my website and, having observed my background in both maths and computers, was wondering if I would be interested in talking about any opportunities for engineering work with Google. After a good hour trying to convince myself that this wasn't a joke or a scam (I even did reverse DNS lookups on IP addresses in the email's SMTP headers!) I replied saying I was interested - I had been offered my PhD scholarship only about 2 days beforehand, so was already resolved to either leaving my current job or having my hours scaled drastically back. Besides, it's been extensively well documented what an awesome place to work at Google is. Thus, I began an entirely unexpected interview process for a software engineering position that drew to a close today (I didn't get it).

There is a lot of myth and legend surrounding job interviews with Google. The blogosphere is full of the writings of those who've had interviews but not been employed - just do a search for "my interview with google" (without quotes). These people tell tales of highly unorthodox interview techniques with abstract or irrelevant seeming questions, having nothing to do with computers at all, from which Google's recruiters can supposedly divine a deep understanding of how you think and thus whether or not they should give you free lunches. See here, for example.

When I received my first phone call from Google, I was nervous. I was fully expecting to be asked to explain why manholes are round or how I would escape from a gigantic blender after being shrunk to the size of a coin. In fact, at no stage during either this call or any of the two following calls was I asked any kind of bizarre trick questions. The whole thing was quite orthodox, professional, and ruthlessly technical. In the end, I took a total of 3 phone calls, most of which were somewhere around 45 minutes in length, and exchanged a lot more emails. This entry is supposed to be a summary of my impressions of the whole experience, with some simple advice for future interviewees.

Note that I'm not going to share any specific interview questions that I was asked. The folks at Google asked me not to, and even though I didn't sign anything, or even say anything that would to my understanding comprise a verbal contract under Australian law, I like to be a man of my word. Besides, you've really got nothing to gain from getting such a list, because if you couldn't answer the questions on it without forewarning then you're not likely to be able to answer any questions not on the list, and when such a question inevitably comes up, you'll lose. Besides, I'm sure Google aren't stupid enough to not change their questions on a regular basis.

Anyway, starting at the start - why me? The HTTP access logs for my website show that on the day I received my first email from Google, someone got to my site from a Google search results page. The search term requested all web pages whose page title contained "homepage", "about me" or "blog" and whose body contained the term "Python standard library". Obviously, Google's recruiters trawl the results of pages like this (occasionally replacing, I'm sure, the Python condition with other phrases relevant to other languages or technologies) looking for likely candidates. So having a good personal website that discusses your technical interests and experience will help Google find you. Of course, that's no guarantee they'll email you. Your website needs to not suck, according to some criteria that I can't enlighten you as to.

Once I was contacted, I was surprised and impressed by the nature of the emails I exchanged with Google's hiring people. They were very relaxed and casual emails and everyone came across as friendly and open, although without seeming unprofessional. The people who scheduled my interviews were flexible and happy to accommodate late changes. It was pretty cool. Unfortunately, this aspect was sorely lacking in my eventual rejection email, which came from someone I'd had no earlier dealings with and was obviously generated from a template they use for everyone. Oh well.

As for the interviews themselves, they also tended to have a fairly friendly and casual atmosphere (the people doing the interviewing were geeks themselves). I've never had an interview before where the interviewer described things as "lame" or "freaking huge"! So while the kinds of questions you get asked are very technical and fairly demanding, they tended to feel to me more like a friendly fellow geek asking me questions than a harsh and uncaring CS lecturer giving me an oral examination, which is good.

The first thing I had to do in my first phone call was self evaluate myself on a scale of 1-10 at a whole bunch of things, including specific programming languages. The style of questions I got thereafter were selected to play to my strengths, which is certainly something I appreciated, and also a good incentive for you to be honest during the self evaluation. I'll try to give you a sense of what sort of questions you might get asked if your self evaluation looks like mine:

  • You will need to be able to quote the average and worst case running times (in Big-O notation) of some fairly standard CS algorithms, like searching or sorting common data structures.
  • You will need to know some Unix internals, all the way down to common system calls, their arguments and return values.
  • You will need to be be able to devise algorithms to solve relatively simple problems, analyse the running time of your solution and possibly read back an implementation of it in a language of your choice (yes, you may be asked to put the phone down, write some code and then read it back).
If any of these things are beyond you, you simply won't fare well, so don't bother accepting an interview until you've learned some of this kind of thing. Unless you have pretty sharp skills as it is, you would do well to study in between your interviews, and especially before your first one. I certainly wouldn't have made it past the first one if I hadn't skimmed through a data structures and algorithms text book the night before to refresh my memory on numerous things.

Overall, I really enjoyed the experience, even if I didn't get the position. It provided a really good excuse to spend some time brushing up on all areas of computer science (including stuff I probably should have learned ages ago) and served to identify gaps and weaknesses in my knowledge which I can now focus on fixing.

In case it's not now clear, this was the reason why my research page page said (until recently) that content would be forthcoming soon with probability 0.5. Obviously, this probability is now 1.0. I'm starting tomorrow, and am lucky enough to still be getting one day's work a week at m.Net, which is the maximum allowed under the terms of my scholarship.

Feeds
Archives
Top tags