The System Design Interview [Part 1]— Starting Tips
Introduction
I’ll be publishing a series of notes to help others prepare for their system design interviews. This first note will introduce the concept of signal area’s and outline some high-level starting tips.
Signal Area’s
Interviewers are generally looking to collect positive and negative signals, in a number of different areas. Typically, these area’s look something like this:
- Problem Exploration
- Back of the Envelope Calculations
- Handling Data
- High-Level Component Definitions
- Design Completeness
- Trade-Offs
- Deep-Dives
In this series I’ll be dedicating a note to each area, alongside some common discussion points, a range of tips, and some verification questions.
The Typical Interview Flow
During an interview the flow between signal area’s usually looks like this:
Note: Signal areas can be addressed and revisited in a variety of orders throughout the interview.
Starting Tips
- Clarify Requirements — Always clarify the requirements at the beginning of the interview. Be sure to ask questions that find the exact scope that the interviewer has in mind.
- Start Simple — Start simple and gradually expand complexity. Focus on deriving an end-to-end design, before narrowing scope and delving into optimizations.
- ELI5 — Present your ideas and design as though you were explaining them to a junior engineer. Make sure the interviewer understands what you’re saying and why.
- Explain Trade-Offs — With each big decision, explain the trade-offs you’re evaluating and the reasoning behind your choices.
- Focus On What’s In Front Of You — Make sure you’re solving the problems in front of you and not flexing irrelevant technical knowledge or buzzwords.
- Be Agile — Many problems will require you to repeatedly circle between various topics, in different orders, and at different times.
- Complexity/Naming — Always strive for a system that is easy to understand from the design alone. Components and their names should be almost obvious once labelled. Strive to make systems as simple as possible and no simpler.
- Validate Often — Frequently validate what you’re designing against the outlined requirements and estimations.
- Validate Assumptions — When establishing requirements and acceptable criteria, make sure any big assumptions are validated.
- Think as a Senior Engineer — How you approach the problem, what you focus on, and the discussions you drive in each signal area, will greatly determine your level.
- Avoid Unnecessary Complexity — Don’t try to talk about everything in this document. Use it as a reference to spark discussion points.
- Drive — Strong candidates will steer a majority of the conversation throughout the interview, addressing the most interesting problem areas.
- Cheat Sheets — If you’re interviewing remotely, you can use these as prompts for important talking points.
- Time Management — Be wary of how much time you’re spending in each area, you only have a small window to exhibit a broad range of signals. Avoid burning time in uninteresting aspects that don’t reinforce positive signals or prevent you from reaching a complete solution.
Part 2 — Problem Exploration