Ace the Amazon, Google, Facebook, and any Big N Interview Every Time — A Practical Guide

While more preparation is always better, what’s more important is the quality of preparation. After reading this article, you can rest assured that you will have greatly improved your chances to clear these interviews.

Sandeep Namburi
11 min readMar 21, 2020
Photo by Studio Republic on Unsplash

No matter what anyone says, technical interviews are rough. They’re blood, sweat, and tears even for the average ivy-league dropout. It can feel daunting to even start your preparation especially with the virtually unlimited questions companies have at their disposal. However, if you are intrigued by the tech-culture and many of the perks — including the ability to work remotely, competitive stock grants, central locations, and among others — that these big tech companies have, then maybe it’s worth throwing your hat in the ring for the next few months. My aim in this article is to help you plan your preparation before your next big interview. Quality over quantity matters when you are studying.

From having participating in over 15 technical interviews with many top-tiered tech companies, mentoring college students on their preparation strategies, and even conducting technical interviews, here is my take:

Put Yourself in Preparation Mode

There are three main categories for preparation: data structures, algorithms, and system design. Spend a week going through simple coding challenges on Leetcode, HackerRank, and InterviewBit to familiarize yourself with the expectations of these coding interviews. I personally started with HackerRank as it was more beginner friendly. Consequently, stick with a consistent daily schedule to prepare for these interviews. I would say 2–4 hours depending on your school year, current familiarity with coding interviews, and time before your interview. Don’t wait to receive an interview before you start preparing. This is how 95% of candidates fail. Through the power of networking outlined in my previous article here, you will attain interviews — companies are constantly looking for self-motivated individuals.

Next, I recommend buying Cracking the Coding Interview (CTCI) paperback. This is a book that not only covers the primary data structures and algorithm topics but also has a number of excellent problems and solutions in each category.

Moreover, consider learning Python to solve these challenges. I say this because it’s highly readable and much easier to write on a whiteboard. Here is a comparison between a C++ and Python code snippet to sort an array in descending order:

C++:

#include <bits/stdc++.h>
using namespace std;
int main() {
int arr[] = {1,10,0,4,5};
int n = size(arr)/sizeof(arr[0]);
sort(arr, arr + n, greater<int>());
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
return 0;
}

Python:

a = [1,2,4,5,1000]
a.sort(reverse=True)
print a

Next, you need to be able to understand and implement common data structures like the back of your hand. You then need to be able to design and implement various algorithms based on the knowledge of data structures.

Below is a list of resources to get started with data structures. I would first start off with your school’s curriculum, if applicable, and then use these resources as a supplement. After you are proficient with the concepts of Big O, strings, arrays, and ArrayLists, you can move on to tackling the practice problems. You should be able to start tackling problems within a week.

Focus on being perfecting your knowledge on strings, arrays, lists, and HashMaps before you move on to more complicated programming concepts like recursion, trees, graphs, stacks, queues, and dynamic programming.

Photo by Safar Safarov on Unsplash

The Recruitment Structure

The First Email

Congrats future industry leader! You’ve made it to the first step. Your application looks like a fit and a member from the recruitment team has reached out to you to schedule your first round. Landing an interview by itself is a very selective process and you should be enthralled your portfolio stood out.

Phone Screen/Coding Challenge

The problems that you receive here are ones that can be solved in a reasonable amount of time, e.g., thirty to forty-five minutes, and are typically relatively basic questions that require a good understanding of data structures and algorithms.

The phone screen involves writing code via a shared document between you and a technical interviewer. However, you may also receive an email from the recruiter containing a link to a set of self-paced coding challenges. For instance, Facebook usually starts out hires with a technical phone screening while Amazon and Goldman Sachs will send you on online coding assessment to complete on your own. Once you click the link to begin your challenge, you must finish all of them within an allocated time. Often times, companies will automatically disqualify you if your code doesn’t compile or if you are unable to finish exercises in time.

