Google is an amazing place to work; they have the best projects, employ the best people and have the best decor. In fact I was at Google HQ in London at the end of last summer for Young Rewired State, a hack day for 15-18 year olds, and we even got food with Google logos on it! So I applied earlier this term for a summer job / internship / work experience (how synonymous are these terms anyway?) at Google HQ at Mountain View, CA.
There’s a great deal of mystery surrounding the Google selection process, but having gone through Cambridge and Stanford applications, from my point of view it wasn’t anywhere near as baffling. It was made clear what qualities are expected of candidates (I inferred that these are primarily programming and algorithmic fluency and an interest in at least one of the company’s projects), the decision process at Google’s end was surprising in speed (a weekend) and Google made sure to keep paperwork to a minimum (a mere few PDFs); more than I can say for any of my university applications!
The process was also pretty simple in comparison. Since, from what I can tell, Google normally only recruit interns from the pool of compsci students currently attending university and I’m still at secondary school, I had to contact them directly via email (with the help of a contact) to get started. I was bounced around a bit and sent my CV and cover letter to a number of different departments until I was given instructions to fill in some application forms. A couple of days afterwards I received an email informing me Google want to interview me (technical interviews) and requesting a list of dates and times I’m available. Just over two weeks later I got a reply informing me I had two interviews at 10 and 11 pm GMT (!) with some links to advice about what to brush up on. Google technical interviews are conducted by phone from the US with the help of Google Docs (interviewees code directly into the google doc – no IDE / debugger!) and are entirely about algorithms and programming. From what I read leading up to my interviews, data structures (esp. linked lists and binary trees) come up in pretty much every interview. C++ seems to be the language of choice of most Googlers, though I was allowed to use C# (whose syntax pretty much identical to C++ anyway and almost literally identical to java) when I admitted that I’m crap with pointers :P. I’m not at liberty to disclose interview details, but to cut a long story short I did a few retarded things and failed an algorithm question but was complimented on my speed of coding in both interviews.
Of course, it wasn’t over yet. “I have good news for you.” quoth an email that arrived days later. They wanted to move forward with the next step and identify a project (including a further interview), and warned that there are no guarantees. As it turned out, I got the job after this (non-technical) interview with the potential project manager but didn’t have the mandatory 11 weeks’ contiguous holiday to spare, and consequently had to (very reluctantly) turn down the offer – accepting would have meant missing hiking in the Skye Mountains, watching the penultimate NASA space shuttle launch in Florida and launching a CanSat from the Andoya Rocket Range in Norway (Skye and Norway being the furthest North I’ll have ever gone).
But anyways, I’ve now survived literally the two toughest interviews of my life (I definitely struggled a lot more with these than my Cambridge ones – but then I’m a bit crap at inventing clever algorithms and know nothing compared to an actual compsci student) and I’ll have a better idea of what to expect next time when I apply again next summer!