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 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 initial triage, what signs would make you suspect you are looking at a security incident rather than a purely operational one, and what changes once you suspect that?
Sample Answer
Direct answer
Signs pointing toward a security incident rather than a purely operational one include unexplained privilege or permission changes, authentication failures or account lockouts clustering in an unusual pattern, traffic or data-access patterns that look like exfiltration rather than normal load, and any sign of unauthorized file or configuration changes that nobody on the team made. Once you suspect any of these, the biggest change is that you stop trying to 'just fix it': you preserve evidence instead of immediately remediating, and you loop in a security responder rather than continuing to triage it as a routine outage.
Structured elaboration
- Signals that lean operational: the timing correlates with a known deploy or infrastructure change, the failure pattern matches a resource exhaustion or a known dependency issue, and the behavior is explainable by something the team did on purpose.
- Signals that lean security: access or configuration changes nobody recognizes, authentication anomalies (a spike in failed logins, logins from unusual locations, tokens being used in ways that don't match normal patterns), data being read or moved in volumes or patterns that don't match normal usage, or any indicator resembling a known attack pattern (credential stuffing, privilege escalation, lateral movement).
- What changes once you suspect it. You stop applying your normal 'fix it fast' instincts on the affected system, because touching it (restarting a process, wiping a disk, rotating credentials without first documenting state) can destroy evidence a security investigation needs. You loop in whoever owns security response, and from that point the deep investigation, containment technique, and evidence-handling discipline live with that team rather than being improvised by whoever happened to be on call.
- Who to involve: the security on-call or incident response function, as early as suspicion arises, not after you've already tried to resolve it yourself.
Worked example
A service starts throwing errors and the on-call engineer initially assumes it's a bad deploy, since that's the most common cause. But checking recent deploys shows nothing changed, and instead they notice a spike in failed authentication attempts against an admin endpoint in the minutes before the errors started, followed by a permissions change on a service account that nobody on the team made. That combination (no correlated deploy, authentication anomaly, unexplained permission change) is the tell that this isn't a routine outage; the engineer stops attempting further remediation, preserves the current state (avoids restarting the affected service, which could wipe useful logs), and escalates to the security team rather than continuing to debug it as an availability problem.
Trade-offs and pitfalls
The main risk under pressure is dismissing security signals too quickly because restoring service feels more urgent, which can mean actively destroying evidence (restarting a compromised host, deleting suspicious files 'to clean up') before anyone with security expertise has looked at it. The opposite risk is over-escalating every anomaly as a security incident, which burns the security team's time and can create alert fatigue that makes real security incidents harder to distinguish from noise; the right calibration is a small, well-understood set of signals (like the ones above) rather than a vague sense that 'something feels off.'
You receive three alerts at once: a public API returning errors to a fifth of users, a payment service with a small but high-value failure rate, and a non-critical nightly batch job failing. Decide which you respond to first and in what order, and justify the ranking using impact, scope, and business criticality. Describe your first concrete action on the top-priority item.
Sample Answer
Direct answer
Of the three, I'd respond to the payment failures first, then the public API errors, then the batch job. The payment failures affect a small percentage but include high-value customers and touch money directly, which makes the per-incident cost disproportionately high even at low volume. The API errors affect a much larger share of users (a fifth), which makes them close behind despite lower per-user stakes. The batch job failing on non-critical reports has the lowest urgency because nothing customer-facing depends on it in the next few minutes.
Structured elaboration
Prioritization among simultaneous alerts should weigh three factors together, not any one alone:
- Impact per affected user. A failed payment is a much sharper failure than a slow page load; money and trust are on the line in a way that compounds if it isn't caught quickly.
- Scope. How many users or how much revenue is actually affected right now, not how loud the alert is. A noisy alert with low real impact should never outrank a quiet one with high impact.
- Business criticality and reversibility. Some failures get worse the longer they run (money moving incorrectly, data corrupting further); others are simply delayed (a report that's a few hours late is annoying but recoverable).
A good way to communicate this under pressure: state the ranking and the one-line reason out loud or in the incident channel immediately, then explicitly assign or acknowledge who is covering the lower-priority items so they aren't silently dropped, even while you focus on the top one.
Worked example
For the three alerts given: payment failures affecting 1% of transactions, including high-value customers, go first, because even a small volume of incorrect financial outcomes needs immediate first-action (typically confirming whether payments are failing safely, i.e., not charging without fulfilling, versus failing unsafely). Second, the public API 5xx errors affecting 20% of users across regions, because the sheer scope makes it the next highest-impact item even though each individual failure is less severe than a payment error. Third, the internal nightly batch job, which is deprioritized to 'someone will pick this up after the first two are stable' since it affects no external users right now. First concrete action on the payment issue: check whether failures are being safely rejected (no charge, clear error to the user) or unsafely processed (charge succeeds but order fails), since that distinction determines whether this needs an urgent stop-the-bleeding action or can tolerate a few more minutes of investigation.
Trade-offs and pitfalls
A common pitfall is anchoring on whichever alert is loudest or has the highest raw volume, rather than the one with the highest actual business impact; a batch job failing nightly can generate more page noise over time than a rare but severe payment issue. Another pitfall specific to this pattern: sometimes a single root cause produces what looks like several simultaneous alerts (a bad deploy triggering a flood of unrelated-looking alerts across a fleet), and prioritizing them as independent problems wastes time that a single fix would resolve; it's worth a quick check for a shared root cause before treating three alerts as three separate incidents. At a higher level, a manager juggling multiple simultaneous incidents across teams faces the same decision with an added dimension: whether the aggregate is severe enough to formally declare a larger, cross-team incident rather than three parallel smaller ones.
Two people disagree on how to respond to a bad deployment: roll it back, which loses a day of writes, or patch forward, which risks the underlying problem spreading further. Walk through how you would decide, what information you would gather first, and how you would explain the decision to the people affected by whichever data loss or risk you accept.
Sample Answer
Direct answer
The real question isn't which option is faster, it's which one is cheaper to be wrong about given what you currently know. I'd gather a quick read on how quantifiable and recoverable the rollback's data loss actually is, and how bounded or open-ended the patch's propagation risk is, before deciding, and I'd document the decision and get a second person's sign-off given the stakes.
Structured elaboration
- Quantify the rollback's cost. Is the lost day of data truly unrecoverable, or can some of it be reconstructed from logs, upstream systems, or replay? A rollback that loses genuinely unrecoverable customer data is a much bigger deal than one that loses data you can mostly reconstruct.
- Bound the patch's risk. Is 'risking propagation' a vague fear or a specific, boundable failure mode? If you can identify exactly what could go wrong and put a guard around it (a feature flag, a canary rollout of the patch itself), the risk becomes much more manageable than an open-ended 'we're not sure how bad this could get.'
- Consider reversibility of each option, not just its immediate outcome. A rollback is usually fast to reverse if it turns out to be wrong (roll forward again); a patch that goes wrong under time pressure is often harder to cleanly undo, especially if it's already started propagating.
- Decide who needs to sign off. For a decision with real data loss or real risk of making things worse, this shouldn't be a unilateral call under pressure; loop in whoever owns the data (for the rollback) or whoever understands the propagation risk best (for the patch), even if briefly.
- Document the decision and the reasoning, not just the action taken, so it can be explained afterward and revisited in the postmortem.
- Explain the decision honestly to the people who bear its cost. If you accept the rollback's data loss, tell the specific team or customers whose day of writes is gone what was lost and why, rather than a vague status update; if you accept the patch's propagation risk, tell whoever owns the systems it could spread to what you're watching for. People affected by a real cost should hear the reasoning, not just the outcome.
- Watch for a subtlety: your 'safe' default might not be safe. Sometimes the rollback mechanism itself is the risky part (a rollback tool that has its own failure modes, or that could trigger a different kind of cascading failure), so the instinct to always default to rollback as 'the safe choice' needs the same scrutiny as the riskier-looking option.
Worked example
A bad deployment has two disagreeing camps: roll back (losing a day of writes) or patch forward (risking the underlying bug spreading to more data). First, the team checks whether the day of writes can be reconstructed from an upstream event log; it turns out about 80% of it can be replayed after rollback, meaningfully reducing the real cost of that option. Second, they check whether the patch's propagation risk can be bounded; the bug only affects a specific, identifiable code path, so a scoped patch with a feature flag around just that path is possible rather than a full risky redeploy. Given both, the team chooses the scoped patch behind a flag, since the true data loss from rollback (even reduced by replay) is now higher-cost than a well-bounded patch, and they get a second engineer to review the patch's blast radius before shipping it, given the stakes.
Trade-offs and pitfalls
A common mistake is defaulting to rollback simply because it feels psychologically safer ('undo the thing we just did'), without actually quantifying whether the data loss is worse than the alternative risk; rollback is not automatically the conservative choice. Another mistake, at the opposite extreme, is defaulting to a quick patch because it avoids acknowledging any data loss, without honestly bounding how far the underlying problem could actually spread. A related edge case: sometimes the rollback path itself carries risk (a partial rollback failing midway, or a rollback tool triggering a separate cascading failure under load), so 'roll back, it's the safe option' deserves the same scrutiny as the alternative, not an automatic pass.
A dependency you do not control (a vendor or a third-party provider) starts failing intermittently, causing real customer impact. Decide between putting in a temporary mitigation yourself versus waiting for the vendor to fix it, and explain the criteria and risks behind that choice.
Sample Answer
Direct answer
My default is to build a temporary mitigation myself rather than wait, unless the vendor's ETA is both short and credible, because customer experience shouldn't depend on a timeline I don't control and can't verify. The key criteria are how reliable the vendor's own status communication has historically been, how cheap and low-risk a mitigation is to build, and whether building a mitigation might itself mask a vendor problem that needs to stay escalated.
Structured elaboration
- Assess the vendor's ETA credibility. Vendors are often optimistic about their own timelines; check their status page's track record, whether they've given a specific, committed time or a vague 'we're looking into it,' and weigh that against your own tolerance for continued impact.
- Assess mitigation cost and risk. A cheap, well-understood mitigation (a circuit breaker to fail fast instead of hanging, a cached fallback response, a degraded-but-functional mode) is usually worth building even for a short outage; a mitigation that requires new, untested code under time pressure carries its own risk and might not be worth it for a vendor issue expected to resolve in minutes.
- Don't let your mitigation hide a problem that still needs escalating. If you build a good enough fallback, make sure someone is still tracking and escalating the underlying vendor issue; a well-built mitigation can quietly make an important problem invisible to leadership or to the vendor relationship owner.
- Verify the vendor issue is what you think it is, not just assumed: check the vendor's own status page or reach out directly rather than purely inferring from your own symptoms, since 'looks like a vendor is down' and 'confirmed the vendor is down' warrant different confidence levels.
Worked example
A third-party payment processor starts intermittently failing, causing checkout errors for a subset of users. The vendor's status page shows 'investigating' with no ETA, and their historical incidents have often run longer than initially communicated. The team decides not to wait: they add a circuit breaker so failing calls fail fast rather than hanging and degrading the whole checkout flow, and enable a secondary, lower-priority payment path they'd already built for exactly this kind of situation. They keep the primary vendor issue actively tracked and continue monitoring the vendor's status page, so once the vendor recovers they can cleanly revert to the primary path, rather than letting the fallback silently become permanent.
Trade-offs and pitfalls
Building a mitigation under pressure risks shipping throwaway code that never gets properly cleaned up and becomes unplanned permanent technical debt; it's worth explicitly flagging a mitigation as temporary and following up after the incident. Waiting on a vendor whose communicated ETA turns out to be optimistic (vendors very often are) means your customers experience longer impact than necessary, purely because you trusted someone else's timeline you had no way to verify. The same underlying judgment applies whether the failing dependency is a payment processor, a cloud provider's specific service, or a network transit provider throttling traffic to a region: the calibration is always about ETA credibility versus mitigation cost, not about the specific vendor.
Unlock Full Question Bank
Get access to all 11 Incident Response and Management interview questions and detailed answers.
Sign in to ContinueJoin thousands of developers preparing for their dream job.