Skip to content

How to use this site

This site is for engineers with roughly 1 to 8 years of experience who are preparing for SDE II to Senior interviews, or who want to understand design beyond memorized templates. It assumes you are comfortable in at least one of Java, Python or TypeScript.

  • Every decision states its tradeoff. Look for the orange Tradeoff boxes.
  • Every worked problem starts from requirements. The step bar at the top of a problem shows the framework: requirements, estimates, API, data model, high level design, deep dives, bottlenecks, tradeoffs.
  • Diagrams are explorable. Scroll or pinch to zoom, drag to pan, or open them fullscreen.
  • Code follows your language. Pick Java or Python on any code block and every other block on the site follows.
  1. Low Level Design foundations, then two or three patterns.
  2. One LLD worked problem, such as the parking lot.
  3. System design building blocks, starting with caching.
  4. One system design worked problem, such as the URL shortener.