Preparing for the Google SWE Interview

Jinal
Jinal Parikh
Published in
7 min readMay 8, 2021

Recently, I interviewed for a few top companies like Amazon, LinkedIn, Adobe, Google- and finally accepted an offer from Google India. Interview experiences and personalized preparation plans was something that had helped me while preparing, hence I decided to share my journey.

This interview guide contains notes that apply to any product based company and specifics for my Google interview process.

Before you start

Preparing for interviews is often a stressful, exciting and rewarding experience. There are two basic things — Preparing the mind and then technical skills.
Before starting, a lot of people feel overwhelmed, doubting whether they’ll be able to crack the interviews or if they deserve it.
First thing- let go of these doubts. Tell yourself everyday, “I am good enough to work at XYZ”. Moreover, believe it when you say it!
Remember it’s just a job and passing an interview doesn’t determine your worth. But I also believe that if you want to achieve something, then believe in it and give your best. Hence, remaining confident throughout the process is very important.

Irrespective of the outcome, consider the preparation as a learning process. Time and efforts invested never goes waste. For me, seeing how my DSA skills got improved in 4–5 months was amazing! That was my takeaway.

The Plan

Next step is to setup timelines for the prep — timelines of how much and what all you’ll practice, when you’ll start applying, where you’ll apply, etc.
Be a bit organized. I’ve seen some people fail because of haphazard preparation (giving interviews without being enough prepared).

Decide which companies you want to interview for. Understand its process in detail by reading articles, talking to employees/friends working there- this will help in creating detailed plan. I only interviewed with the companies I wanted to work for, which is risky. Another strategy is to start interviewing from your lowest priority companies to the dream ones so that you get enough practice, confidence and multiple offers too!

I prepared a timeline of 5 months- like I drew out a list something like this-

  • Start in July- read important data structure and algorithms (quick review) for a week
  • Practice on leetcode (detailed list of which tracks and how many)
  • Start applying in October- start from easier ones and startups

Creating a plan also depends on how much you already know. A fresh college grad might require much lesser time whereas an experienced person who has lost touch might require much more. Personalize according to your knowledge and grasp. Also, some people apply and then prepare because it enforces a timeline. You can choose what works best for you.
Disclaimer: I was already working full-time plus preparing, so I managed to take out ~5 hours on weekdays — this also affects the timeline.

Programming Preparation

Let’s discuss the important things first:

  • Timing: Standard Google/Facebook interview involves 2 medium/1 hard coding questions in 45 min time frame. The time limit is pretty strict (none of mine lasted longer). So, your thinking and coding speed should be such that each question takes around ~15–20 minutes, along with communication.
    This can be acquired through practice. I used a timer plugin (LeetPlug), which made me time conscious and was a big contributor.
  • Whiteboard coding: I’m sure everyone is aware of this practice. For virtual interviews, you’re supposed to code on a Google Doc. So whichever language you choose, remember the syntax well.
    In my case, I was already well versed with Java syntax and used to code on notepad initially for few days. Again, practicing is the key.
  • Talk while coding: While giving the interview, it’s not just about coding in a black box. What you’re suggesting also needs to be agreed by the interviewer. Each person has a different style of coding, so what you’re writing needs to be explained.
    After giving my phone screen, my communication skills were tagged baseline- to which I was surprised. HR advised that it is expected to explain your code while writing. I practiced this by giving mocks to a friend. Since mocks are limited, I also started talking to myself while coding as if I were explaining to someone 😛

Where and What I used to practice

I used Leetcode throughout. I would advise you to buy a premium subscription since the company specific tracks, mock interviews are worth it.
I started with Google tagged questions (sorted by frequency), and my initial target was ~100 — where I solved a mix of 15% easy, 80% medium and rest hard. This was before I started applying. In total, I solved around ~300 problems on Leetcode.
For onsite, I solved problems topic-wise — picking up 4–5 from each topic (this depends on the time you have), some from the Google track and gave mocks (I had significant breaks between onsite rounds). Towards the end, I also participated in Weekly Leetcode contests, its quite helpful.

