Design a Rate Limiter
A rate limiter throttles the number of requests a client, user, or IP can send to a service within a time window, protecting backend systems from abuse and accidental overload.
23 hand-picked high-level and low-level system design questions, each with a real description, expected key points, and the concepts it teaches.
By DevsUnite · 23 Questions
A rate limiter throttles the number of requests a client, user, or IP can send to a service within a time window, protecting backend systems from abuse and accidental overload.
TinyURL converts long URLs into short, unique aliases that redirect back to the original when visited. The core design challenge isn't storage. It's generating short keys that never collide, at scale.
Twitter is a social platform for posting short messages (tweets) and following other users to see their posts in a personalized, roughly-chronological timeline.
YouTube lets users upload, store, and stream video at massive scale to a global audience on wildly varying network conditions and devices. The hard parts are ingestion and delivery.
Google Drive stores files in the cloud, syncs them across a user's devices, and supports sharing and collaboration. The core design challenges are efficient sync and conflict resolution.
Google Maps provides map rendering, location search, and turn-by-turn routing across a global road network, updated with live traffic.
A distributed key-value store (like DynamoDB or Cassandra) provides simple get/put access to data but must remain available and performant across many machines and failures.
A message queue (like Kafka or RabbitMQ) decouples producers and consumers of data, letting services communicate asynchronously and absorb bursts without dropping work.
A news feed aggregates and ranks content from many sources a user follows into a single, personalized, scrollable stream. Beyond the fan-out problem sits the ranking problem.
Google Docs is a cloud-based word processor supporting real-time multi-user editing, where every collaborator sees others' changes almost instantly without clobbering each other.
Designing a system like ChatGPT means serving large language model inference to millions of users with acceptable latency and cost, not training the model itself.
Netflix streams a large catalog of video on demand to a global audience, with personalized recommendations and playback that adapts to each viewer's connection.
Reddit organizes discussion into communities with threaded comments and vote-driven ranking, where the hot ranking must stay fresh without recomputing everything constantly.
Uber matches riders with nearby drivers in real time, tracks trips as they happen, and handles pricing, all while drivers and riders move continuously.
WhatsApp delivers one-to-one and group messages reliably and in order, with delivery receipts, offline queuing, and end-to-end encryption.
Instagram is a photo and video sharing platform with a personalized feed, stories, and a heavy read-to-write ratio dominated by media delivery.
A notification system delivers messages across push, SMS, and email channels reliably, respecting user preferences and avoiding duplicate or unwanted sends.
A payment system moves money between parties correctly and exactly once, reconciling with external processors that can fail or respond slowly.
Model a turn-based board game with players, moves, win detection, and a rules engine that extends from tic-tac-toe to chess without restructuring.
TikTok serves an endless personalized short-video feed, where the recommendation engine matters more than the social graph and every scroll must feel instant.
Model an online food ordering and delivery system like Zomato or Swiggy: restaurants, menus, carts, order lifecycle, and delivery partner assignment.
Model a service like Spotify: a catalog of songs and albums, user playlists, playback queue, and a recommendation hook — a classic machine-coding round.
Model a dating app like Tinder: user profiles, preference-based discovery, the swipe interaction, mutual-match detection, and chat unlocked on match.
A curated set of high-level (HLD) and low-level (LLD) system design interview questions, designing systems like a rate limiter, TinyURL, and Twitter, each with a real description of the problem, the key points a strong answer should cover, the concepts it teaches, the companies known to ask it, and a reference article and video.
23 questions, a mix of high-level (18) and low-level (5) design problems, each paired with a reference article and video.
Yes. Browsing every problem on this page is completely free, with no account required. Creating a free DevsUnite account lets you save your checked-off progress, star favorites, and add personal notes that sync across devices.
You can read and solve every problem without logging in. An account is only required to mark a problem as done, star it, or add a note. Those actions save to your account instead of resetting on refresh.