Evan (former Meta Staff Engineer, Hello Interview co-founder, hundreds of interviews conducted on both sides) lays out a complete prep strategy for system design interviews. The core insight: prep like you do for coding - work backwards from common problems rather than memorising solutions.
What system design interviews actually are
Two types dominate. Product design (design Ticketmaster, Uber, Dropbox, Netflix) - end-user apps you use every day. Infrastructure design (rate limiter, message queue, data processing pipelines, ad-click aggregator) - non-user-facing components. Both are evaluated on the same axes but test different depth areas.
The framework
A structured approach keeps you focused and on time for a 35-60 minute slot:
- Outline requirements - functional (features: user books a ticket) and non-functional (quality: low latency, strong consistency, scale targets). Aligns you and the interviewer.
- Core entities - map to database tables (user, event, ticket).
- Basic APIs - typically REST; occasionally GraphQL when it genuinely fits.
- High-level design - simple boxes-and-arrows meeting the functional requirements.
- Deep dives - satisfy the non-functional reqs. How do you make it low-latency? Strongly consistent? Scale to X users? This is where you demonstrate technical depth.
How you’re evaluated
Every company evaluates permutations of four axes:
- Problem solving - can you identify and prioritise the core challenge? Designing Ticketmaster: focus on the booking flow, not authentication.
- Solution design - your high-level design from the framework. Did you weigh trade-offs and meet functional reqs?
- Technical excellence - your deep dives. Go deep on specific technologies in specific areas. Talk about where things could break.
- Communication - you’ll talk for 35-60 minutes. Be clear and competent.
The six fundamentals that cover 90%+
Skip the overwhelming 50-item checklists. Focus on six:
- Storage fundamentals - SQL vs NoSQL, when each makes sense, B-tree vs LSM vs hash index trade-offs
- Caching - CDNs, local caches (in-memory), global caches (Redis/Memcached), cache eviction policies
- Load balancing - round-robin, least connections, consistent hashing, reverse proxies
- Asynchronous processing - message queues, pub/sub, event-driven architectures
- Networking fundamentals - DNS, TCP, HTTP, WebSockets, gRPC; the protocols that box-and-arrow lines represent
- API design - RESTful conventions, pagination, error handling, versioning patterns
Working backwards from common problems
Once the framework and fundamentals are solid, build deeper understanding by working through specific problems in priority order.
Tier 1 (start here):
- Design a URL shortener (tier-1 scalability intro)
- Design a chat system (real-time communication)
- Design a rate limiter (infrastructure, algorithmic thinking)
- Design a key-value store (distributed systems fundamentals)
Tier 2 (after tier 1):
- Design a notification system (async workflows + fan-out)
- Design Uber (geospatial + state machines; focuses on location services and state management)
- Design TikTok / YouTube (content delivery; tests CDN + feed algorithm thinking)
- Design a distributed queue (infrastructure, messaging internals)
- Design a web crawler (parallelism + politeness constraints)
Tier 3 (depth / Meta-specific patterns):
- Design a real-time leaderboard
- Design a distributed cache
- Design proximity service
- Design Dropbox (sync conflicts)
- Design a metrics monitoring system
- Design a content delivery network
- Design a distributed messaging system (SQS-style)
The study plan
- Understand what the interview format is (done above).
- Refresh the six fundamentals (skip the 50-item checklist).
- Get familiar with basic components that appear in every system design: load balancers, API gateways, databases, caches, message queues.
- Work through the tier list above - start with tier 1, understand patterns across problems rather than memorising individual solutions. The goal is to recognise when you’re looking at a caching problem vs a partitioning problem, regardless of which product you’re designing.
Lessons worth keeping
- The key insight is mirroring coding interview prep: identify patterns across problems, not solutions to individual questions.
- Six fundamentals get you 90%+ of the way. Don’t drown in infinite checklists.
- Pick one framework and practice it until it’s automatic. The most common failure isn’t lack of knowledge, it’s lack of structure under time pressure.
- Meta specifically values pragmatic, justified trade-off decisions over theoretically perfect architectures.
- Deep dives matter more than breadth. Go deep on 2-3 components per practice problem rather than staying shallow everywhere.
Related
- 20 System Design Concepts Explained - vocabulary brush-up on the fundamentals
- System Design Interview: Design TikTok - full-length mock interview walkthrough using the same framework
Sources
YouTube: Hello Interview Full text: prepare-system-design-interviews