The first round is usually heavy on data structures and algorithms. However, if you were applying for a specific web developer position, you might be tasked with making use of some JavaScript code to perform some simple GET/POST requests. However, all candidates should know how to proficiently code in 1–2 languages, parse JSON, execute basic SQL commands, and interface with simple web APIs.

When you complete the coding assessment or phone screen, you will be contacted by the recruiter within a few days, though sometimes it might take up to two months. If you succeeded in the assessment, then you would proceed to either a second round or on-site interview.

Photo by Christina @ wocintechchat.com on Unsplash

On-Site Interview

If you succeed at the phone screen and/or coding challenge, the next step would be to bring you on-site virtually.

This is typically structured as one full day of interviews, consisting of about three to five separate interviews. Each of these interviews takes roughly 45 minutes to an hour. You may also be interviewing with different teams to determine the best fit for your placement.

The interviews themselves will most likely be the standard white-boarding interview style, where you will be given a specific problem and expected to work through it with minimal guidance from your interviewer. Depending on the role that you applied for, the interviews themselves may focus on technologies or concepts that are particularly relevant to that role.

Each on-site interview is conducted independently, and the feedback from one will not influence your performance on the subsequent interview. Evidently, if you feel like you performed poorly on the first on-site, the feedback from the first interviewer will not carry over into the second interview.

Moreover, Amazon and Google tend to sneak in at least one interview in this mix that is much harder than the others. This so-called bar raiser interview is meant to keep you on your toes and to ensure that the candidates handle difficult problems and high-pressure situations in a positive manner. If any of the interviews appeared much harder than the others, it is likely that this was the bar-raiser round.

Post Interview

Once all of the interviews have concluded, each of the interviewers will collectively discuss their feedback across various levels of competency. Most companies strive to give you a decision within a week. If you follow the advice from this article, then you will be a hire. The recruiter will reach out to you with further information on the compensation package, relocation stipends, start date(s), contract, etc.

Preparing for Your Interview

Consistency is the key virtue to embody when preparing for these interviews. We will cover a number of recommended strategies for how to be consistent and effective during your preparation.

1.Practice. Practice. Practice. Eat the elephant one bite at a time. Start off by solving only the questions with the data structures you are comfortable with. Leetcode.com is the most popular platform for coding interview questions. You can filter questions by strings or HashMaps, for example. Treat every question like an actual interview. There are many websites out there for you to practice coding interviews questions — Leetcode, HackerRank, InterviewBit, and Firecode.io just to name a few. When solving coding interview problems, it’s important to focus on a few criteria:

  • Always design your solution before you start coding. For instance, if you have a palindrome question, think about the recursive loop you will build and how you would increment and decrement indices along the string.
  • Use a timer to see how long it takes for you to come up with a solution. Your goal should be able to come up with optimal solutions in 15–20 minutes or less for easy questions and 30–35 minutes for harder questions.
  • Interviews are measured by communication of problem-domain, simplicity of code, and compilation. Keep a note of exactly what approach(es) you used to solve the problem.
  • Always try to create the most optimal solution solution. Don’t add two for-loop statements in your code when you can use a HashMap to get the job done faster. You will not pass the interview with a brute-force approach. If you’re using the Leetcode platform to solve questions, aim to write code that is 90% faster than other submissions.
  • Make sure to look at the solutions even if you pass all test cases. There could always be a more efficient solution.
  • If you are stuck, rather than looking at the code solutions, look at YouTube solutions. There are many YouTube channels that break down the code for these problems. You will have a much better fundamental understanding of exactly how these algorithms work with YouTube videos.
  • Work to master. Once you are able to solve easy problems involving strings, for example, move on to more difficult string problems.

Tip: When I started practicing these interview questions, I had absolutely no idea how to approach the problem during many scenarios. If you can’t figure out the solution within a hour, go ahead and look at the YouTube explanation of the solution. After practicing your first 25–50 questions, depending on your grasp, you will start to notice algorithmic patterns. You will start to notice certain strategies that can be used to solve multiple questions.