Also, InterviewBit was helpful while practicing topic-wise. I used it as a reference to make sure I did some problems from each bucket.
What I observed after my prep was that, even though I focused on Google tagged problems, other company’s interviews seemed easy/doable to me without any special prep.

General tips

  • DO NOT get demotivated when you start and can’t solve even medium problems. This happened with me too, but it’s all a matter of time and practice. Write notes (or make mental notes) when you can’t solve something. I made a lot of notes summarizing what I learnt from each problem so that it gets registered in the brain.
  • If you couldn’t solve a problem, mark it (leetcode feature)so that you can revisit it later. Doing it multiple times helps a lot. The key is not to memorize, but start observing which pattern the question falls into.
  • Observing patterns in the question is a super important skill needed here. Patterns means identifying the category the problem falls into.
    For eg: given a start word and a list of valid words in dictionary, and a target word — find if there exists valid transformation sequence to convert start word into target word by changing a letter at a time.
    This one seems like a string problem, but it can be solved by BFS, considering each letter as node and letter transformation as edges.
    Solving multiple problems of a type helped me to identify patterns instantly!
  • Go through this list of patterns: Important links from all over Leetcode. It’s by far the best source of knowledge and problems to solve for your preparation. I did this for sliding window patterns, and this for DP.
  • Even after doing 100 problems, I didn’t feel confident enough to apply anywhere. Still I applied, and kept preparing parallelly. From my phone screening round, I received a detailed feedback on my coding, timing and communication. So for later rounds, I built up on them by giving max 30 mins to medium problems (speed was an issue), giving mocks to friends and leetcode mocks.
  • Distribution of questions I practiced was mostly medium level, and very few hard. But then my first two onsite rounds had hard questions, so I started focusing heavily on hard level thereafter.
  • I felt quite demotivated after my first two rounds, but it also helped me miraculously — my fear of giving interviews vanished! I’d seen my worst; I became comfortable with the process.
    I started making conscious efforts by doing meditation, and having full belief that I’ll be able to crack it. Trust yourself.
  • Overcome your interview fear by giving multiple mocks and working on feedbacks. Pramp is a good site for peer interviews. Time management is important and it can be learnt with enough practice. Communication skills are as important as technical skills.

That was all for DSA, which is the most important skill required in Google interviews. The other part is System Design.

System Design preparation

Google takes 1 round of system design for senior experienced positions. In my case, I had 4 rounds of DSA and no System design round- so I focused mostly on DSA. Barring Google, all other companies had 1/2 rounds of System Design.

System Design round is a very open ended one, so there’s no fixed set of practice here. But a deep knowledge of the core concepts, reading example systems and giving mocks to friends helps a lot.

I gave around 2 weeks of prep time for this. These are the resources I used:

Google Interview Experience

You can read about the detailed interview experience here (keeping in mind the length of this post).

Application Process

The application process becomes important since I kept waiting for 2-3 months after applying and realized a few things:

  • Referrals work better. I tried applying to companies from LinkedIn and didn’t manage to get a call, whereas referrals landed me interview calls in 2 days!
  • Sometimes, reaching out to recruiters on LinkedIn and talking about what you’re looking for helps too. I managed to find few good recruiters who redirected my profile to right audience in the company.
  • To find referrals, in case you don’t know someone directly in target company — type the company, search for People in LinkedIn. And try to look for common links with people like college alumni, past company, friends of friends, etc. Reach out to them, explain your interest and some might be willing to give referral.

Conclusion

So, give your best with a clear vision of what you want from the search(it’s not the brand, it’s the experience and learning you’ll get from there)!
Please remember that there are a lot of factors that ultimately influence the final outcome of an interview; so don’t make “getting the FAANG offer” your ultimate goal.

Luck is what happens when preparation meets opportunity.

Getting an offer is not the end of the journey. It might be possible that even after you reach your target company and you work there for some years, you might look for new challenges.

Regardless of the outcome, enjoy the experience!
Good luck and feel free to contact me via LinkedIn.

--

--

Jinal
Jinal Parikh

SWE @ Google | Google WTM Scholar | Ex Goldman Sachs | Ex Morgan Stanley | loves to paint