Skip to main content

System Design

You might get asked to solve system design questions that are more open-ended. These challenges test how you might develop complex and large-scale systems.

Helpful tips

Going through the tips below will help you deliver a solid system design answer.

Bonus Resource

Are you new to system design? Don't worry! Check out this amazing resource for a complete overview of system design, including study tips, anki flashcards, and more.

System Design Primer

Clarify the requirements

There’s not going to be one solution to the problem you’re presented with. Get clear on anything that’s ambiguous before you dive in.

Just know that sometimes the answer you’re given is, “you already have all the information you need!” That’s the interviewer's way of saying that they’re not going to give you more details and you should proceed as best as you can with the information you already have. Good luck. 😁

Set some high-level criteria

What scale is expected from the system? What do users need to be able to do? Show that you’re thinking ahead by sharing some of your assumptions.

Define the technical needs

What APIs are needed? Is there a frontend, backend, and a datastore?

Define the data model

Define a high-level structure for the important objects in your solution. Also, note the relationships between these objects. This is a prototype of your database schema.

Do the high-level design

Draw a block diagram with 5-6 boxes representing the core components of our system. Identify enough components that are needed to solve the actual problem from end to end.

Do the detailed design

Keep going! Consider trade-offs between different options while keeping system constraints in mind.

Identify and resolve bottlenecks

If time allows, see if you can catch any potential bottlenecks and start solving those. Also, take a moment to appreciate yourself. You’re clearly a total badass. 👏