System Design

https://github.com/lei-hsia/grokking-system-design

Interview Process

  • Scope the problem

    • Don’t make assumptions.

    • what features / how much scale do we need

    • Ask clarifying questions to understand the constraints and use cases.

    • Steps

      • Requirements clarifications

      • System interface definition

  • Sketch up an abstract design

    • Building blocks of the system

    • Relationships between them

    • Steps

      • Back-of-the-envelope estimation

      • Defining data model

      • High-level design

  • Identify and address the bottlenecks

    • Use the fundamental principles of scalable system design

    • Steps

      • Detailed design

      • Identifying and resolving bottlenecks

  • features

  • define APIs

  • availability

  • latency performance

  • scalability

  • durability

  • class diagram

  • security and privacy

  • cost efficiency

API key

Last updated

Was this helpful?