System Design Interview Questions: Reliability, Failover, and SLOs
Reviewed by Mark Dickie · Last updated
6 questions on this page you can answer and see marked on the spot. Go to the first one
System design reliability is the discipline of keeping a distributed system correct and available when a server or network link fails. Interviewers want you to name the failure first, then pick a mechanism such as failover or retries with backoff, and tie that choice to an SLO. The questions below walk through that chain from failure mode to recovery target, so you can practice explaining each step out loud.
Which reliability topics come up in a System Design interview?
| Topic | What to be able to explain | Failure it addresses |
|---|---|---|
| Replication | Quorum reads and writes, and why R + W > N gives read-your-writes | Lost writes and stale reads after a leader crash |
| Failover | Heartbeat timeouts, leader election, and fencing tokens | Split brain, where two nodes both accept writes |
| Retries | Exponential backoff with jitter, and idempotency keys for unsafe calls | Retry storms that multiply an outage |
| Timeouts and circuit breakers | Per-hop deadlines and when the breaker opens | One slow dependency exhausting the thread pool |
| Load shedding | Returning 503 or 429 early, with priority queues for critical traffic | Overload that drops useful throughput to near zero |
| SLOs and error budgets | Choosing a measurable availability target and what budget it leaves for releases | Shipping risk with no agreed limit on unreliability |
How do you answer a reliability question step by step?
- Restate the failure you are designing for, such as a zone outage or a payment provider that starts timing out.
- Ask for the SLO, the RPO, and the RTO before you draw any boxes.
- Name the mechanism: the replication mode, the failover trigger, or the retry policy.
- Trace the failure window: what a client sees during failover, and whether a retried write can run twice.
- State the cost: extra replicas, cross-region latency, or duplicate work from retries.
Key facts
- Tarmac has 51 System Design interview questions on this topic, 10 of them on this page, at difficulty 2–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 US$182,500, across 915 job postings as of October 2026.
- Tarmac last reviewed these System Design interview questions on 2 November 2026.
At a glance
| Questions | 10 shown · 51 in the bank |
|---|---|
| Difficulty | 2–5 of 5 |
| Formats | True / false, Ordering, Fill in the blank, Design exercise, Multiple answer, Short answer, Flashcard, Multiple choice |
What you'll review
- availability
- failover
- observability sd
Practice questions
Try one before you open the answer. Pick an option and press Check; it's marked on the spot.
Adding redundant (parallel) replicas of a component always increases the overall availability of a system, regardless of how many replicas are added.#
Options
Show answer
False. Adding parallel replicas generally improves availability — the system fails only when all replicas fail — but it does not always help. Replicas sharing a common failure domain (same rack, power supply, or availability zone) are vulnerable to correlated failures that can take all of them down simultaneously. Beyond a few replicas, improvements also become negligibly small.
While adding parallel replicas generally improves availability because the component only fails if ALL replicas fail simultaneously, it does not help indefinitely. In practice, there are diminishing returns — the improvement becomes negligible after a few replicas. More importantly, if the replicas share a common failure domain (e.g., same power supply, same network switch, same availability zone), a correlated failure can bring all of them down at once, making redundancy ineffective. The statement is therefore false in general.
A production service has just experienced a full outage. Place the following incident-response steps in the correct order, from first to last, according to industry-standard SRE practice. Note: assume each step represents the primary focus of that phase, and that ongoing parallel activities (e.g., communication) have already begun at declaration.#
Put these in order
Show answer
The correct order is: (1) Detect/declare the incident and send an initial 'investigating' notification, (2) Mitigate the immediate impact, (3) Diagnose the root cause once the service is stabilising, (4) Fully resolve the incident and send an all-clear, (5) Conduct a blameless post-mortem. SRE practice prioritises stopping the outage first ('stop the bleeding'), with communication starting at declaration rather than as a later discrete step.
Standard SRE incident response is governed by 'stop the bleeding first,' but initial communication is embedded in the declaration step rather than treated as a separate later phase. Step 1: monitoring fires, an incident is declared, an incident commander is assigned, and an immediate 'we are investigating' notice goes out to stakeholders — communication begins here, not after mitigation. Step 2: the team applies the fastest available remediation (rollback, failover, traffic rerouting) to minimise MTTR; this is the primary focus until service is restored. Step 3: with the immediate impact contained and the service stabilising, the team pivots to diagnosing the root cause; earlier exploratory diagnosis may have run in parallel, but deep analysis becomes the primary focus only after mitigation succeeds. Step 4: once the root cause is understood and fully resolved, the incident is formally closed, the status page is updated to 'resolved', and a final all-clear is sent. Step 5: after full resolution, the team conducts a blameless post-mortem, documents contributing factors, and prioritises long-term corrective actions to prevent recurrence. By folding the initial stakeholder notification into the declaration step, the ordering avoids ambiguity about where communication sits relative to mitigation and diagnosis.
An availability target of _____ percent is referred to as "three nines" and permits roughly _____ of downtime per year.#
Show answer
An availability target of 99.9 percent is referred to as "three nines" and permits roughly 8.76 hours of downtime per year.
99.9% ('three nines') leaves 0.1% of a 8,760-hour year unavailable, which is about 8.76 hours per year. Each additional nine cuts allowed downtime by 10x — four nines (99.99%) is ~52 minutes/year, five nines (99.999%) is ~5 minutes/year. Knowing these conversions lets you sanity-check whether a proposed SLA is realistic given the architecture's redundancy and failover design.
You own an order-processing service backed by a single relational primary database in availability zone A. It has two streaming replicas: replica R1 in zone B (asynchronous replication, typical lag under 200 ms) and replica R2 in region 2 (asynchronous, typical lag 1-3 s). The service runs 20 stateless application instances across zones A and B. Today, if the primary becomes unreachable, an engineer manually promotes a replica and repoints the application, which takes about 40 minutes.#
Show answer
Detection: a monitor in zone B and a separate monitor in region 2 each probe the primary every 1 s with a short query and a 500 ms timeout. Failover is triggered only after 5 consecutive failures from both observers over about 5 s, so one dropped packet or a brief GC pause does not cause flapping. If observers disagree, the system does not fail over.
Selection and RPO: the orchestrator queries each replica for its last received and replayed log position and picks the most advanced one, which is normally R1 in zone B because lag is under 200 ms. We accept an RPO of up to a few seconds of acknowledged writes, the replication lag at the moment of failure. Synchronous replication to zone B would close that gap but adds a cross-zone round trip to every write and makes writes block when zone B is unhealthy, so we accept the asynchronous gap and document it for the business.
Fencing: before promotion, the orchestrator revokes the old primary's write credentials and sets a new lease epoch in the shared coordination store. If the old node is reachable, it is powered off (STONITH). The new primary only starts accepting writes after the old lease is confirmed expired or the old node is confirmed stopped, so two primaries can never accept writes at the same time. Any old node that returns is started in read-only mode and cannot obtain the write lease.
Redirection: applications connect to a stable writer endpoint served by a proxy with a short health-checked target, not a hard-coded host. On promotion the orchestrator atomically repoints that endpoint to R1. The proxy closes connections to the old node, and clients retry writes that failed with a connection error, using idempotency keys so a retry after an ambiguous commit does not duplicate an order. Using DNS alone would be too slow because of cached TTLs.
Verification and rejoin: the orchestrator runs a synthetic write and read, confirms R2 reattaches to the new primary, and checks that error rates return to baseline; total time target is under 2 minutes. The old primary is rebuilt as a replica of the new primary using a rewind operation, which discards any writes it made that never reached the new timeline, and those discarded writes are logged for reconciliation.
placeholder
Your team is designing a globally distributed payment service that must achieve 99.99% availability (≈52 minutes downtime/year). Which of the following architectural decisions directly contribute to hitting that target? Select all that apply.#
Options
Pick every one that applies.
Show answer
The decisions that directly contribute to 99.99% availability are: active-active multi-region deployment with DNS failover, circuit breakers to stop cascading failures, and idempotent async messaging to decouple callers from downstream outages. A single-region Redis primary introduces a SPOF, and a monolithic rolling-restart strategy does not inherently address the availability target.
Active-active multi-region failover eliminates single-region SPOFs and keeps the service up during region-level outages. Circuit breakers prevent a failing dependency from cascading and taking down the entire service. Idempotent async messaging decouples availability of the caller from the availability of downstream services, making partial outages invisible to end users. A single Redis primary is itself a SPOF—losing it loses sessions globally—so it hurts availability. A monolithic rolling restart can improve deploy uptime, but a monolith is not inherently more available than microservices and does not directly address the 99.99% target; it is neutral-to-negative for this goal.
A production database replica falls behind the primary and eventually becomes unavailable. Place the following automated recovery steps in the correct order that a well-designed high-availability system should execute them.#
Put these in order
Show answer
The correct order is: (1) health-check detects the replica as unhealthy, (2) the load balancer removes it from the read pool, (3) an alert fires and traffic is rerouted to healthy nodes, (4) automation provisions a replacement replica that begins replication catch-up, and (5) the replacement is re-added to the pool only after replication lag reaches near-zero. This sequence minimises user impact while ensuring no stale node is prematurely reintroduced.
The canonical sequence is: (1) detect failure via health-check, (2) immediately stop sending traffic to the failed node so user impact is minimised, (3) notify humans and redirect traffic to healthy capacity, (4) provision replacement and let it catch up, (5) only re-introduce the node after it is verified healthy and in sync. Skipping detection before routing removal would send requests to a broken node; re-introducing a lagging replica before confirming lag ≈ 0 can serve stale or inconsistent data.
You are reviewing the SLO definition for a critical checkout service. The SLO states: "P99 latency < 500 ms, measured over a rolling 30-day window."#
Show answer
The blind spot is that a pure latency percentile SLO measured over a rolling 30-day window can hide severe but short availability windows. For example, if the service goes completely down for 10 minutes, those failed requests typically generate errors (not high-latency responses) and may be excluded from the latency percentile calculation entirely—meaning P99 latency looks fine even though users experienced a total outage. Additionally, a 30-day window dilutes recent spikes with a large volume of historical good data, masking acute degradation. A concrete fix is to add a complementary error-rate / availability SLO (e.g., 'success rate ≥ 99.9% of requests over any 5-minute window'), measured as a separate indicator. This ensures that request failures—not just slow requests—count against the SLO budget, giving a complete picture of user-facing reliability.
A latency-only SLO is a classic availability blind spot: when the service is completely down, requests fail fast (often with a TCP reset or immediate 5xx) rather than timing out, so they record near-zero latency or are excluded from percentile calculations altogether. The P99 therefore looks healthy during an outage. The fix is to pair every latency SLO with an error-rate/availability SLO so that both slowness and unavailability are captured in the error budget.
In observability/SRE terms, what is an SLO and how does an error budget derive from it?#
Show answer
An SLO (Service Level Objective) is a target for a reliability metric over a window — e.g. 99.9% of requests succeed in 30 days. The error budget is the inverse: the allowed amount of failure — here 0.1% of requests (or, if the SLI is time-based uptime instead, ~43 minutes/month of unavailability; pick one SLI, don't equate the two). Teams spend the budget on risk — shipping features, running experiments — and when it is exhausted they freeze risky changes and prioritise reliability. It turns 'how reliable is reliable enough' into a measurable, negotiable contract instead of chasing unattainable 100%.
Error budgets reframe reliability as a resource to be managed rather than maximised, aligning product velocity and operational stability. They depend on good observability — the SLIs (latency, error rate, availability) must be measured from the user's perspective for the SLO and budget to mean anything.
A critical payment pipeline consists of three microservices called in strict sequence (A → B → C). Each request must pass through all three for the transaction to succeed. The individual availability SLAs are:#
Options
Show answer
The correct composite availability is approximately 99.84%, corresponding to roughly 70 minutes of downtime per month. When services are chained in series, their availabilities multiply: 0.9999 × 0.9995 × 0.9990 ≈ 0.9984. This means you lose nines relative to every individual component — the pipeline is less reliable than its weakest link. Neither the best SLA nor the worst SLA alone determines the composite; the product does.
This question tests deep knowledge of availability math and SLA composition. When services are chained sequentially, their availabilities multiply: 0.9999 × 0.9995 × 0.9990 = 0.9984005. Expressed as nines, 0.9984 ≈ 99.84%, which is between two-nines (99%) and three-nines (99.9%). The composite is only ~99.84% available, meaning roughly 1.4 hours of downtime per month — far less than any single component's SLA. This is a critical trap: engineers often assume the 'best' component's SLA dominates, but in series, the worst combination wins and you always lose nines.
You operate a 5-node Raft cluster (nodes N1–N5) used as the coordination backbone for a high-availability service. The cluster experiences a network partition that splits into two groups: {N1, N2} and {N3, N4, N5}. The current Raft leader is N1.#
Options
Pick every one that applies.
Show answer
The correct statements are B, C, and D. The majority partition {N3, N4, N5} can elect a new leader and commit entries. N1 cannot commit new entries without quorum, and may step down either proactively (via check-quorum in implementations like etcd) or upon receiving a higher-term message. Clients on the minority side requiring linearizable reads will get errors or unavailable responses since N1 cannot confirm leadership without quorum.
In a 5-node Raft cluster, a quorum of 3 nodes is required to commit any log entry. The claim that N1 can commit new entries and serve writes is wrong: N1 cannot commit new entries because it can only hear acknowledgments from N2 (2 nodes < quorum of 3); leadership alone does not grant commit authority. The claim that the {N3, N4, N5} partition elects a new leader is correct: {N3, N4, N5} form a majority of 3 and will hold an election after their election timers fire without receiving heartbeats from N1, electing a new leader capable of committing writes. The claim that N1 cannot commit new entries and may step down is correct: N1 cannot commit new entries because quorum is unreachable with only N2. The Raft paper (Figure 2) does not mandate a proactive step-down on replication failure, but many production implementations (e.g., etcd's check-quorum) do cause N1 to step down after an election timeout of missed quorum acknowledgments. The statement correctly reflects both behaviors — N1 cannot commit regardless, and the precise step-down timing is implementation-dependent. The claim that clients requiring linearizable reads receive unavailable responses is correct: clients requiring linearizable reads routed to N1 or N2 cannot be safely served; a correct implementation must return an error or unavailable response because N1 cannot confirm it holds current leadership without quorum, and serving reads without that confirmation would violate linearizability. The claim that the minority partition elects a new leader is wrong: {N1, N2} has only 2 nodes and cannot form a quorum of 3, so no leader election in that partition can succeed.
Related interview questions
Job market
See system-design salaries and hiring demand from live job postings.
The other 41 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 41 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 marked answers per 30 days · written feedback on the paid plan