Incident Response and Management Questions
The end-to-end operational lifecycle of a production incident: detection, triage, mitigation, resolution, and handoff. Covers response coordination, ownership of an active incident, and the mechanics of restoring service quickly. This is the generalist backbone topic that most operational roles are drilled on.
A data pipeline has been silently writing corrupted output for months before anyone noticed. As the incident lead, describe how you determine the exact time range and scope of the corruption, what you do to stop it from getting worse while you investigate, and how you decide between a rollback and a forward-fix once you understand the cause.
Sample Answer
Direct answer
When the problem is silently wrong output rather than downtime, the first job is bounding the blast radius in time and scope, not immediately trying to fix the pipeline. I'd find the last point where output was verifiably correct, stop the corruption from spreading further with the smallest possible change, and only then decide between rolling back to reconstruct the correct state or fixing forward and reprocessing.
Structured elaboration
- Determine the affected time window. Find the most recent known-good checkpoint by comparing current output against an independent source of truth (a snapshot, a source system, an upstream event log) and working backward until you find where they diverge. This is usually the hardest and most time-consuming part, because silent corruption by definition wasn't caught by any existing check.
- Stop it from getting worse. Pause or disable the specific step that's producing bad output (not necessarily the whole pipeline, if only one stage is at fault), so you stop adding more corrupted data while you investigate. This is a narrow, reversible action, not a fix.
- Decide rollback versus forward-fix. Roll back when you can cheaply reconstruct the correct state from an upstream source and downstream consumers haven't yet acted irreversibly on the bad data. Fix forward and reprocess when a rollback would lose legitimate data that arrived after the corruption started, or when downstream consumers have already consumed and acted on the bad output in ways that can't simply be undone by reverting the pipeline.
- A materially easier variant worth distinguishing: a pipeline job that fails outright and produces no output at all is a much simpler case than one that runs successfully and produces wrong output, because a failed job is self-evidently incomplete, while silently wrong output can go unnoticed for a long time and requires you to first prove where correctness broke down before you can fix anything.
- Communicate honestly, and only once scope is bounded. Resist announcing a scope estimate before you've actually confirmed it; an early guess that turns out to be wrong (in either direction) damages trust more than a slightly later but accurate one.
Worked example
A billing metrics pipeline has been silently under-reporting a subset of transactions for three months due to a filter condition introduced in a change that nobody flagged as a behavior change. To bound the window: compare monthly transaction counts from the pipeline's output against the upstream transaction log, and find the first month where the two diverge, narrowing the corruption window to a specific start date. To stop it from getting worse: disable the filter step (a single, reversible change) so new data stops being under-reported, without touching anything else in the pipeline. To decide rollback versus forward-fix: because the upstream transaction log still has the correct raw data for the entire affected window, a full historical backfill (reprocessing the affected months from the source) is both possible and safer than trying to patch the already-corrupted output in place, so the team chooses to reprocess rather than attempt a partial in-place correction.
Trade-offs and pitfalls
The most common mistake is rushing to fix forward before the blast radius is actually understood, which risks fixing the pipeline while leaving a chunk of already-corrupted historical data unaddressed. A close second is under-scoping the impact to avoid a harder conversation with stakeholders, announcing 'a few days affected' when the real window is months; this is worse for trust than taking longer to give an accurate number. A genuinely hard case is when downstream consumers have already made real-world decisions based on the bad data (a customer was billed incorrectly, or a business decision was made on a wrong metric); you can correct the data going forward, but you can't retroactively undo an action someone already took based on it, which is a different and harder remediation problem than a pure data-correctness fix. The same underlying challenge (bounding scope, deciding rollback vs. forward-fix, and being honest about what's still unknown) applies whether the corrupted data is a metric, a set of duplicate billing records from a faulty sync job, or a downstream executive dashboard that broke because an upstream team changed a schema without warning; the specific technical trigger varies, but the response shape does not.
Describe a moment where you had to choose between a quick workaround to restore service and a longer-term architectural fix. What factors did you weigh (risk, cost, customer impact, how much runway you had), and what did you actually decide?
Sample Answer
Direct answer
A strong answer names the specific factors weighed (how much risk the workaround carries, what it costs to maintain, how much customer impact continuing to be broken causes, and how much runway there actually was before a proper fix could ship) and is honest about what was actually decided, including if the workaround turned out to be the wrong call in hindsight.
Structured elaboration
- Risk. Does the quick workaround introduce new risk of its own (a hacky patch that could fail in an unexpected way) versus being a safe, well-understood stopgap?
- Cost. What does it cost to build and maintain the workaround, especially if 'temporary' fixes have a track record of becoming permanent at your organization?
- Customer impact of waiting. How bad is the status quo for customers while the long-term fix is being built, and does that urgency justify accepting the workaround's downsides?
- Runway. How much time is realistically available before the long-term fix ships, and is the workaround actually needed to bridge that gap or is the long-term fix closer than it first appears?
- A genuinely good answer names a real trade-off that was made, including a downside that was accepted, rather than presenting the decision as costless; a decision with no acknowledged downside usually means the story is being told too cleanly.
Worked example
An illustrative skeleton: 'We had a service that was intermittently timing out under load, and the real fix (redesigning how it handled a slow downstream dependency) was going to take a couple of weeks of actual engineering work. In the meantime, I put in a quick workaround: an aggressive timeout with a fallback response, which meant some requests got a slightly degraded but fast response instead of a slow failure. I weighed the risk (the fallback response was less precise, which had a real, measurable cost for a subset of users) against the customer impact of continuing to time out entirely, and decided the workaround was worth it given a two-week runway, but I made sure the fallback usage was itself monitored so we'd know exactly how often it was being hit and wouldn't lose track of it once the real fix shipped.'
Trade-offs and pitfalls
The main weakness is presenting the decision as obviously correct with no real cost, when a genuine trade-off almost always has an accepted downside worth naming honestly. A second pitfall is describing a 'temporary' fix that quietly became permanent without acknowledging that as a real outcome worth reflecting on; a candidate who's aware of that risk and actively guarded against it (through monitoring, a tracked follow-up, an explicit deadline) demonstrates more judgment than one who simply moved on. This decision-making pattern, weighing risk, cost, customer impact, and available runway, applies whether you're making the call directly as the engineer or explaining the same trade-off to someone else who has to decide, like a customer evaluating their own quick-fix-versus-rebuild choice.
A CPU spike is causing service timeouts for a subset of users. Distinguish containment, mitigation, and recovery as distinct phases of your response, and give one concrete action for each: something that limits how far the problem can spread, something that reduces the impact customers feel, and something that restores full functionality. Explain the reasoning and any safety checks behind each action.
Sample Answer
Direct answer
For a CPU spike causing timeouts: containment is isolating the affected host or throttling the traffic causing the spike so the problem stops spreading to healthy instances; mitigation is shedding non-critical load or scaling out so timeouts stop for most users even before you know the root cause; recovery is restoring the service to its normal capacity and confirming latency has genuinely returned to baseline, not just dropped once.
Structured elaboration
- Containment answers 'how do I stop this from getting worse.' For the CPU spike: pull the overloaded instance out of the load balancer pool so it stops receiving new traffic and can't drag healthy instances down with it (for example through a shared connection pool or retry storm). Safety check: confirm the load balancer has enough remaining healthy capacity before pulling the instance, or you've just made the outage worse for everyone else.
- Mitigation answers 'how do I reduce what customers feel right now,' independent of understanding the root cause yet. For the CPU spike: shed non-critical requests (defer background jobs, disable an expensive feature) or scale out horizontally to spread load. Safety check: shedding load has to be reversible and clearly logged, so nobody forgets a feature is disabled after the incident ends.
- Recovery answers 'is the service actually back to normal.' For the CPU spike: bring capacity back to its normal level, watch CPU and latency hold at baseline for a sustained window, and re-enable anything that was shed. Safety check: recovery isn't declared on a single good data point, since a transient dip can look like recovery for a minute and then relapse.
Worked example
Suppose CPU on the affected instance is pinned at 95% and p99 latency has risen from a normal 120ms to 4 seconds, causing client-side timeouts. Containment: the on-call engineer removes the instance from the load balancer pool, redistributing its traffic across the remaining healthy instances. Mitigation: because the remaining instances are now each carrying more load, they scale out from 4 to 6 instances and temporarily disable a CPU-heavy recommendation feature; CPU across the fleet drops to a more sustainable 60% and p99 latency returns to around 300ms, well below the timeout threshold even if not yet fully back to baseline. Recovery: once the root cause (an inefficient query introduced by a recent deploy) is identified and fixed, the team restores the original instance count, re-enables the recommendation feature, and watches p99 latency hold near 120ms for 30 minutes before declaring the incident resolved.
Trade-offs and pitfalls
Containment that's too aggressive (pulling too many instances, or isolating a component that other services still depend on) can turn a partial degradation into a full outage; containment that's too narrow (missing that the real blast radius includes a shared resource like a connection pool or cache) leaves the spread unaddressed. Mitigation can also mask the symptom in a way that delays real diagnosis: shedding load makes CPU look healthy again, but if nobody tracks that the shed feature is still disabled, the team can lose track of what 'fully recovered' actually means. The general pattern (same containment options: read-only mode, feature toggles, traffic shaping, or temporary scaling) applies just as well to a database write-outage as it does to a CPU spike; the phase you're in, not the specific technology, determines what action is appropriate.
A high-severity incident has caused a six-hour outage affecting customers. As the on-call engineer or service owner, describe your immediate response: how you contain and mitigate the impact, how you decide what to communicate and to whom while you are still investigating, and how you validate that the service is genuinely healthy again before standing down.
Sample Answer
Direct answer
My immediate response has three simultaneous threads: contain and mitigate the technical impact, communicate what I actually know (not what I'm guessing) on a steady cadence, and validate that the fix genuinely held before standing down. None of these wait for the others; a responder who only does the technical work and goes quiet for six hours has failed the incident just as much as one who only communicates and never fixes anything.
Structured elaboration
- Contain and mitigate. First isolate whatever is failing so it can't spread (pull a bad instance from rotation, disable a feature flag, freeze further changes), then apply the fastest safe action that reduces customer pain, which is very often a rollback to the last known-good state if a recent change correlates with the onset.
- Communicate on a cadence, not just when there's news. Post a first update as soon as you have a rough sense of scope, even if it's just 'investigating, will update in 15 minutes.' Keep to that cadence even when the honest update is 'still investigating,' because silence reads as worse than an uneventful update, and stakeholders making their own decisions (support teams, other engineering teams, leadership) need to know what you know, not what you hope.
- Validate real recovery before standing down. Don't declare resolved on the first green data point; watch the key metrics hold at baseline for a sustained window, and get explicit confirmation from anyone whose data, transactions, or workflows were affected before formally closing.
- Handle degraded evidence gracefully. Sometimes your own tooling is part of the problem: if the logging or monitoring pipeline itself is down, you're triaging with less information than normal. In that case fall back to direct, lower-level checks (host-level metrics, spot-checking a handful of real requests, canary user reports) and be more conservative about declaring anything resolved, since you're flying with reduced visibility.
- Some failures don't have a clean single-instance fix. A storage array with a degraded RAID rebuilding for 12 hours, or a network partition that's caused two database replicas to diverge (a split-brain), both require deliberately not rushing: forcing a failover mid-rebuild can worsen data loss, and blindly failing over during a split-brain risks writing to the wrong side of a diverged pair. The instinct to 'just fail over' has to be checked against whether failover itself is currently safe.
Worked example
A six-hour outage: a database failover during peak traffic silently sends a subset of write traffic to a replica that hadn't fully caught up, so some writes appear to succeed but are later lost on failback. Immediate response: the on-call engineer confirms the scope (which customers, which write types affected) within the first 20 minutes and posts a first update. Containment: they freeze automated failover so the system can't flip again mid-investigation. Mitigation: they route new writes exclusively to the confirmed-primary replica, restoring correct behavior for new activity even though the earlier lost writes aren't yet recovered. Communication: updates go out every 30 minutes to internal stakeholders and, once the customer-facing impact is confirmed, to affected customers, describing what's known and what's still being investigated, not speculating about root cause before it's confirmed. Recovery: after the fix, the team monitors write consistency across replicas for two hours (not two minutes) before declaring the incident resolved, given how deceptive an initially-healthy-looking replica had already proven to be.
Trade-offs and pitfalls
The most senior-discriminating mistake here is premature stand-down: declaring victory on the first healthy-looking check when the underlying problem (like replica divergence) can silently resurface. A second common mistake is communicating guesses as facts under pressure ('this was caused by X') before root cause is actually confirmed, which erodes trust when the real cause turns out to be different. A third is treating every outage the same way regardless of its actual shape: a clean single-service outage tolerates a fast rollback, while a data-divergence or hardware-degradation scenario often calls for patience and extra verification precisely when the instinct is to act fastest.
During a live incident, the root cause turns out to live in a shared service owned by a different team than yours. Describe how you would work with that team while the incident is still active: how you get the right people engaged quickly, and how you keep the response moving without waiting on a formal handoff.
Sample Answer
Direct answer
When the root cause lives in a service another team owns, my first move is getting the right person from that team engaged directly and fast, usually by paging their on-call rather than routing through a manager, and then working in parallel rather than blocking: I keep making progress on whatever I can control while they investigate their side.
Structured elaboration
- Get the right person, not just any person. Page the owning team's on-call directly if your investigation clearly points at their service, rather than escalating through management layers that add delay without adding expertise.
- Be specific about what you need from them. Rather than a vague 'something's wrong with your service,' share exactly what you've observed and why you believe the root cause is there, which lets them start from your findings instead of re-deriving them from scratch.
- Work in parallel, not sequentially. While the owning team investigates their side, continue anything you can independently do on your side (further mitigation, additional monitoring, keeping stakeholders updated), rather than sitting idle waiting for their update.
- Don't take over their system without context. Even if you technically have the access to poke at their service directly, doing so without their domain knowledge risks causing a second problem; the better move is close collaboration, not unilateral action on a system you don't own.
- Don't silently wait either. If you've reached out and haven't heard back within a reasonable window given the severity, escalate again rather than assuming they're already on it.
Worked example
An incident's root cause traces to a shared authentication service owned by a different team. Rather than waiting for a formal handoff process, the responder directly pages that team's on-call with specific findings ('auth requests from our service are timing out starting at 14:02, correlating with your deploy at 13:58'), which lets the other team's engineer start investigating their deploy immediately rather than starting from scratch. While waiting, the original responder adds a client-side retry with backoff on their own service as a partial mitigation, something within their own control, rather than being fully blocked on the other team's fix.
Trade-offs and pitfalls
The most common failure here is silently waiting on the other team without actively escalating, which can leave an incident stalled far longer than necessary if that team is slow to notice or prioritize it. The opposite failure, someone outside the owning team taking matters into their own hands and directly modifying a system they don't fully understand, risks introducing a second, unrelated incident on top of the first. The right balance is proactive, specific engagement paired with continuing to make progress on what you do control, rather than either extreme.
Unlock Full Question Bank
Get access to all 13 Incident Response and Management interview questions and detailed answers.
Sign in to ContinueJoin thousands of developers preparing for their dream job.