Basics

Find & understand system requirements, constraints and bottlenecks, as well as trade-offs.

  • good questions are important, collaborate, lead, do not overengineer, think of your timing.

back-of-the-enveloppe estimations: 1 byte = 8 bits, an ASCII is 1 byte.

  • QPS, peak QPS, storage, cache, n of servers, …
0s approximate name
3 1 K 1 Kb
6 1 Mi 1 Mb
9 1 Bi 1 Gb
12 1 Tri 1 Tb
15 1 Quad 1 Pb

If we have 45-60 mins:

  1. (3-10 mins) Understand the problem and establish design scope:
    • What specific feature we are ginong to build - What is the most important feature of the product?
    • How many users, how many daily active users (DAU)?
    • How fast the company plans to scale up + expected scaling 3,6,12 months?
    • What is the tech stack and what existing services you might leverage to simplify the design?
  2. (10-15 mins) Process high-level design and get byu-in:
    • Make a bluebrint and ask for feedback - like it is a team mate. Involve the interviewer in the discussion.
    • Draw a small diagram, make rough estimations.
    • Idenitify and prioritize components in the architecture.
    • Suggest multiple approaches, and together choose one if required.
  3. (10-25 mins) Design deep dive: if asked, design the most critical component first.
  4. (3-5 mins) Wrap up: overview, error cases, monitoring + logs, deploument, scale handling (from 1M to 100M DAU)