Practice
Data Structures and Algorithms
Machine Coding Round (LLD)
System Design & Architecture (HLD)
Frontend UI Machine Coding
Resources
Career Advice and Roadmaps
Data Structures and Algorithms
Machine Coding Round (LLD)
System Design & Architecture (HLD)
Backend Development
Frontend Development
Project Ideas for Software Developers
Core Computer Science
Companies
SDE Jobs & Internships
Interview Questions
Compare Companies
IDE
Online IDE
Collaborative IDE

Google System Design Interview Preparation Doc | Complete Guide

Gaurav Chandak
Gaurav Chandak
Disclaimer: This article was written few years ago and may no longer be relevant as software engineering has changed a lot in the last few years. This is what may be more relevant now: Future of Software Engineering - Gaurav Chandak

I've written this article based on Google's tips and advice on how to best prepare for their 'System Design Interview'.

For general system design interview tips and resources, check out our 'System Design' section.

The "Google System Design Interview Preparation Doc" talks about the different aspects that Google looks for in a System Design Interview. These aspects are:

  • Communication
  • Designing to Scale
  • Concrete and Quantitative Solutions
  • Trade-offs and Compromises
  • Best Practices

Note that you will not be coding in this interview. There will also be significant time constraints. You are expected to gather requirements and to develop an initial solution in the first 20 minutes. So please be sure to use your time wisely.

Communication

Communication is incredibly important in the work that Googlers do. It is key to how they approach developing and building their products. In your interview, it is important to demonstrate those qualities.

Understanding a problem and designing a solution are both valuable parts of the interview process. You need to think out loud. The interviewer does not just want to see the final answer. They would want to understand how you arrived at it.

Google is a collaborative workplace where projects are planned and executed by teams. Those teams have a mission to work together to solve big, often ambiguous problems. And those problems can have multiple valid solutions. So, tell the interviewer how you plan to solve those problems and be sure to ask questions.

Note that they are not looking for one specific answer. The problem you will solve during your interview will be deliberately underspecified. Those questions are left open-ended because real problems require you to dig deeper. You will need to ask clarifying questions.

Designing to Scale

At Google, engineers deal with planet-scale data and compute systems every day. Their applications serve a global user base. Simply identifying a solution is just the beginning.

A solution must be scalable enough to reach a wide audience, reliable enough to meet the users' needs, and still, make efficient use of the resources.

During this interview, you will be assessed on your ability to design systems that scale.

Questions you may want to keep in mind include:

  • How can we tell that the system is working?
  • Is there a bottleneck in the design?
  • If there are multiple components, what are the APIs and how do they work together?
  • How can we provide great service to users all around the planet?

Things you might expect:

  • Long gone are the days when everything you design could easily fit onto a single machine. You may be given a large data set to work with. You need to explain how it can be sharded among multiple worker machines.
  • You may be presented with a request which can be answered by any one of a pool of machines and you need to identify the fastest machine and discard the rest.
  • You should also be prepared to discuss system component properties such as latency, throughput, and storage. The interviewer would want to see numeric estimates for these properties, such as how many requests per second the system can handle. Also, be prepared to provide a clear justification of how the design backs up these numbers.

Concrete and Quantitative Solutions

Our systems impact users across the globe. Google needs engineers who can solve real-world problems concretely and quantitatively. So when designing, you should always consider reality and the laws of physics.

You should also have a general idea of the costs and latencies of various operations

such as:

  • Read from Disk
  • Read from Memory
  • Local Area Network (LAN) round-trip
  • Cross-Continental Network

During your interview, you will have access to a whiteboard. You can use this to estimate the resources needed to run your system or to diagram your proposed design.

You should know industry solution patterns like:

  • Sharding Data
  • Replication Types
  • Write-ahead Logging
  • Separating Data and Metadata Storage
  • Basic Kinds of Load Distribution

Trade-offs and Compromises

As a systems designer at Google, you will have to make trade-offs and compromises.

The interviewer may ask you to identify systematic shortcomings and describe how the system responds to various failures. You are expected to lay out the trade-offs and compromises you made and explain your reasoning.

Example: Do you store data on a rotating disk and pay less money for the storage at the cost of increased latency? Or do you put the data on a flash drive where you’re able to retrieve it quickly but pay more money?

These are questions that could come up during your interview.

Google looks for systems designers that can consider multiple solutions, commit to one, and then iterate on it.

Best Practices

Now that you have the focus areas, here are some overall best practices to keep in mind for your actual interview day.

  • Explain: The interviewer wants to understand how you think, so it is important to explain your thought process during the interview. They are not only evaluating your technical ability but also how you solve problems.
  • Clarify: Many questions will be deliberately open-ended to get an idea of how you solve technical problems. You are encouraged to ask for clarification.
  • Improve: The first solution may not be the best one. So, once you’ve come up with an answer to a question, think about ways to improve upon it and let your interviewer know what you are thinking.
  • Practice: Practice on paper or a whiteboard. During the interview, you may not have access to resources you normally use.

---

I hope that you found this article to be extremely insightful. If you need any help in System Design then do ping me on Whatsapp () with your query.

Gaurav Chandak
Gaurav Chandak
Gaurav is the co-founder of workat.tech and has previously worked at Flipkart and Microsoft. He intends to actively contribute to the future of education through workat.tech.
Related Content
What are the best resources for System Design Interview? - Part I | HLD
Machine Coding Round Practice Questions for Interviews | Flipkart, Uber, Swiggy, Udaan, Gojek
System Design - Introduction | System Design Primer | Beginners
System Design - Scaling the application | System Design Primer
SQL vs NoSQL: Should we use SQL or NoSQL? | Databases
System Design - Scaling the database | System Design Primer
Best Engineering Blogs/Articles/Videos for System Design
System Design Interview Template | Ace the System Design Interview
SDE Bootcamp - Become a software engineer at a product-based company
Practice System Design
Learning Resources
Interview Prep Resources
Blog
  • Career Advice and Roadmaps
  • Data Structures & Algorithms
  • Machine Coding Round (LLD)
  • System Design & Architecture
  • Backend Development
  • Frontend Development
  • Awesome Project Ideas
  • Core Computer Science
Practice Questions
  • Machine Coding (LLD) Questions
  • System Design (HLD) Questions
  • Topic-wise DSA Questions
  • Company-wise DSA Questions
  • DSA Sheets (Curated Lists)
  • JavaScript Interview Questions
  • Frontend UI Machine Coding Questions
Online Compilers (IDE)
  • Online Java Compiler
  • Online C++ Compiler
  • Online C Compiler
  • Online Python Compiler
  • Online JavaScript Compiler
Topic-wise Problems
  • Dynamic Programming Interview Questions
  • Linked List Interview Questions
  • Graph Interview Questions
  • Backtracking Interview Questions
  • Arrays Interview Questions
  • Trees Interview Questions
Company-wise Problems
  • Amazon Interview Questions
  • Microsoft Interview Questions
  • Google Interview Questions
  • Flipkart Interview Questions
  • Adobe Interview Questions
  • Facebook Interview Questions
DSA Sheets (Curated Lists)
  • Top Interview Questions
  • FAANG Interview Questions
  • Most Asked Interview Questions
  • 6 month DSA Practice Sheet
  • 3 month DSA Practice Sheet
  • Last minute DSA Practice Sheet