Interviewing for a new position is never easy.

Algorithms & Data Structures are usually a pain for candidates, but so can System Design be.

Let me give you 7 steps that will help you to improve your experience in system design interviews.

🧵👇
1) Clarify The Requirements

Ask questions, and a lot of them!

Try to find out what exactly the interviewer expects from you.

Try to narrow it down as far as possible to the exact scope of the problem.

Even if the question is to (re)design an existing system, ask!
2) Define System Interfaces

Define all APIs that the system to design will need.

Explain what each API is for as detailed as possible, so the interviewer can jump in and tell you if you got a requirement wrong.

If you got something wrong, no problem, adjust accordingly.
3) Estimate The Scale Of The System

Give estimates to the scale of the system and communicate them clearly.

Once again, if you got a requirement wrong, the interviewer can tell you, and you can adjust.

If not, the interviewer can better understand your design decisions.
4) Define The Data Model

Define the data model of the system, and define data flows.

Ask how detailed this step should be, and if your interviewer requires it at all.

If it's required, also explain and maybe visualize how data flows between the components of the system.
5) Draw A High-Level Design

Most systems have only a few very important components, that are the core of the system.

Try to identify them and draw boxes for the five most important ones, and visualize their interactions.
6) Design Components In Detail

Explicitly ask if you should focus on specific components for this step.

If not, choose the three most important ones and visualize/explain how they should work and what they should do in detail.

A good interviewer will guide you.
7) Explicitly State Bottlenecks

Every system and every design has its limits.

If there are bottlenecks in your system (and there will always be), state them explicitly.

Give detailed explanations about what affects them, and how you could mitigate them.
You can follow @oliverjumpertz.
Tip: mention @twtextapp on a Twitter thread with the keyword “unroll” to get a link to it.

Latest Threads Unrolled: