Two years ago I interviewed with Google, Zillow, and Facebook for a software manager role. I went to Google and have since been singing its praises to friends and former co-workers (largely comprising poor souls who still remember working at pre-NYT-article Amazon). Lots of them asked me what the interview was like and many sought out my advice as they were preparing for their own interviews. So this is the article where I share with everyone what I did and hope it helps out a few folks.
Step one: read Steve Yegge’s blog post
Steve worked at Amazon many years ago when I started there. He wrote guides on reviewing resumes, conducting phone screens, and interviewing. I enjoyed every one. I immediately read this post after hearing about it in 2008 even though I had no intentions of interviewing at Google, or any where else for that matter.
When I did begin my interviewing prep work in 2015 I went back and reread it multiple times. It’s just as relevant now as it was when he wrote it. (Is it sad that interviewing at tech companies hasn’t changed much in 10 years?)
Step two: rented the The Algorithm Design Manual
Steve recommended this in his post. It was gold. I rented the eTextbook and read it on the Amazon Fire tablet they gave me to test new software updates before released broadly. It’s $21 for a month. Best investment in my future ever!
It reminded me of the basics about data structures, but more importantly it goes over common problem types and which approaches are best. I was super confident (and hopefully looked super smart) when I told an interviewer that the question asked was a knapsack problem and proceeded to tell him how to solve it.
Step three: coded questions from Career Cup without an IDE
I found a handful of good sites with real questions asked by tech companies. Of course I looked at ones asked by Google, but questions from any tech company were equally useful. I gravitated towards problems that I knew would have boundary cases that are easy to mess up. And don’t look at the answers! I learned from seeing other people’s answers after thinking about the problem independently first. I wrote Java code first on paper with a pencil to simulate the real experience of coding on a whiteboard. That made me aware of common mistakes I’d make organizing my code when doing it in an interview. Later I switched to Emacs because it was faster to write and easier to test.
Nothing fancy and easy to replicate. Those were the most important things I did specific to interviewing for a tech position. Ok, to be fair, getting a CS degree and working over a decade at Amazon helped the most, but if you only have a few months to prepare, then this is what I recommend.
Also check out my Interviewing as an Introvert blog post to hear some of my general advice.
Also published on LinkedIn: https://www.linkedin.com/pulse/how-i-prepared-interview-google-kyle-freeman