Master distributed systems
& client-side engineering.
Browse system design breakdowns, core concepts, and practical coding challenges. Run code in our in-browser compiler, review active recall cards, and complete mock interviews.
- Notes App(premium)
Design a local-first notes / to-do app like Google Keep - the note saves to Room the instant you type it, the UI renders from disk, and a background outbox syncs it to the cloud whenever the network is up.
Mobileeasy-1mo - Weather App
Design a forecast app like the Google or Apple weather app - one screen for the current location, a forecast that loads instantly from cache, an honest offline state, and a constrained background refresh.
Mobileeasy-1mo+2
- Image Pipeline - Recursive Batch(premium)
The directory-scale follow-up to Image Processing Pipeline. Walk a tree of images (Large/ and Small/ subfolders), load transform lists from a folder of JSON files, and apply every transform to every image in parallel - preserving the source subdirectory layout in the output and isolating per-combination failures. The fan-out the interview actually scales to millions of combinations.
Practicalmedium45m1mo - Image Processing Pipeline(premium)
Apply ordered image operations (resize, rotate, crop, blur, grayscale) with Pillow - one image, then every image-by-pipeline combination, then a thread pool, then partial-failure isolation, then directory discovery. A throughput and fault-tolerance problem dressed as image manipulation.
Practicalmedium45m1mo - KV Store - Persistent(premium)
The durability follow-up to the in-memory key-value store. Snapshot the store to disk and restore it, then make the write crash-safe with an atomic temp-file rename, then add an append-only write-ahead log so writes made since the last snapshot survive a crash. Length-prefix encoding keeps arbitrary key/value bytes intact across disk.
Practicalmedium40m1mo - KV Store - Thread-Safe(premium)
The concurrency follow-up to the in-memory key-value store. Many threads call put / get / erase on one shared store at once; make it correct under contention, then refine from a single global lock to a reader-writer lock and finally to atomic compound operations (get_and_set, compare_and_swap).
Practicalmedium40m1mo - Web Crawler(premium)
Build a web crawler on top of an injected get_links helper - breadth-first crawl with deduplication, then same-domain and fragment handling, then a concurrent version with a thread pool and a shared visited set, and finally depth and global rate limits. A concurrency problem disguised as a graph traversal.
Practicalhard50m1mo - Photo Gallery App(premium)
Design a Google Photos-style gallery - one timeline over the device and cloud libraries, background backup, full-resolution viewing, fresh-device restore.
Mobilehard-1mo+3
- Follow Graph with Snapshots(premium)
A mutable social graph that has to do three hard things at once - answer point-in-time history without copying the world on every snapshot, and rank friends-of-friends recommendations both live and as-of a past snapshot.
Practicalhard60m1mo - KV Store - Chunked Persistence(premium)
The chunked-persistence follow-up to KV Store Serialize/Deserialize. Serialize a key-value store with a fixed-width binary (TLV) format, then split the blob into 1 KB chunks and checkpoint it to an S3-style object store - with the chunk count carried in a chunk header, no separate metadata object.
Practicalhard50m2mo - GPU Credit Tracker: Variant 2(premium)
Single-account GPU credit grants with time windows; FIFO partial spending and windowed balance queries.
Practicalmedium40m2mo - Offline-First and Sync
Why offline is the mobile design problem, and the sync and conflict strategies every system-design loop probes the moment the network drops.
Core Concept22m2mo - Async N-ary Cluster Count(premium)
Count nodes in an n-ary tree using async fan-out. The recursion is trivial; the real test is fanning out child queries concurrently so wall-clock time scales with tree depth, not node count.
Practicalmedium30m2mo - Authentication Manager - Sessions(premium)
Session-based auth with register, login, logout, session TTL, and salted password hashing. Paired with the TTL token variant in OpenAI loops.
Practicalmedium35m2mo - Authentication Manager - TTL(premium)
LeetCode 1797. Tokens issued with a fixed TTL; renew before expiry to extend; count live tokens at time t. Later phases push the count to amortized O(1) and add thread safety.
Practicalmedium30m2mo - Disease Spread in a Grid(premium)
A cell becomes infected on step t+1 only if it has at least K infected neighbors right now. Looks like rotting oranges but the K threshold turns it into a wave simulation with stall detection.
Practicalmedium40m2mo - Encode and Decode Strings(premium)
Serialize a list of arbitrary strings into a single string and parse it back. Any character is allowed in the strings, including the delimiters - length-prefix framing is the only safe answer.
Practicaleasy25m2mo+3
- Find Duplicate Files(premium)
Group identical files by content. Stream-hash to keep memory bounded, then add size pre-filtering and an opt-in symlink/min-size policy.
Practicalmedium45m2mo+4
- Find Duplicate Files - Extended(premium)
Same starting point as the basic duplicate-finder, then six layers: streaming hash, size + symlink filters, recursive directory walking, two-pass hashing, per-file error handling, and a persistent hash cache.
Practicalhard90m2mo - GPU Credit Tracker: Variant 1(premium)
Two shapes that often combine in the same interview. Historical-balance lookup (add/deduct stamped at a time, query balance as of t) and FIFO consumption with per-batch expiration.
Practicalmedium45m2mo - In-Memory Database with SQL-like Operations(premium)
A single-table in-memory database supporting INSERT and SELECT with WHERE (AND-only equality) and multi-column ORDER BY. The stable-sort trick is the trade tool.
Practicalmedium40m2mo - In-Memory Key-Value Store(premium)
Build a key-value store as a single class. Layer on prefix-scan, TTL, then gzip persistence - each phase is its own surface area on top of the previous one.
Practicalmedium60m2mo - IPv4 Address Iterator and CIDR(premium)
Convert dotted-quad to 32-bit integers and back, iterate forward and reverse over a range, parse CIDR notation, and decompose an arbitrary range into the minimum CIDR cover.
Practicalmedium40m2mo - KV Store - Serialize and Deserialize(premium)
The most-reported OpenAI coding problem. An in-memory key-value store where both keys and values are arbitrary strings - delimiters, newlines, unicode, anything. The on-the-wire format must round-trip them all.
Practicalmedium45m2mo - Meeting Rooms(premium)
Given a list of half-open meeting intervals, find the minimum number of conference rooms; later phases assign specific room IDs and add capped capacity with priority eviction.
Practicalmedium35m2mo+9
- Monster Team Battle(premium)
Auto-simulate a turn-based team fight enforcing round order, dying-strike counterattacks, draw detection, and a full time-ordered event log.
Practicalmedium35m2mo - Resumable Iterator(premium)
An iterator whose state can be captured and replayed - stop iterating, save the state, hand it to a fresh iterator, and continue from exactly where you left off. Layer composition over flat and nested data.
Practicalmedium40m2mo - Sampling Profiler → Trace Events (Sample/Event types)(premium)
A typed variant of the stack-samples problem - Sample and Event are dataclasses, comparisons are by value, and the contract is exposed via the imports the test file requires.
Practicalhard60m2mo - Semantic Version Comparison and Constraints(premium)
Parse and compare semver-style version strings, then layer on range constraints (>=, <, ^, ~, x-wildcards). The lexicographic-vs-numeric comparison trap is the centerpiece.
Practicalmedium35m2mo - Spreadsheet with Formulas(premium)
Cells hold literals or formulas that reference other cells. set_cell evaluates and caches each cell so get_cell is O(1); later levels propagate changes to dependents and reject updates that would form a cycle.
Practicalhard50m2mo - Stack Samples → Trace Events
A sampling profiler captures call stacks at fixed intervals. Convert those snapshots into start/end span events. Three phases - basic diff, recursion, then a min-consecutive-count debounce.
Practicalhard60m2mo - Time-Based Key-Value Store(premium)
A key-value store with timestamped writes. Read at time t returns the latest value written at or before t; later phases add arbitrary-order inserts and range queries.
Practicalmedium35m2mo+9
- Unix cd with Symlink Resolution(premium)
A stateful shell that supports POSIX cd semantics - absolute and relative paths, `.`/`..`, symlink resolution, and cycle detection. Looks simple, hides a stack-and-recursion problem.
Practicalmedium45m2mo - Valid Parentheses
Stack-walk a bracket string to validate it, then localize the first error, then find the longest valid substring (LC 32).
Practicalmedium35m2mo+12
- Accessibility and Internationalization
Why a screen that ignores semantics and locale reads as broken to a chunk of your users, and the parts an interviewer expects you to name when "accessibility" or "i18n" comes up.
Core Concept18m2mo - Android Compatibility
Why "it works on my device" is not a shippable answer, and the version-gating strategy that keeps one codebase correct across a decade of Android releases.
Core Concept18m2mo - App Size and Delivery
Why every megabyte you ship costs install rate and startup time, and the delivery pipeline an interviewer probes when "app size" or "cold start" lands on the table.
Core Concept20m2mo - Architecture
Clean Architecture layers, MVVM vs MVI, the Repository observe/refresh split, the three types of data operations, and Use Cases - the architecture vocabulary every mobile system-design panel listens for.
Core Concept26m2mo - Background Work and Scheduling
Why work you start after the user leaves the screen has to be scheduled, not threaded, and the OS constraints that decide which scheduler a given job earns.
Core Concept20m2mo - Build Systems
Why the build is an architecture decision - the module graph and tooling knobs that decide whether a team ships weekly or watches CI all day.
Core Concept20m2mo - Caching Strategies
HTTP cache semantics, in-memory and disk LRU, CDN tiers, stale-while-revalidate, and invalidation patterns - the layered cache model every mobile app inherits.
Core Concept21m2mo - Compose
Jetpack Compose's declarative model, recomposition rules, and the stability / state APIs that separate a fast Compose UI from a janky one.
Core Concept20m2mo - Concurrency
Coroutines, structured concurrency, and Flow - Kotlin's concurrency model on Android, with the cancellation and scoping rules that keep work from leaking.
Core Concept20m2mo - Dependency Injection
Why the wiring between your layers is a build-time contract, not a runtime guess - and the scopes that keep a Singleton from leaking a screen's state across the app.
Core Concept20m2mo - How Rendering Works
The Android frame pipeline - main thread to RenderThread to SurfaceFlinger to display - plus Compose phases, Hardware Composer fallback, and how WebView's parallel pipeline meets up at the compositor.
Core Concept20m2mo - Image Loading Internals
Why loading an image is a memory and decode problem, not a network call - and the pipeline decisions that keep a thousand-cell grid from OOMing a mid-range device.
Core Concept20m2mo - IPC
Why an Android app with more than one process or a cross-app surface needs the IPC primitives, and which one each system-design shape reaches for.
Core Concept21m2mo - Memory and GC
Why a memory budget is a design constraint - and how GC pauses may cause dropped frame.
Core Concept21m2mo - Mobile Core Concepts
The map of the Core Concepts catalog - the subjects, the order they depend on, and the two ways to read them.
Core Concept6m2mo - Mobile System Design Introduction
Start here, what's important to demonstrate during mobile system design interview, the rubric the panel grades against, and types of such interviews.
Core Concept8m2mo - Navigation
Compose Navigation - NavController, type-safe routes, back stack mechanics, deep links, and per-destination ViewModel scoping. The contract every multi-screen Android app builds on top of.
Core Concept18m2mo - NDK and JNI
When reaching for C/C++ on Android earns its complexity, and the JNI and ABI constraints that decide whether a native dependency ships at all.
Core Concept22m2mo - Network Protocols
Why the transport you pick shapes latency, reconnection, and battery - and the protocol an interviewer expects you to justify for any live or streaming surface.
Core Concept22m2mo - Pagination
Why an infinite scroll needs a cursor and a cache, and the pagination pattern that keeps a feed stable and smooth under inserts.
Core Concept20m2mo - Performance and Profiling
Why a performance claim without a measurement is a guess, and the tools an interviewer expects you to reach for when a frame budget or startup target is on the line.
Core Concept20m2mo - Persistence
Why "where does this state live when the process dies" is a design question, and the persistence decision tree that keeps data safe, fast, and recoverable.
Core Concept21m2mo - Platform Knowledge
Activity / Fragment / Service lifecycles, Application + ProcessLifecycleOwner, the ART runtime, and the OS-level constraints (process model, Doze, App Standby) every modern Android API assumes you understand.
Core Concept22m2mo - Push and Notifications
Why push is a wakeup signal, not a data channel - and the FCM + notification rules that keep a background app responsive without burning battery.
Core Concept18m2mo - Security and Crypto
Why a sensitive feature without the platform's crypto and attestation primitives is a liability, and the security seams an interviewer probes for anything touching tokens, keys, or user data.
Core Concept22m2mo - State Management
Why "who owns the state and what survives rotation" is the question every screen has to answer, with SSOT and UDF as the named principles, the two kinds of state holder, one-shot events as state, and the survival ladder - ViewModel, SavedStateHandle, rememberSaveable - that tells you which surface keeps each piece of state alive.
Core Concept22m2mo - Testing
The Android test pyramid in practice - JVM unit tests, Robolectric on the JVM, instrumentation on a device, plus the doubles and screenshot tools that make the layers work.
Core Concept20m2mo - WebView and Custom Tabs
Why embedding web content inside an Android app is a security and performance decision, and the seam an interviewer probes when "show this web page" lands in a design.
Core Concept20m2mo - Analytics / Logging SDK(premium)
Design a Firebase-Analytics-lite / Amplitude-lite Android SDK - microsecond-budget `track()` on the main thread, a durable on-device queue that survives OOM kill, and batched uploads that respect battery and consent.
Mobilehard-2mo - Crash Reporter SDK(premium)Mobilehard-2mo
- Doc Editor App(premium)
Design a Google Docs-style collaborative editor on Android - local-first keystrokes, conflict-free merge across hours-long offline gaps, reconnect catch-up, and 100k-character documents at 60 fps.
Mobilehard-2mo - Feature Flag SDK(premium)
Design a LaunchDarkly-lite / Firebase Remote Config-lite Android SDK - typed flag evaluation that never throws, deterministic bucketing on user attributes, SSE push refresh with polling fallback, and a global kill switch that outranks targeting.
Mobilemedium-2mo - HTTP Client Library(premium)
Design an OkHttp-lite Android HTTP client - the shared layer every network call flows through. Reuse warm connections, cache and retry safely, pin TLS certificates, and keep any one call from running forever.
Mobilehard-2mo - Image Loading Library(premium)
Design a Coil / Glide-lite Android image loader - memory + disk + network cache ladder, in-flight request dedup, downsampled decode, cancel-on-rebind, and bitmap pooling that keeps a 100-cell `LazyVerticalGrid` at 60 FPS without OOM.
Mobilehard-2mo - Messenger App(premium)
Design an Android messenger - a durable outbox so a tapped message survives a kill, a server-assigned per-chat seq so order is a property of the data, reconnect catch-up, and FCM wakeup for offline recipients.
Mobilehard-2mo+5
- Music Player App(premium)
Design a Spotify-lite Android player - adaptive HLS/DASH streaming, gapless playback via the Media3 playlist API, background playback as a MediaSessionService that lights up Auto / Wear / lockscreen, offline downloads with Widevine DRM, audio focus, and resume-position persistence.
Mobilehard-2mo - Newsfeed App(premium)
Design an Android social feed - opaque cursor pagination over Paging 3 + RemoteMediator, optimistic engagement with idempotent retries, 60 FPS mixed-media scrolling with autoplay video, and pull-to-refresh that surfaces new posts without losing the reading position.
Mobilehard-2mo+7
- Ride-Sharing App(premium)
Design an Uber / Lyft-lite Android rider app - a server-authoritative ride state machine, an idempotent ride request that survives a process kill, a 1-2 Hz driver-location stream interpolated to 60 FPS, FCM (Firebase Cloud Messaging) wakeup when the WebSocket is closed, and reconnect-and-reconcile under cellular drops.
Mobilehard-2mo+4
- The Android App Template
The 90% every concrete app design shares - the Compose + ViewModel + Flow + Room + Hilt skeleton to know and reuse.
Mobilemedium-2mo