My own System Design Resources
80% of the System Design interviews I’ve given in the last 7 years…
…have revolved around just 20% of the most repeated, practical problems.
If you’re preparing for FAANG+ interviews or just trying to learn System Design the right way, this is the MUST-SOLVE LIST.
I've categorized them based on themes, with key notes on what each problem is really testing.
These focus on scale, latency, and efficient data fetching.
-
Design a URL Shortener (Bitly)
→ Key generation, collision handling, DB storage
→ Caching and DB sharding for high traffic -
Design an Image Hosting Service
→ Object storage (S3, GCS), CDN usage
→ Image deduplication and resizing strategies -
Design a Social Media Platform (Twitter/Facebook)
→ Posts, timelines, relationships (follows/friends)
→ Denormalized storage, horizontal scaling -
Design a NewsFeed System (Hard)
→ Push vs Pull models, Fanout on Write vs Read
→ Caching, pagination, ranking algorithms
Durability, throughput, and ingestion speed are key here.
-
Design a Rate Limiter
→ Token bucket or leaky bucket algorithms
→ Redis counters with TTL -
Design a Log Collection and Analysis System
→ Kafka ingestion, ELK for processing
→ Partitioning, buffering, real-time querying -
Design a Voting System
→ Idempotency, fraud prevention, result aggregation
→ Real-time vs eventual updates -
Design a Trending Topics System
→ Count-min sketch, approximate counting
→ Sliding window aggregation, ranking
Transactional integrity and failure handling matter most.
-
Design an Online Ticket Booking System
→ Race conditions, locking, optimistic concurrency
→ Seat reservation, payment orchestration -
Design an E-Commerce Website (Amazon)
→ Product catalog, cart, order pipeline
→ DB consistency, checkout idempotency -
Design an Online Messaging App (WhatsApp/Slack)
→ Message queues, delivery receipts, retries
→ Offline storage, notification systems, scaling -
Design a Task Management Tool
→ CRUD APIs, user auth, task assignment
→ Background jobs, status updates, audit trail
Focus on timing, reliability, and execution guarantees.
-
Design a Web Crawler
→ BFS vs DFS, politeness rules
→ Distributed queues, duplicate URL filtering -
Design a Task Scheduler
→ Job queues, retry logic, cron triggers
→ Priority queues, deduplication -
Design a Real-Time Notification System
→ Push vs Polling, webhooks, token management
→ Scalable delivery to millions of devices
Efficient data structures + low latency retrieval strategies.
-
Design a Search Autocomplete System
→ Trie or Ternary Tree, ranked by frequency
→ Debouncing, typo-tolerance, caching -
Design a Ride-Sharing App (Uber/Lyft)
→ Matchmaking engine, real-time tracking
→ ETA algorithms, surge pricing, DB schema
📌 Like this list? Feel free to fork and build your own mental map for systems!
🧠 Remember: depth > breadth. Focus on tradeoffs, constraints, and real-world scalability.