For engineers interviewing at Big Tech

Master System Design Interviews on the Go

ArchCards turns Big Tech system-design prep into fast, spaced flashcard drills — organized by topic and engineering level, synced across your devices, and always one glance away on your home screen.

Coming soon to the App Store Get it on Google Play

Free to use · Read 5 senior-level cards ↓

Built for deliberate practice

Every feature exists to make your reps count — nothing more, nothing to distract you.

SM-2 spaced repetition

Repeat a card right before you forget it

ArchCards schedules with SM-2, the algorithm behind SuperMemo and Anki. You grade each recall, and the interval stretches when you get it right and collapses when you do not — so review time lands on the concepts that have not stuck instead of the ones you already know.

Interactive diagrams

See the architecture, not just the answer

Every card carries a stepped diagram you can walk through, an explicit list of upsides and costs, and a six-axis trade-off profile scoring scalability, availability, consistency, performance, simplicity and operability — because interviews are graded on the trade-off you name, not the term you recall.

Anki & CSV import

Bring the deck you already built

Import your own cards from an Anki export or a plain CSV and drill them with the same scheduler, categories and widgets. Your existing deck does not have to be rebuilt to come with you.

Home-screen widgets

Study without opening the app

Pin an ArchCards widget to your home screen and drill in the gaps of your day. Cards refresh automatically when you close one in the app, or force an update with a tap — with rotating visuals so it never goes stale.

Categorized cards

Know the topic and grade at a glance

Every card is labelled with its category — Databases, Distributed Systems, Caching — and a color-coded level from L4 to Staff, so you always practise at the right depth for the role you are targeting.

Cloud sync

Your progress, on every device

Firebase-backed sync keeps your history consistent across phone and tablet and delivers new cards the moment they ship. Switch devices mid-prep and pick up exactly where you left off.

Read the deck

Five senior and staff-level system design concepts

Real cards from the app, in full — no signup, no paywall. These sit at the L5 and L6 tiers, where interviews stop asking what a component is and start asking how it fails: partition keys and horizontal scaling, quorum and consensus, the distributed transaction you do not get, and the resilience patterns that keep microservices standing when a dependency hangs. Expand a card to read the answer and how to use it under interview pressure.

Databases L5 · Senior

Understanding Database Sharding

Write throughput has outgrown a single node. How do you partition the data?

Sharding is a type of database partitioning that separates very large databases into smaller, faster, more easily managed parts called data shards. It is a form of horizontal scaling. Key challenges include choosing the right shard key (to avoid hot partitions), cross-shard joins (which are slow and complex), and resharding (moving data when a shard gets too full).

In an interview: Lead with the partition key — it decides whether horizontal scaling actually works or just relocates the bottleneck into one hot shard. Cross-shard joins and resharding are the follow-ups interviewers always reach for.

Upsides

  • Write throughput and storage scale nearly linearly by adding shards — the only path once vertical scaling tops out.
  • Failures and maintenance are isolated to one shard's slice of data instead of the whole dataset.
  • Smaller per-shard tables and indexes keep individual queries fast.

Costs

  • Cross-shard joins and transactions are slow and complex, and usually get pushed up into application logic.
  • A poorly chosen shard key creates hot partitions that no amount of extra hardware can fix.
  • Resharding live data is a major operational project, and global IDs, uniqueness constraints, and analytics all need extra machinery.

Trade-off profile

scalability
5/5
availability
4/5
consistency
2/5
performance
4/5
simplicity
1/5
operability
2/5
  • Partition key
  • Horizontal scaling
  • Hot partition
  • Resharding
  • Write throughput
Scalability L5 · Senior

Understanding Consistent Hashing

How do you add a cache node without invalidating nearly every key?

