Read this first: interview formats and emphases change fast, so this is time-sensitive; it lists public resources and my own understanding only, with no company's questions or process.

I'm still learning system design too. This page keeps the public resources and ideas I've found useful. For hands-on practice, start with the system-design exercises: a feed, a RAG knowledge base, or an assistant with memory.

There is no fixed formula

My sense is that system design has no template you can memorize and apply. What is really being probed is two things: do you know the trade-off behind each choice, and can you connect the whole system end to end.

So start from the basics:

  1. What problem are we solving? What does success look like?
  2. What data do we have? What data do we not have?
  3. What are the constraints — scale, latency, cost, freshness?
  4. For each step, what does this choice give up?

An example: recommendation

Say you are building recommendations. Start from what you have:

  • If follows, friendships, or interactions are available, use those relationships to find candidates. A graph need not be a social graph: PinSage uses Pinterest's item–board relationships. Keep these different data structures distinct.
  • And if there is no relationship data? Fall back to behavior itself: item–item co-occurrence, two-tower retrieval, content features (titles, categories, multimodal embeddings). In cold start, content features and a popularity fallback often beat a complicated model.

Every layer below that is a trade-off: how fast retrieval has to be, how large a model ranking can afford, how fresh the features must be, whether an offline gain will show up online, and whether the complexity is worth maintaining. Saying those clearly is worth more than reciting an architecture diagram.

Public resources

General system design:

ML and recommendation: