System Design interview questions: architecture practice quiz
Reviewed by Mark Dickie · Last updated
9 questions on this page you can answer and see marked on the spot. Go to the first one
System design is the work of deciding how a software system's services, data stores, and network paths fit together to meet targets for load, latency, and reliability. In a system design interview, you start from a vague prompt such as "design a URL shortener", turn it into requirements and rough capacity numbers, sketch an architecture, and then go deep on one or two bottlenecks. Interviewers grade the trade-offs you name, such as SQL versus NoSQL storage, synchronous calls versus queues, and strong versus eventual consistency, more than whether you recall one correct design. The quiz below covers those trade-offs in the order you will meet them.
Which building blocks do interviewers expect you to name?
| Building block | What the interviewer checks | Concrete options to name |
|---|---|---|
| Load balancer | How traffic is routed and how failover works | L4 vs L7, round robin vs least connections, active health checks |
| Cache | Invalidation strategy and what happens on a miss | Cache-aside vs write-through, TTL values, LRU eviction |
| Database sharding | Choice of partition key and hot spots | Hash-based vs range sharding, consistent hashing with virtual nodes |
| Message queue | Delivery guarantees and decoupling | Kafka partitions and consumer groups, SQS visibility timeout, at-least-once delivery with idempotent consumers |
| Rate limiter | Algorithm and where it runs | Token bucket vs sliding window log, Redis INCR with key expiry |
How do you order a system design answer?
- Clarify requirements: which features are in scope, the read-to-write ratio, and the latency target.
- Estimate scale: requests per second, storage per year, and bandwidth, so the numbers justify the design.
- Define the API and data model, including the key you would partition on.
- Draw the high-level path: client, load balancer, service, cache, and database.
- Deep-dive the bottleneck you picked, naming one concrete option and what it costs.
- Walk through failure cases such as a node crash, a network partition, or a retry storm.
Key facts
- Tarmac has 50 System Design interview questions on this topic, 10 of them on this page, at difficulty 1–5 of 5.
- Tarmac tracked 3,204 job postings asking for System Design in October 2026.
- Roles asking for System Design advertise a median base salary of £87,500, across 827 job postings as of October 2026.
- Tarmac last reviewed these System Design interview questions on 3 November 2026.
At a glance
| Questions | 10 shown · 50 in the bank |
|---|---|
| Difficulty | 1–5 of 5 |
| Formats | True / false, Fill in the blank, Multiple answer, Multiple choice, Ordering |
What you'll review
- sd architecture
Practice questions
Try one before you open the answer. Pick an option and press Check; it's marked on the spot.
A monolithic architecture packages all application components (UI, business logic, and data access) into a single deployable unit, which means the entire application must be redeployed whenever any component changes.#
Options
Show answer
True. In a monolithic architecture, all components—UI, business logic, and data access—are packaged into one deployable unit. A change to any component requires rebuilding and redeploying the entire application. This coupling is a primary reason teams adopt microservices, which allow individual services to be deployed independently.
By definition, a monolith is a single deployable artifact. All components are tightly coupled and compiled/packaged together. Any code change—regardless of which layer it affects—requires rebuilding and redeploying the whole unit. This is one of the key motivations for moving toward microservices, which allow individual components to be deployed independently.
Complete the two key concepts: A _____ balances incoming network traffic across multiple servers to improve availability and throughput. When user session data must remain on the same server for the duration of a session, this is called _____ persistence.#
Show answer
Complete the two key concepts: A load balancer balances incoming network traffic across multiple servers to improve availability and throughput. When user session data must remain on the same server for the duration of a session, this is called sticky persistence.
A load balancer sits in front of a pool of servers and distributes client requests using algorithms such as round-robin or least-connections. When an application stores session state locally on a specific server, a 'sticky session' (also called session affinity) configuration tells the load balancer to always route a given client to the same backend server so that session data remains accessible. This avoids the need to share session state across servers but can create uneven load distribution.
In a stateless web architecture, any server in the pool can handle any incoming request without needing access to session data stored on a specific server.#
Options
Show answer
True — in a stateless web architecture, no application server stores session data locally. State is kept in a shared external store (like Redis or a database) or carried in the request (e.g., a JWT). This means any server can handle any request, enabling simple horizontal scaling and eliminating 'sticky session' requirements.
Stateless architecture means no session or user state is persisted on individual application servers. Session data is either stored in a shared external store (e.g., Redis, a database) or encoded in the request itself (e.g., a signed JWT). Because no server holds unique local state, any server can serve any request, making horizontal scaling and failover straightforward. This is a foundational principle behind scalable, cloud-native architectures.
A team is designing a caching layer (e.g., Redis) in front of a relational database. Identify all correct statements about common cache-writing strategies:#
Options
Pick every one that applies.
Show answer
The correct statements are 1, 2, and 4. Write-through synchronously writes to both cache and DB; write-behind writes to cache first and flushes to the DB asynchronously; and write-behind risks data loss if the cache crashes before flushing. Statement 3 is false because write-through has higher write latency (it waits for a synchronous DB write). Statement 5 is false because read-through is a reactive/lazy strategy triggered by cache misses, not a proactive pre-population technique.
Statements 1, 2, and 4 are correct. Write-through (Statement 1) synchronously writes to both the cache and the database on every write, keeping them consistent for written keys at the cost of higher write latency. Write-behind / write-back (Statement 2) writes to the cache first and flushes to the database asynchronously, improving write throughput. Write-behind (Statement 4) does risk data loss: if the cache node crashes before the asynchronous flush completes, those pending writes are lost.
Statement 3 is false. Write-through has higher write latency than write-behind because it must wait for both the cache write and the synchronous database write to complete before acknowledging success; write-behind returns as soon as the cache write is done.
Statement 5 is false. Read-through is a reactive (lazy) strategy: the cache intercepts a read, detects a miss, fetches the data from the database on behalf of the caller, populates the cache, and then returns the result. Proactive pre-population before any miss occurs describes cache warming (or cache priming), not read-through.
You are designing a globally distributed, multi-region active-active database (e.g., a shopping-cart service). Each region accepts both reads and writes and replicates asynchronously to the others. A user updates their cart from two different regions nearly simultaneously before either update has replicated.#
Options
Show answer
Vector clocks (or version vectors) with application-level or CRDT-based merging are the best fit. They capture causal relationships between writes across regions, allowing the system to detect true conflicts (concurrent writes with no causal ordering) and apply deterministic merge logic — without requiring cross-region coordination on the write path. LWW risks silent data loss due to clock skew, 2PC sacrifices availability, and read repair only acts on the read path.
In a multi-region active-active architecture, the core challenge with eventual consistency is handling concurrent writes to the same record from different regions. Vector clocks (or similar mechanisms like CRDTs) track causality across nodes so that conflicts can be detected and resolved rather than silently overwriting data. Last-Write-Wins (LWW) based solely on wall-clock time is unsafe because clocks can skew, making it possible to overwrite a newer write with an older one. Two-phase commit provides strong consistency but introduces cross-region coordination latency and is an availability risk — the opposite of what active-active targets. Read repair is a read-path technique and does not prevent write conflicts. Vector clocks remain the standard causality-tracking answer for active-active replication conflict detection.
A distributed key-value store experiences a network partition that splits its nodes into a majority group and a minority group. Arrange the following architectural decision steps in the correct order a system architect should reason through when handling this scenario, from first principle to final action:#
Put these in order
Show answer
The correct order is: Detect the partition → Identify majority vs. minority nodes → Determine CP vs. AP SLA → Enforce the policy (CP: reject minority writes outright; AP: accept all writes and track divergence) → Reconcile after healing (AP: conflict resolution; CP: minority re-syncs from the majority log). Identifying the majority/minority split must precede enforcement, and true CP systems reject — not queue — minority-side writes.
The question tests deep understanding of the CAP theorem applied to a concrete split-brain scenario. First, the system must detect the partition — without detection, no decision can be made. Second, nodes must identify majority vs. minority — this quorum assessment is a prerequisite to knowing which side to suppress or allow. Third, the architect must consult the system's SLA to decide between CP and AP behaviour. Fourth, the system enforces that decision: an AP system (e.g., Cassandra, DynamoDB) accepts writes on both sides and logs divergence; a true CP system (e.g., etcd, ZooKeeper — both Raft/Paxos-based) outright rejects writes that cannot achieve quorum on the minority side — queuing writes would defer the consistency decision and is an AP-leaning strategy, not CP. Finally, after healing, AP systems perform conflict resolution (LWW, vector clocks, CRDTs); CP systems simply re-sync minority nodes from the authoritative majority log, because those minority nodes accepted no writes and have nothing to replay.
A senior engineer is reviewing a system design document for a high-traffic e-commerce platform. Which of the following architectural statements are correct? Select all that apply.#
Options
Pick every one that applies.
Show answer
The correct statements are the ones about message queues, stateful services, and read replicas. A message queue like Kafka decouples producers and consumers and smooths traffic spikes. Stateful services require externalised or sharded state before horizontal scaling; just adding instances risks split-brain. Read replicas offload read traffic from the primary. Placing a CDN in front of the application tier is wrong because CDNs cache HTTP responses at the edge — they cannot introspect or cache arbitrary database query results.
This question probes several common but costly misconceptions in large-scale system design. (1) Adding a CDN for database query caching is FALSE — CDNs cache static or edge-cacheable HTTP responses, not raw database queries; that role belongs to an in-process or distributed cache like Redis. (2) A message queue (e.g., Kafka, SQS) decouples producers from consumers and naturally absorbs traffic spikes by acting as a buffer, so bursts don't overwhelm downstream services — TRUE. (3) Horizontal scaling of stateful services is NOT simply a matter of adding instances; state must be externalised or partitioned (sharding, consistent hashing) to avoid split-brain and inconsistency — FALSE. (4) Database read replicas reduce load on the primary by offloading read traffic — TRUE. All four require careful evaluation, making this a multi-select question.
You operate a multi-tenant SaaS platform backed by a horizontally sharded database. One shard becomes a persistent hot spot because a single mega-tenant drives 60 % of all writes. Which of the following strategies does NOT generally mitigate a write-heavy hot partition for that tenant?#
Options
Show answer
Adding read replicas does NOT mitigate a write-heavy hot partition. Read replicas offload read traffic to secondary copies, but every write still routes to the primary shard — so the write bottleneck is completely unchanged. Strategies that actually reduce write pressure include re-sharding with virtual nodes, write-behind/coalescing caches, and splitting the hot shard into finer-grained child shards.
All four techniques are valid strategies for avoiding hot partitions in high-throughput distributed systems. Consistent hashing with virtual nodes spreads load evenly across nodes and handles node churn gracefully. Write-behind caching absorbs burst writes before they hit the storage layer. Shard splitting (range sub-partitioning) breaks a hot shard into smaller shards to distribute the hot key range. However, simply adding read replicas only helps with read-heavy hot spots; it does NOT alleviate write hot spots because all writes must still go to the primary. If the hot partition is write-heavy — the most common production scenario — read replicas are ineffective. The question asks which strategy does NOT generally mitigate a write-skewed hot partition, making read replicas the correct answer.
You are designing a globally distributed database that must satisfy:#
Options
Show answer
The false statement is the claim that a Paxos/Raft-based geo-distributed consensus protocol cannot provide both strong consistency and high availability across multiple regions. In reality, Paxos or Raft deployed across geographically distinct failure domains is the canonical way to achieve exactly this combination, as demonstrated by systems like Google Spanner and CockroachDB. The real trade-off is latency: every acknowledged write incurs at least one cross-region round trip, so the cost of strong consistency and availability is higher write latency, not impossibility.
This question probes deep understanding of consensus, replication, and failure-domain design in globally distributed systems. (1) Synchronous cross-region replication is correct — it guarantees no data loss (RPO=0) but sacrifices availability during partition (violates the 'stays available' requirement). (2) Asynchronous replication with tunable staleness is correct — it keeps the system available but risks data loss on region failure, so it does NOT give RPO=0. (3) Multi-master active-active with CRDTs is correct — CRDTs provide availability and eventual consistency but do NOT guarantee strong consistency or zero divergence on conflicting writes. (4) Paxos/Raft-based geo-consensus IS the canonical approach to achieve both strong consistency and high availability across regions when paired with enough quorum members in distinct failure domains, but it trades off latency (write latency ≥ cross-region RTT). So the claim that Paxos/Raft 'cannot provide both' is FALSE — it is exactly what systems like Google Spanner and CockroachDB implement. The question asks which statement is FALSE, so the answer is the Paxos/Raft option.
A team is evolving a high-scale e-commerce order management system. Arrange the following architectural milestones in the recommended evolutionary order — from earliest (most foundational) to latest (most mature) — to maximize stability and minimize risk at each transition:#
Put these in order
Show answer
The recommended evolutionary order is: (1) Monolith, (2) Message queue / microservice decomposition, (3) Saga orchestration, (4) CQRS, (5) Event sourcing, (6) Geo-replication. Microservice decomposition immediately removes ACID guarantees, so saga orchestration must come next — before CQRS or event sourcing — as Richardson's Microservices Patterns argues. CQRS then prepares the write/read split that makes event sourcing lower-risk, and geo-replication is safe only once the event-sourced write model is stable.
The defensible canonical progression follows the 'concrete operational pain at each step' principle from Richardson's Microservices Patterns and Newman's Building Microservices: (1) Monolith — proves product-market fit with minimal operational complexity. (2) Message queue / microservice decomposition — synchronous bottlenecks and tight coupling become painful under load; introducing Kafka and drawing service boundaries enables independent deployment but immediately removes the monolith's ACID transaction guarantee. (3) Saga orchestration — as Richardson explicitly argues, the first architectural problem exposed by microservice decomposition is the loss of distributed ACID transactions; sagas (orchestration or choreography) must be introduced at this point to manage compensating transactions across service boundaries before any further persistence changes are layered on. (4) CQRS — once service boundaries are stable and transactions are safely coordinated by sagas, read and write workloads diverge sharply; CQRS separates the command model from read projections and is a lower-risk prerequisite for event sourcing because it can be applied to ordinary state-mutation services. (5) Event sourcing — building on the already-separated command model and saga-coordinated boundaries, mutable state is replaced with an immutable event log in a dedicated event store (e.g., EventStoreDB); CQRS projections already in place make this migration far less risky. Event sourcing does not require the message queue as a technical prerequisite, but sagas and CQRS being in place dramatically reduce the blast radius. (6) Geo-replication — only after the event-sourced architecture is stable does replicating the event log across regions become operationally safe and worthwhile; attempting geo-replication before the write model is settled multiplies operational risk.
Related interview questions
Job market
See system-design salaries and hiring demand from live job postings.
The other 40 questions
This page shows 10 and marks what you pick. That's as far as a page can go. A free account opens the other 40 and keeps every answer. What you miss comes back until it's right: after a day, then at longer gaps.
Free · the whole bank · 100 answers per 30 days, each marked with written feedback