Consistent hashing maps both servers and keys onto a fixed circular hash ring, and each key is owned by the first server encountered clockwise. When a node is added or removed, only the keys in its immediate arc are remapped — on average K/N keys — instead of nearly all keys as with a naive hash-mod-N scheme. Virtual nodes (many ring positions per physical server) are used to smooth out uneven load and hotspots. It underpins distributed caches and databases such as Amazon Dynamo, Cassandra, and many CDN routing layers.

In an interview: Hash-mod-N remaps almost everything on a membership change; the ring remaps roughly K/N. Bring up virtual nodes for even load across heterogeneous hardware, and be ready to say it does nothing for a single hot key.

Upsides

  • Adding or removing a node remaps only ~K/N keys instead of nearly all of them, so scaling events don't trigger mass cache misses or data reshuffles.
  • Key ownership is computable locally from the ring — no central lookup table or coordinator on the request path.
  • Virtual nodes let heterogeneous hardware carry proportional load: bigger machines simply get more ring positions.

Costs

  • With too few virtual nodes the ring distributes load unevenly, and adding many vnodes increases membership metadata and rebalance bookkeeping.
  • It does nothing for hot keys — one celebrity key still lands on a single node no matter how balanced the ring is.
  • Range queries become impossible because adjacent keys are deliberately scattered across the ring.

Trade-off profile

scalability
5/5
availability
4/5
consistency
3/5
performance
4/5
simplicity
3/5
operability
3/5
  • Hash ring
  • Virtual nodes
  • Rebalancing
  • Cache miss storm
  • Key distribution
Distributed Systems L6 · Staff

Understanding the Raft Consensus Algorithm

Five nodes must agree on one ordering of writes. How do they do it with no single source of truth?

Raft is a consensus algorithm designed to manage a replicated log, heavily used in distributed systems to maintain state machine consistency across nodes (e.g., in etcd or Consul). It breaks consensus down into Leader Election, Log Replication, and Safety. Nodes exist in one of three states: Leader, Follower, or Candidate. It requires a majority quorum to commit entries, ensuring that network partitions don't lead to split-brain scenarios.

In an interview: Decompose it the way Raft does — leader election, log replication, safety — and anchor every claim on majority quorum: a minority partition can never commit, so failover is automatic and split-brain becomes structurally impossible rather than merely unlikely.

Upsides

  • Designed for understandability — clear leader/follower roles make correct implementation and debugging realistic for ordinary teams.
  • Majority quorums make split-brain impossible by construction, giving linearizable writes for critical metadata.
  • Battle-tested foundations (etcd, Consul) mean you can consume consensus without writing it yourself.

Costs

  • Every write funnels through the leader and a quorum round-trip, capping throughput and adding latency.
  • A 2f+1 cluster tolerates only f failures; lose the majority and the whole cluster stops accepting writes (strict CP behaviour).
  • Leader elections cause brief unavailability windows, and it is meant for coordination data — not the high-volume data path.

Trade-off profile

scalability
2/5
availability
3/5
consistency
5/5
performance
2/5
simplicity
2/5
operability
3/5
  • Consensus
  • Quorum
  • Leader election
  • Replicated log
  • Split-brain
Data Consistency L6 · Staff

Understanding the Dual Write Problem

You must write to the database and publish an event. What happens when the process dies in between?

The dual write problem occurs when a single operation must update two independent systems — for example a database and a message broker — without a shared transaction. If the process crashes after the first write but before the second, the systems drift out of sync and there is no automatic way to reconcile them. The standard fixes are the Transactional Outbox pattern (persist the event in the same DB transaction, then relay it asynchronously) or Change Data Capture (CDC), which streams the database's commit log to downstream consumers so the log is the single source of truth.

In an interview: Name it as a missing distributed transaction, then reach for the transactional outbox or CDC so the commit log becomes the single source of truth for every downstream microservice. Say plainly that you buy atomicity with eventual consistency — and that at-least-once delivery makes consumer idempotency mandatory.

Upsides

  • Transactional Outbox makes the event write atomic with the business write — either both commit or neither does, eliminating silent drift between systems.
  • CDC decouples producers entirely: the commit log becomes the single source of truth, and new downstream consumers can be added without touching application code.
  • Both fixes give at-least-once delivery with replay, so a crashed relay resumes from where it stopped instead of losing events.

Costs

  • Delivery becomes asynchronous — downstream systems see events with a lag, so the overall system is only eventually consistent.
  • Outbox requires a relay/poller process plus cleanup of published rows, adding operational moving parts to every service.
  • At-least-once means duplicates are inevitable, so every consumer must be idempotent — exactly-once end-to-end is not what you get.

Trade-off profile

scalability
4/5
availability
4/5
consistency
4/5
performance
3/5
simplicity
2/5
operability
2/5
  • Transactional outbox
  • Change data capture
  • Idempotency
  • At-least-once
  • Eventual consistency
Resilience L6 · Staff

Understanding Bulkheads and Load Shedding

Traffic is three times capacity and one dependency is hanging. What do you protect first?

When under extreme stress, a system must protect itself. 'Load Shedding' purposefully drops low-priority requests (returning 503) to ensure critical requests succeed. The 'Bulkhead' pattern (named after ship compartments) isolates resources. For example, assigning a strict maximum of 10 threads to Service A ensures that if Service A hangs, it won't consume all CPU threads, allowing Service B to continue operating normally.

In an interview: Shed low-priority load early with a 503 so critical paths keep their capacity, and bulkhead a thread pool per dependency so one hanging service cannot starve the whole process. Degrading deliberately beats collapsing uniformly — and it keeps tail latency bounded for the traffic you do serve.

Upsides

  • Bulkheads cap the blast radius: one hung dependency can exhaust only its own small pool, never every thread in the process.
  • Load shedding keeps the critical path (checkout, login) alive by explicitly sacrificing low-priority traffic.
  • The system fails predictably with fast 503s instead of collapsing into timeout soup nobody can debug.

Costs

  • Static pool sizes waste capacity in normal operation and each service needs its own tuning.
  • Deciding which traffic is 'low priority' is a business decision — misclassification silently drops requests that mattered.
  • Shed requests are still user-visible errors, so clients need retry and fallback handling for the strategy to feel graceful.

Trade-off profile

scalability
4/5
availability
5/5
consistency
3/5
performance
4/5
simplicity
3/5
operability
3/5
  • Load shedding
  • Bulkhead
  • Thread-pool isolation
  • Backpressure
  • Tail latency
Want more flashcards? Download ArchCards on Google Play

70 cards across Databases, Architecture, Distributed Systems, Scalability, Resilience, Caching, and Data Consistency — free, and growing.

The interface

A clean surface for deep focus

High-contrast cards on a neutral background — no clutter competing for your attention. The prompt sits on the front with a color-coded topic and level label; one tap flips to a concise, structured answer.

  • Tap-to-flip cards with a smooth, distraction-free animation
  • Color-coded category and grade badges on every card front
  • A home-screen widget that keeps a card in view all day

↓ Try it — tap the card to flip it.

Community-driven

A deck that grows with its community

ArchCards has a feedback loop built into the app. When you hit a topic that is missing, an answer that could be sharper, or a bug, you act on it in the moment — no email, no context-switch. Every request lands with the team and feeds the roadmap. The engineers drilling the cards decide what gets built next.

Request a category

Missing a topic you need for your target company? Ask for it in one tap.

Suggest a card

Know a sharper question or a cleaner answer? Send it straight to the deck.

Report a bug

Something off? Flag it in the moment — no email, no lost context.

100% free, and no ads

ArchCards is free to use and shows no advertising at all — no banners, no full-screen interstitials between sessions, nothing competing for the attention a rep needs. What you see in the app is the deck.

Start drilling today.

Turn dead minutes into interview reps. Download ArchCards and put your next system-design round on rails.

Coming soon to the App Store Get it on Google Play