Interview Thought Process
- End Goal & Main Service Definition
- Confirm Requirements
- Product Requirements
- Engineering Requirements
- Define Services & APIs
- List Services
- Define APIs for Each Services
- Confirm Requirements
- Quantity/Scale Analysis
- Quantify Workload/Capacity
- Throughput Estimate
- Ingress Estimate (Write)
- Egress Estimate (Read)
- Storage Estimate
- Throughput Estimate
- Design Data Model
- SQL vs NoSQL
- Schema
- Quantify Workload/Capacity
- System Analysis & Tradeoff
- High-level Architecture Diagram
- End-to-end Service Architecture
- Dive into Components
- Database
- Sharding/Partitioning
- Replication/Fault Tolorence
- Load Balancer
- Dispatch Algorithm
- Cache
- Replacement Policy
- Message Queue
- Partitioning
- Load Balance Logic
- Database
- Tradeoff for Bottlenecks & Failure
- Tradeoff Component Choice
- Failure Cases Handling
- Architecture Improvement
- High-level Architecture Diagram
Interview Mindset
- Be Condident on What You Know
- Be Calm and Honest If You Don’t Know
- Know the Unknown from Assumption and Deduction
- Show Tradeoff Analysis/Proof Not End Result from Your Memory
- Serve & Support Your Interviewer All Time
Interview Prepare Process
- Build System
- Map Knowledge to Real World System
- Full Picture & Implementation Details
- Deep-dive into Each System Components/Toptics
- Low-level Basics
- Pro&Cons Comparison/Tradeoff
- Mock & Communicate with Senior & Expert
- Get Feedback
- Ask Questions that Are Hard to Find an Answer
Top 10 System Design Questions
- Design TinyURL or bitly (a URL shortening service)
- Design YouTube, Netflix or Twitch (a global video streaming service)
- Design Facebook Messenger or WhatsApp (a global chat service)
- Designing Quora or Reddit or HackerNews (a social network + message board service)
- Design Dropbox or Google Drive or Google Photos (a global file storage & sharing service)
- Design Facebook, Twitter or Instagram (a social media service with hundreds of millions of users)
- Design Uber or Lyft (a ride sharing service)
- Design a Web Crawler or Type-Ahead (search engine related services)
- Design an API Rate Limiter (e.g. for Firebase or Github)
- Design Yelp or Nearby Places/Friends (a proximity server)
references: