So on Monday I shared a post I wrote before my first Google Interview, that was actually some weeks ago now thought so I thought I’d share the results.
I didn’t get in.
I didn’t disgrace myself either, I was careful, thorough and I showed my skills, I got though the first technical interview, but didn’t quite manage the second.
Google doesn’t like it’s interview questions to be shared, but there are some things I probably would have liked to know in advance.
My first interview was intense. Very intense. So you know how interviews start right? There is some chat about the weather, the interviewer might introduce themselves and their role and some other ‘click to accept terms and conditions’ type chat and after a little while we might causally get on to some technical questions in such a way as if we vaguely pretend it’s spontaneous: ‘oh hey, I see here I’ve got to ask some questions…’.
Well my first Google Interview (by phone) started like this:
Them: “Hello, is that Joe?”
Them: “Okay, my name is X from Google, you are expecting an interview now yes?”
Them: “Okay, imagine that you are writing a program that…”
The time between the phone ringing and me having to be on the ball and accurate about technical stuff was maybe ten seconds.
That interview was one question, and it was a beauty. I was asked to write code to solve (transformed version of famous-definitely-well-studied-computer-science-problem). I recognised the problem, which is good because it meant I didn’t try and spend my time deriving it, but I was very aware of the size of the required solution.
Being honest, if I’d solved it several days before and had a printout of my code next to me, then I might have been able to type it in without error in the 45 minutes available. But building it from scratch, away from my IDE, books, and internet, was never going to happen, and certainly having to keep up chat with the interviewer reduces the amount of code I can write.
I stuck with it, made every second work for me. I talked the interviewer though the asymptotic complexity, derived some stuff (correctly) on the fly about how this particularly instance would have a better time-complexity than the general case, and made her laugh (with humour, rather than pity) at least once.
We ran out of time with the code about half done.
So I was somewhat surprised when I was invited back in again. I can only presume that I had found an error in their hiring process, which I’d be pretty proud of in any case.
Second interview was the same, and yet very different. This guy did want to chat (he seemed a genuinely nice guy who was having fun in the interview and that was really great energy to feed off. In walked me through my CV a little, asked the classic ‘so tell me about your favourite programming language’ type questions and then asked me a question.
…and annoyingly this one was easy. Genuinely quite easy – the sort of thing that you’d give to a second/third year undergrad Computer Science student. I got it right, and for the right reasons, and had an enjoyable to chat.
The problem was, of course, that the level Google was is for people who produce simple code without blinking, flawlessly and instantly . I wasn’t quite up to that standard – I corrected myself and I hesitated in a couple of places and they were all the places where a coder’s coder wouldn’t.
Got the rejection by phone next day. 🙁