1. 1. Motivation
  2. 2. Anki flashcards
  3. 3. Coding Resource: Interactive Coding Challenges
  4. 4. Contributing
  5. 5. Study guide
  6. 6. How to approach a system design interview question
  7. 7. System design interview questions with solutions
    1. 7.1. Design Pastebin.com (or Bit.ly)
    2. 7.2. Design the Twitter timeline and search (or Facebook feed and search)
    3. 7.3. Design a web crawler
    4. 7.4. Design Mint.com
    5. 7.5. Design the data structures for a social network
    6. 7.6. Design a key-value store for a search engine
    7. 7.7. Design Amazon's sales ranking by category feature
    8. 7.8. Design a system that scales to millions of users on AWS
  8. 8. Object-oriented design interview questions with solutions
  9. 9. System design topics: start here
    1. 9.1. Step 1: Review the scalability video lecture
    2. 9.2. Step 2: Review the scalability article
    3. 9.3. Next steps
  10. 10. Performance vs scalability
  11. 11. Latency vs throughput
  12. 12. Availability vs consistency
    1. 12.1. CAP theorem
      1. 12.1.1. CP - consistency and partition tolerance
      2. 12.1.2. AP - availability and partition tolerance
    2. 12.2. Source(s) and further reading
  13. 13. Consistency patterns
  14. 14. Availability patterns
    1. 14.1. Fail-over
    2. 14.2. Replication
    3. 14.3. Availability in numbers
  15. 15. Domain name system
  16. 16. Content delivery network
  17. 17. Load balancer
    1. 17.1. Layer 4 load balancing
    2. 17.2. Layer 7 load balancing
    3. 17.3. Horizontal scaling
      1. 17.3.1. Disadvantage(s): horizontal scaling
    4. 17.4. Disadvantage(s): load balancer
    5. 17.5. Source(s) and further reading
  18. 18. Reverse proxy (web server)
    1. 18.1. Load balancer vs reverse proxy
    2. 18.2. Disadvantage(s): reverse proxy
    3. 18.3. Source(s) and further reading
  19. 19. Application layer
    1. 19.1. Microservices
    2. 19.2. Service Discovery
    3. 19.3. Disadvantage(s): application layer
    4. 19.4. Source(s) and further reading
  20. 20. Database
    1. 20.1. Relational database management system (RDBMS)
      1. 20.1.1. Master-slave replication
        1. 20.1.1.1. Disadvantage(s): master-slave replication
      2. 20.1.2. Master-master replication
        1. 20.1.2.1. Disadvantage(s): master-master replication
        2. 20.1.2.2. Disadvantage(s): replication
        3. 20.1.2.3. Source(s) and further reading: replication
      3. 20.1.3. Federation
        1. 20.1.3.1. Disadvantage(s): federation
        2. 20.1.3.2. Source(s) and further reading: federation
      4. 20.1.4. Sharding
        1. 20.1.4.1. Disadvantage(s): sharding
        2. 20.1.4.2. Source(s) and further reading: sharding
      5. 20.1.5. Denormalization
        1. 20.1.5.1. Disadvantage(s): denormalization
          1. 20.1.5.1.1. Source(s) and further reading: denormalization
      6. 20.1.6. SQL tuning
        1. 20.1.6.1. Tighten up the schema
        2. 20.1.6.2. Use good indices
        3. 20.1.6.3. Avoid expensive joins
        4. 20.1.6.4. Partition tables
        5. 20.1.6.5. Tune the query cache
        6. 20.1.6.6. Source(s) and further reading: SQL tuning
    2. 20.2. NoSQL
      1. 20.2.1. Key-value store
        1. 20.2.1.1. Source(s) and further reading: key-value store
      2. 20.2.2. Document store
        1. 20.2.2.1. Source(s) and further reading: document store
      3. 20.2.3. Wide column store
        1. 20.2.3.1. Source(s) and further reading: wide column store
      4. 20.2.4. Graph database
        1. 20.2.4.1. Source(s) and further reading: graph
      5. 20.2.5. Source(s) and further reading: NoSQL
    3. 20.3. SQL or NoSQL
      1. 20.3.1. Source(s) and further reading: SQL or NoSQL
  21. 21. Cache
    1. 21.1. Client caching
    2. 21.2. CDN caching
    3. 21.3. Web server caching
    4. 21.4. Database caching
    5. 21.5. Application caching
    6. 21.6. Caching at the database query level
    7. 21.7. Caching at the object level
    8. 21.8. When to update the cache
      1. 21.8.1. Cache-aside
        1. 21.8.1.1. Disadvantage(s): cache-aside
      2. 21.8.2. Write-through
        1. 21.8.2.1. Disadvantage(s): write through
      3. 21.8.3. Write-behind (write-back)
        1. 21.8.3.1. Disadvantage(s): write-behind
      4. 21.8.4. Refresh-ahead
        1. 21.8.4.1. Disadvantage(s): refresh-ahead
    9. 21.9. Disadvantage(s): cache
    10. 21.10. Source(s) and further reading
  22. 22. Asynchronism
    1. 22.1. Message queues
    2. 22.2. Task queues
    3. 22.3. Back pressure
    4. 22.4. Disadvantage(s): asynchronism
    5. 22.5. Source(s) and further reading
  23. 23. Communication
    1. 23.1. Hypertext transfer protocol (HTTP)
      1. 23.1.1. Source(s) and further reading: HTTP
    2. 23.2. Transmission control protocol (TCP)
    3. 23.3. User datagram protocol (UDP)
      1. 23.3.1. Source(s) and further reading: TCP and UDP
    4. 23.4. Remote procedure call (RPC)
      1. 23.4.1. Disadvantage(s): RPC
    5. 23.5. Representational state transfer (REST)
      1. 23.5.1. Disadvantage(s): REST
    6. 23.6. RPC and REST calls comparison
      1. 23.6.1. Source(s) and further reading: REST and RPC
  24. 24. Security
    1. 24.1. Source(s) and further reading
  25. 25. Appendix
    1. 25.1. Powers of two table
      1. 25.1.1. Source(s) and further reading
    2. 25.2. Latency numbers every programmer should know
      1. 25.2.1. Latency numbers visualized
      2. 25.2.2. Source(s) and further reading
    3. 25.3. Additional system design interview questions
    4. 25.4. Real world architectures
    5. 25.5. Company architectures
    6. 25.6. Company engineering blogs
      1. 25.6.1. Source(s) and further reading
  26. 26. Under development
  27. 27. Credits
  28. 28. Contact info
  29. 29. License

Design Mint.com

View exercise and solution

Imgur