Challenge library

Pick a system. Find out where it breaks.

Each brief is a real interview scenario with stated traffic, latency budgets, and failure expectations. Draw your design on the canvas and get scored against it.

Challenges
16
Domains
5

Showing 16 of 16

Medium30-45 mins

Design a URL Shortener

Turn long URLs into short ones and redirect them fast, in the style of TinyURL or bit.ly.

  • 01Generate a unique short code (7 base62 characters) for any long URL
  • 02Redirect a GET on the short URL to the original destination in under 10ms
HashingRedisNoSQL+2
Storage & CachingOpen canvas
Medium30-45 mins

Design an API Rate Limiter

Stop a single client from hammering your API with more requests than it is allowed.

  • 01Enforce the limit per user ID, API key, or client IP
  • 02Return HTTP 429 with retry headers when a client goes over its limit
Token BucketRedis LuaAPI Gateway+1
High Scale & WebOpen canvas
Hard45-60 mins

Design a Real-time Chat System

Build one-to-one and group messaging in the style of WhatsApp, Slack, or Discord.

  • 01Deliver one-to-one and group messages in under 100ms
  • 02Track Sent, Delivered, and Read receipts
WebSocketsPubSubCassandra+2
Real-Time & MessagingOpen canvas
Hard45-60 mins

Design a Video Streaming Platform

Build video upload, transcoding, and playback in the style of Netflix or YouTube.

  • 01Accept large uploads from creators and resume them after a dropped connection
  • 02Transcode uploads in the background into 4K, 1080p, 720p, and 480p
CDNTranscodingS3+2
Streaming & MediaOpen canvas
Hard45-60 mins

Design a Ride-Hailing Service

Track drivers by location and match them to riders, in the style of Uber or Lyft.

  • 01Have drivers broadcast GPS coordinates every 3 to 5 seconds
  • 02Let riders query nearby drivers within a radius in under a second
GeospatialH3/S2WebSockets+2
Distributed SystemsOpen canvas
Hard45-60 mins

Design a Distributed Cache

Build an in-memory key-value cache cluster with eviction and replication, in the style of Redis.

  • 01Answer get(key) and put(key, value) in under a millisecond
  • 02Spread keys across nodes with consistent hashing and virtual nodes
Consistent HashingLRU CacheReplication+2
Storage & CachingOpen canvas
Hard45-60 mins

Design a Social Network Feed

Generate a personal social feed at high volume, in the style of Twitter/X or the Facebook News Feed.

  • 01Let users post text or media (under 280 characters) and follow or unfollow others
  • 02Build and deliver a home feed in under 200ms for 300M active users a day
Fanout ServiceRedis ZSETKafka+2
High Scale & WebOpen canvas
Hard45-60 mins

Design a Distributed Web Crawler

Fetch and store billions of pages for a search index.

  • 01Crawl and store 1 billion pages a month, about 400 a second
  • 02Respect robots.txt and throttle requests per domain
URL FrontierBloom FilterPoliteness+2
Distributed SystemsOpen canvas
Medium30-45 mins

Design a Notification Service

Send push, SMS, email, and in-app notifications from one service.

  • 01Send over push (APNs, FCM), SMS (Twilio), email (SendGrid), and in-app channels
  • 02Send OTP and 2FA alerts ahead of low-priority promotional batches
Push NotificationsAPNs/FCMKafka+2
Real-Time & MessagingOpen canvas
Hard45-60 mins

Design Cloud File Storage

Store files in the cloud and sync them across devices, in the style of Google Drive or Dropbox.

  • 01Upload and download files up to 10GB, resuming after an interruption
  • 02Sync only the chunks that changed when a file is edited
ChunkingDelta SyncS3+2
Storage & CachingOpen canvas
Medium30-45 mins

Design Search Autocomplete

Return search suggestions as the user types, in the style of Google or Amazon.

  • 01Answer a prefix query in under 50ms on every keystroke
  • 02Serve 100,000 queries a second at peak
TrieIn-MemoryPrefix Search+2
Storage & CachingOpen canvas
Hard45-60 mins

Design a Flash Sale System

Sell a limited stock to a huge crowd without overselling it.

  • 01Survive 1M+ concurrent buyers hitting checkout at the moment the sale opens
  • 02Never oversell. Stock cannot go below zero
Redis LuaVirtual QueueKafka+2
High Scale & WebOpen canvas
Hard45-60 mins

Design a Metrics Monitoring System

Take in millions of metrics a second, store them in time order, and alert on them.

  • 01Ingest 10M+ metric data points a second from thousands of hosts and services
  • 02Answer queries like p50, p95, and p99 latency and average CPU over a time window
TSDBTime SeriesKafka+2
Distributed SystemsOpen canvas
Hard45-60 mins

Design Collaborative Document Editing

Build a text editor several people can type in at once, in the style of Google Docs or Notion.

  • 01Sync edits between everyone in the document in under 100ms
  • 02Resolve conflicts without corrupting the document or scrambling character order
CRDTOperational TransformationWebSockets+2
Real-Time & MessagingOpen canvas
Easy20-30 mins

Design a Distributed ID Generator

Hand out unique 64-bit IDs that sort by time, the Snowflake problem.

  • 01Generate IDs that are unique across every node and data center
  • 02Fit each ID in a 64-bit integer, so it works as a primary key
SnowflakeBit ManipulationHigh Availability+1
Distributed SystemsOpen canvas
Medium30-45 mins

Design a Real-time Gaming Leaderboard

Serve top scores and rank lookups for millions of players, live.

  • 01Recalculate rank the moment a score changes, for 10M+ active users
  • 02Return the top 100 and a player's nearest rivals in under 20ms
Redis Sorted SetsZSETGaming+2
Real-Time & MessagingOpen canvas