Preparing for the Google Coding Interview

Once it has been decided we are bringing you in for interviews, your interview performance is much more critical than your educational/work background. Based on interviews, we regularly hire engineers with no college degree and only a couple years of experience at a higher level than engineers with many years of experience and a master's degree in Computer Science.

Important Note for Industry Hires

Your projects and work experience may develop your coding skills in various programming languages and object-oriented design. However, it will not be enough to be proficient in data structures and algorithms. Coding interviews are a learned skill. It requires a lot of practice and studying outside of your job responsibilities.

Prerequisites

These prerequisites are for Java interviewees only. Move onto the next section if you're prepping with a different programming language. If you have not decided on a programming language yet, I strongly recommend Java. The most popular prep resources are written in Java.

Practice

Mock Interviews

Practicing with mock interviews is mandatory. I cannot stress this enough. LeetCode is incredible but the actual coding portion of an interview should only be about 15 minutes of a 45-minute Google interview. You're spending a lot of time talking through potential solutions and trade-offs before you start coding. After you're done coding, you need to walk us through test cases. You will not pass a difficult Google-level coding interview without live interview practice and feedback. If you are an experienced software engineer and a top performer at your current employer:

  • At 20+ mock interviews, you have a very high chance of getting hired at L4+. At L5+, you are also required to succeed at System Design interviews.
  • At 10- mock interviews, you're relying on a lot of luck. Even if you pass, you will most likely get hired at L-1.

Mock interview resources:

  • Technical Mock Interview
    • This is a paid service with high quality interviewers from Google, Facebook, and Amazon with detailed verbal/written feedback and personalized coaching. I strongly recommend doing at least 10 mocks through here.
  • interviewing.io
    • This is a free service. It is a hiring platform where it will connect you with potential employers if you pass enough interviews. The quality of feedback is poor in comparison to Technical Mock Interview.
  • pramp.com
    • This is a free service. It is a peer-to-peer mock interview platform. Another great resource if you're trying to do as many mocks as possible.
  • Friends and colleagues
    • Find other engineers to practice with. Start an interview club with your friends. Meet weekly to go through videos and coding exercises together.
  • Mentor
    • Find a mentor. Reach out to other software engineers you respect. Ask them to meet with you regularly for mentoring sessions.

Recommended Order of Study

Big O

  • For every algorithm, understand its time and space complexity (Big O) characteristics.
  • Chapter VI: Big O - Cracking the Coding Interview
    • A lot of coding questions can be solved with various algorithms. Talking through the Big O of each is essential in trade-off discussions.

Binary Search

Sorting

Arrays

Linked Lists

Binary Trees

More Binary Trees

Heaps

LeetCode - Easy

Many LeetCode Medium and Difficult problems are advanced versions of Easy problems. Practicing and understanding a large number of Easy problems builds a strong foundation to set you up for success with Medium/Hard problems. Also, going through a high volume of Easy problems will increase your coding speed.

Graphs

You should expect to get asked a couple graph questions at Google. Don't bother interviewing if you haven't mastered and memorized graph algorithms. Also, get comfortable in recognizing when a problem requires a graph solution instead of a binary tree solution (and vice versa).

More Graphs

  • Skip all of Week 3.
  • Study Week 4: Tries section only.
  • Skip all of Week 5 and Week 6.

Dynamic Programming

Unless you're interviewing for an entry-level L3 position, you should expect to get asked a couple dynamic programming questions at Google. These require a lot of practice to get down.

More Dynamic Programming

LeetCode - Google Interview

This section is absolutely required. Do not skip any of these problems.

Resources