How to Succeed in a System Design Interview - Deepstash
Machine Learning With Google

Learn more about computerscience with this collection

Understanding machine learning models

Improving data analysis and decision-making

How Google uses logic in machine learning

Machine Learning With Google

Discover 95 similar ideas in

It takes just

14 mins to read

System design questions can often be as general as “How would you design Product X?”

“Oh, you mean what would be the best way to design a product that has had hundreds of software engineers working on it for a decade? Sure, let me answer that in 45 minutes or less!”

13

161 reads

So many companies, so many customs

In the beginning we all get the feeling that System Design is a huge subject to comprehend, which pretty much is true. The secret for this type of intreviews is to understand as much as possible what are the expectations of your recruiter and what will be the structure of the interview.

Being such a vast subject, there are a lot of approaches for this type of interviews. As a matter of fact, I already had 3 of them and each one was different from the rest. By far. And none of them matched with that the online sources were covering. This is why is important to understand their expectations.

15

90 reads

Show this strengths

Prior to presenting the steps you should follow once the interview begins, there are some qualilties that will help you leave a better impresion to the interviewer:

  1. Honesty
  2. Confidence 
  3. Willingness to learn

This 3 strenghts combined shows the interviewer that you have the right mindset and you might be a good fit for the company.

15

79 reads

Step 1 - Understand the goals

Clarify any ambiguity you have at the start of the interview. All your assumptions, speak them out loud and discuss them with your recruiter. Make sure you are on the same page, by asking:

  •  What is the goal of the system?
  • Who are the users of the system? What do they need it for? How are they going to use it?
  • What are the inputs and outputs of the system?

13

68 reads

Step 2 - Establish the scope

Think and discuss what are the main features that you will cover. As you can imagine, describing the whole infrastructure in detail is impossible in 45 minutes. Some questions you might ask are:

  • Do we want to discuss the end-to-end experience or just the API?
  • What clients do we want to support (mobile, web, etc)?
  • Do we require authentication? Analytics? Integrating with existing systems?

13

71 reads

Step 3 — Design for the Right Scale

Make sure that you know the data throughput and the number of users. This way you can create a software solution capable, scalable, without over-optimisations. Some questions to keep in mind during interview:

  • What is the expected read-to-write ratio?
  • How many concurrent requests should we expect?
  • What’s the average expected response time?
  • What’s the limit of the data we allow users to provide?

13

56 reads

Step 4 — Start High-Level, then Drill-Down

Once you have all the information collected from the previous steps, you can start actually designing the system. The best approach for this is to start by sketching all the parts that the solution is made out of. Once you have that done, you can take each part and provide more details, but make sure to not drill-down too much on a single subject. 

13

56 reads

Step 5 — Data Structures and Algorithms (DS&A)

While interviewing, some companies will be oriented more on the architecture part, while others focus more on the DS&A optimisations. Coming back to Step 1, it's important to understand what are the expectations of your interviewer and try to deliver based on them.

Keeping that in mind, try to start with a simple solution, the first one that you manage to come up with. Usually, while explaining out loud your solution, subconsciously, some neural connections are made and you might find optimisations down the line. Having a point to start, you can iterate and improve your solution.

13

41 reads

Step 6 — Tradeoffs

At the end of the day, there is no perfect solution. And this is available for any system, no matter how big the company is. Each solution has their advantages and disadvantages. The important part is to be aware of them and each decision you make should be made taking into account the tradeoffs. Preseting your interviewer the possible drawbacks of your solution shows them that you are aware of the system limitations and that you took them into account.

14

44 reads

Examples of decisions that imply tradeoffs

  • What type of database would you use and why?
  • What caching solutions are out there? Which would you choose and why?
  • What frameworks can we use as infrastructure in your ecosystem of choice?

13

53 reads

CURATED BY

teni

Normal person with peculiar dreams @unkl's protégé @cristianmezei's disciple

CURATOR'S NOTE

Some insights regarding the Design System Interviews. This article covers how to approach an interview of this type.

“

Read & Learn

20x Faster

without
deepstash

with
deepstash

with

deepstash

Access to 200,000+ ideas

—

Access to the mobile app

—

Unlimited idea saving & library

—

—

Unlimited history

—

—

Unlimited listening to ideas

—

—

Downloading & offline access

—

—

Personalized recommendations

—

—

Supercharge your mind with one idea per day

Enter your email and spend 1 minute every day to learn something new.

Email

I agree to receive email updates