TL;DR You can either try to get lucky and fail N times or prepare properly and breeze through the interview. I interviewed at Google 4 times, 3 times I didn’t prepare properly and got rejected, 4th time I prepared 4 months in advance 20 hr/week and I passed the interview.
Failure is an opportunity to improve. I interviewed at Google 4 times.
1st for SWE intern (2011) → We were told at my university there would be internship opportunities about 2 weeks ahead of time, so there was little to no time to prepare and I didn’t even get past the phone interviews.
2nd for SWE full-time (2012) → I prepared for about 1 month by using an academics CS book and solved many problems, but I didn’t use a reasonable study plan and I studied using a programming language different to the one I used for the interviews, again I didn’t get past the phone interviews.
3rd for SRE full-time (2013) → Overall bad idea, SRE requires deep knowledge about OS internals. I wasn’t aware of any of the very specific OS internals concepts they asked during the phone interviews.
<skipped 2014> → I was a bit disappointed by the whole thing, so I skipped interviewing this year.
4th for SETI full-time (2015) → I was living in Northern Virginia and I got sick of the weather and decided enough is enough, I would do everything in my power to pass every interview, nothing would be left to chance.
- I developed a study plan and used the “Cracking the Coding Interviews” book as a source for problems to solve.
- I gave myself 4 months to prepare.
- Studied 20 hr/week (apart from my full-time job as a Software Developer)
- I studied by practicing solving problems in an environment the most similar possible to the actual interviews.
- I would time myself.
- I used a whiteboard.
- I talked while solving the problems.
- I was also interviewing candidates at the place I worked and “stole” the best candidate’s interviewing techniques.
Phone Interviews
- In the beginning, I was nervous but sure that my preparation was very good.
- The phone interviews were a breeze because I had practiced everything over a hundred times already.
Onsite Interviews
- There were 5 onsite interviews.
- I did make an important mistake, I arrived at 10 pm to Mountain View, CA and couldn’t sleep much before the interview, I only slept about 5–6 hours. Pro-tip: Arrive in the afternoon prior to the day of your interview, do some light exercise, settle your nerves and get a good night’s sleep!
- During the interviews, I made sure to be only slightly caffeinated at all times (1 cup of strong coffee before interviews start, 1 cup after lunch Pro-tip: don’t eat too much food during lunch, or you’ll be sleepy).
- All my preparation paid off, I had a methodical approach to all of my interviews, I went through the problems like a machine and got them all down.
- There was one exception, however, my last interview was very strange, the interviewer did not focus on a coding problem at all, he asked me mostly about my previous work.
- I probably talked about my previous work for 25 minutes
- Then he asked a ‘coding’ question where the answer was a single return statement, to this day I’m not even sure I passed his interview since while I did produce a return statement that worked, it wasn’t the most efficient (with the least conditional statements).
Moral of The Story: Failing to Prepare is Preparing to Fail
Preparation, preparation, preparation. Practice solving problems in a similar environment to that of the real thing, time yourself, talk while you solve the problems, use a whiteboard, and make note of the skills you need to improve and work on those skills.
If you’ve read this far, it means you’re probably serious about interviewing at Google, my github repo may help you study. It has automated tests for quite a few of the book’s problems.