2.Plan. Plan. Plan. You need to set up a schedule and really stick to it. I would recommend spending about 2 hours a day and 6 days a week at minimum! A lot of current engineers at Google have practiced 40+ hours a week to prepare for their interviews.

I would start the day by doing one easy question to warm up and the proceed to do 1–2 medium questions. You can also follow this excellent Reddit thread to see visualize how another candidate successfully gained competency to crack interviews.

Tip: Top tech companies companies usually give only medium questions and sometimes hard questions to more experienced candidates.

  • Do not study on your bed or where you usually relax. Interview questions are not fact-based. They are thought-provoking and require complete focus to the subject at hand.
  • Track progress. Metrics always help. Make sure to at least track the number of completed problems, time you are spending, and types of strategies you are using (i.e. two-pointer technique, sliding window, etc.).
  • Study consistently. If you’ve set aside 15 hours per week, make sure to study for no less than 15 hours that week.
  • Use Pramp.com and Leetcode.com/interview/ to practice in a mock interview setting.

If you devote 2–3 hours a day for 6 weeks to interview preparation, you’re going to solve about 60–90 questions total. That’s pretty serious progress, and 6 weeks will go by in a heartbeat! Progressively dial up your time to prep as you get into the rhythm. Most importantly, don’t cram unless absolutely needed.

3.Clarify. Clarify. Clarify. Experienced engineers make sure that they have the right resources and understand the requirements before diving into a solution. During interviews, it’s very common for interviewers to leave crucial elements out of the question in an attempt that you would point it out. They would be assessing this ability as a part of your interview. During the planning and implementation phase of your solution, always practice the following:

  1. Always ask clarifying questions before you start coding. Think about how you can make the question sound more detailed or succinct. For instance, if there is a list of values in an array, would pre-sorting it speed up your algorithm?
  2. Think about edge cases before compilation.
  3. Most importantly, never make any assumptions when you start coding. This is a very important skill. List any questions you would potentially ask the interviewer as a comment in your code. For instance, think about what parameters are needed, whether data is initially sorted, or whether the solution requires a permutation rather than a combination.

4.Network. Network. Network. These Big N and unicorn companies are much more competitive. Networking is a crucial aspect to getting selected for an interview with these companies. Click here to read a detailed article I wrote on how to land an interview from top tech companies.

5.Follow. Follow. Follow. Create and stick to a plan to help you keep track of progress.

Here was my 6-week plan to prepare for these interviews:

Here’s a way to structure your preparation. Make sure to always review completed problems and practice new ones from past topics.

Week 1: Arrays, ArrayLists, and Strings

Arrays and Strings are like the bread and butter of coding problems. While they may seem like easy data structures to implement, they can get quite complex that even the world’s brightest competitive programmers have difficulties with.

5 Highly Suggested Review Problems (in order of difficulty):

Week 2–4: Binary Trees and Linked Lists

Companies love binary trees. They have billions of use cases in software. These problems address runtime challenges and code efficiency. Learn to implement and apply BFS and DFS into your solutions.

5 Highly Suggested Review Problems (in order of difficulty):

Week 5–6: Dynamic Programming & Greedy Algorithms | Focusing on Optimizations

These questions test your ability to critically think and understand the time/space tradeoff in code. I highly recommend these resources here: Dynamic Programming for Non-Geniuses and Greedy Algorithm and Dynamic Programming.

5 Highly Suggested Review Problems (in order of difficulty):

Week 6+: Graphs and Review

At this point, you’ve covered about 80% of topics. It’s important for you to keep practicing, review harder questions, and go back to redoing any difficult problems you stumbled upon. Now, you can start tackling my favorite topic: system design. Click here to view an excellent introductory video on the introduction to architecture and system design interviews.

Additional Resources

There are hundreds of resources on the web for you to adequately practice crucial technical concepts. Here are a few key resources where I’ve pulled information from in this article:

--

--

Sandeep Namburi

A full-time basketball player, graphic designer, blogger, and public speaker — during my spare time, I’m a Cloud Architect @ Amazon