One of your services depends on a downstream that occasionally gets slow or fails. Walk me through how you'd keep that downstream's degradation from cascading into an outage of your own service — which resilience patterns you'd apply, and how they interact.

system-design · Staff-principal level · software-engineering

What the interviewer is really asking

Tests command of the core fault-isolation patterns — circuit breaker, bulkhead, timeouts, retry with backoff+jitter, graceful degradation — and crucially how they compose (retries inside the breaker, timeouts before bulkheads) rather than treating each as an independent checkbox.

What to say

What to avoid

Example answers

Strong: I'd contain the blast radius first: an aggressive per-call timeout so a slow downstream can't hold my threads indefinitely, and a bulkhead — an isolated, bounded connection/thread pool for that dependency — so its slowness can't starve my other code paths. The failure stays in its compartment instead of taking the whole service down.

Weak: I'd wrap the call in a retry loop so transient failures get retried a few times, and if it's still failing the request just errors out.

Want questions matched to your role? Paste a job title, job description, or CV and get a personalized set, or go Pro to unlock the full bank.