GitHub - donnemartin/system-design-primer: Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards. · GitHub

Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards. - donnemartin/system-design-primer

En bref

Ajouté le

17 mars 2026

Matière et domaine

computer-science-advanced · distributed-systems

Niveaux scolaires

9e année (3e)–12e année (Terminale)

Type de page

Article

Introduction

System Design Primer Overview

  • Purpose: An open-source, community-driven resource for learning large-scale system design and preparing for technical interviews.
  • Core Philosophy: "Everything is a trade-off." The guide emphasizes understanding the pros and cons of various architectural choices rather than memorizing specific answers.
  • Key Learning Topics:
    • Foundational Concepts: Performance vs. scalability, latency vs. throughput, availability vs. consistency (CAP theorem).
    • Infrastructure Components: DNS, CDNs, Load Balancers, Reverse Proxies, Databases, Caching, and Asynchronism.
    • Scaling Strategies: Vertical vs. horizontal scaling, database replication, and partitioning (sharding).
  • Interview Preparation Framework:
    1. Gather Requirements: Clarify use cases, constraints, inputs/outputs, and traffic volume.
    2. High-Level Design: Sketch main components and justify connections.
    3. Deep Dive: Focus on core components (e.g., API design, database lookups).
    4. Identify Bottlenecks: Address scalability issues using load balancers, caching, or sharding.
    5. Trade-offs: Discuss potential solutions and their implications.
  • Study Resources:
    • Anki Flashcards: Provided for spaced repetition of key concepts.
    • Practice Questions: Includes sample solutions for system design (e.g., Pastebin, Twitter timeline, Web Crawler) and object-oriented design (e.g., Hash Map, LRU Cache, Parking Lot).
    • Appendix: Includes "back of the envelope" calculation guides, powers of two tables, and latency numbers.
  • Timeline Strategy:
    • Short: Focus on breadth and solving a few sample questions.
    • Medium: Balance breadth and depth; solve many questions.
    • Long: Aim for deep technical understanding and solve most available questions.
  • Community Contribution: The project is continually updated via GitHub pull requests for fixes, translations, and new content.

Avis de la communauté

Pas encore d’avis publiés. Soyez le premier à partager votre expérience.