The Senior DevOps & SRE Production Interview Handbook: 970 Scenarios, Incident Runbooks, and Active Recall

📅 September 14, 2026 ⏱️ 12 min read 🏷️ DevOps · SRE · Kubernetes · Incident Response ✍️ Naveed Ahmed
Traditional DevOps interview preparation is broken. Candidates spend months memorizing dictionary definitions like "What is an AWS S3 bucket?" only to freeze when a Principal SRE asks: "Your production EKS cluster is throwing 502s during node group rolling upgrades while CoreDNS latency spikes. Walk me through your first 60 seconds of triage." Here is how to master senior engineering interview loops using real-world incident runbooks and active recall.

1. The Death of Academic Trivia in Senior Hiring

In 2026, tech leaders have largely retired trivial questions. Why? Because generative AI can answer "What is a Kubernetes Pod?" or "Explain the OSI model" in milliseconds. Reciting definitions no longer proves that you can be trusted with the keys to a multi-million-dollar production Kubernetes cluster.

High-bar engineering panels—from Series B hyper-growth startups to enterprise cloud teams—now use scenario-based incident fire drills. They want to observe:

2. The 4-Pillar Scenario Framework

To transition from reactive guesswork to structured senior-level responses, every scenario on our free companion platform—the DevOps & SRE Interview Hub—follows a disciplined 4-part mental model:

Pillar 1 🚨

Incident Context & Telemetry

Establish the production environment, symptoms, blast radius, error codes (e.g. Exit 137, 502 Gateway, Lock Deadlock), and customer impact.

🎯 Focus: What fails first? What alerts fire? What is the blast radius?
Pillar 2 🛠️

Diagnostic CLI Runbook

Demonstrate operational muscle memory by reciting exact CLI commands with precise flags to inspect logs, metrics, and socket connections.

💻 Tools: kubectl, ss -tulnp, aws elbv2, strace, dmesg, top
Pillar 3 🎙️

60-Second Elevator Pitch

A concise, high-impact verbal synthesis explaining root cause clearly without rambling, tailored for senior leads and engineering directors.

⏱️ Style: Crisp, authoritative, executive-ready explanation
Pillar 4 🛡️

"Gold Nuggets" & Prevention

The architectural hardening steps to ensure the outage never recurs: PodDisruptionBudgets, graceful hooks, cgroup limits, and synthetic alerts.

🔒 Outcome: Zero recurrence, automated guardrails, SLO protection

3. Four Battle-Tested Production Deep Dives

Let's look at four real-world failure drills drawn directly from the 970 scenarios in the handbook.

Deep Dive 1: Silent Kubernetes OOMKilled & Exit Code 137

The Incident: A mission-critical Node.js service is crashing every 20 minutes under peak load. Pods transition into CrashLoopBackOff. Application logs show normal HTTP 200 responses right up to the death with zero stack traces.

# 1. Inspect the last termination state and kernel exit code:
kubectl get pod <pod-name> -o jsonpath='{.status.containerStatuses[0].lastState.terminated}'
# Returns: {"exitCode": 137, "reason": "OOMKilled", "finishedAt": "..."}

# 2. Inspect node kernel dmesg for cgroup enforcement events:
kubectl describe node <node-name> | grep -E "MemoryPressure|OOMKilling"

# 3. Inspect working set memory vs container limit:
kubectl top pod <pod-name> --containers
🎙️ 60-Second Elevator Pitch
"Exit Code 137 is 128 + 9 (SIGKILL), dispatched directly by the Linux kernel Out-Of-Memory killer when container memory exceeds its limits.memory. Runtimes like Node.js or older Java versions frequently read total node memory rather than container cgroup boundaries unless explicitly passed --max-old-space-size. Our immediate mitigation is tuning the heap allocation flags to 75% of container memory limit. Our long-term prevention is profiling Prometheus container_memory_working_set_bytes and auditing memory leak trajectories."

Deep Dive 2: Deadlocked Terraform DynamoDB State Lock

The Incident: A CI runner was force-terminated midway through terraform apply. Subsequent pipeline runs fail with: Error: Error acquiring the state lock: ConditionalCheckFailedException.

# 1. Extract the Lock Info ID from error output:
# "Lock Info: ID: 52a60b94-8173-4f51-b0e2-7634f5c90829"

# 2. Verify that no active background runner or zombie process is running:
aws dynamodb get-item \
  --table-name terraform-locks \
  --key '{"LockID": {"S": "prod/terraform.tfstate-md5"}}'

# 3. Safely release the lock once verified:
terraform force-unlock 52a60b94-8173-4f51-b0e2-7634f5c90829
🎙️ 60-Second Elevator Pitch
"DynamoDB state locking prevents concurrent modifications that could corrupt the state file. We never issue force-unlock blindly. First, we confirm that the aborted CI runner process is truly dead in GitHub Actions or GitLab CI. Once verified, we execute terraform force-unlock <Lock-ID>. To harden this permanently, we implement trap signal handlers in CI runner entrypoints to clean up locks during job cancellations and configure pipeline timeouts."

Deep Dive 3: AWS NLB Cross-Zone 504 Gateway Timeouts

The Incident: An AWS Network Load Balancer fronting private Kubernetes worker nodes intermittently returns 504 Gateway Timeouts during uneven traffic surges across Availability Zones.

# 1. Verify Cross-Zone Load Balancing status on the NLB:
aws elbv2 describe-load-balancers --names <nlb-name> \
  --query "LoadBalancers[0].LoadBalancerAttributes[?Key=='load_balancing.cross_zone.enabled'].Value"

# 2. Check healthy target counts across AZs:
aws elbv2 describe-target-health --target-group-arn <tg-arn> \
  --query "TargetHealthDescriptions[].{Target:Target.Id,State:TargetHealth.State}"

# 3. Check client connection reset metrics in CloudWatch:
aws cloudwatch get-metric-data --metric-data-queries file://query-nlb-resets.json
🎙️ 60-Second Elevator Pitch
"By default, an NLB routes traffic only to targets located in the same AZ as the client IP lookup. If targets in AZ-A become saturated or undergo rolling restarts, the NLB will not failover to healthy pods in AZ-B unless Cross-Zone Load Balancing is explicitly enabled. Furthermore, NLBs drop idle TCP connections after 350 seconds without sending a TCP RST. If backend targets have longer keep-alive timeouts than the NLB, silent dropped connections result. Fixes include enabling cross-zone routing and aligning backend keepalive timeouts below 350 seconds."

Deep Dive 4: Linux Inode Exhaustion on Non-Full Disks

The Incident: Applications fail with No space left on device, yet df -h shows root and data volumes at only 38% utilization.

# 1. Check inode utilization across all mounted filesystems:
df -i

# 2. Locate the directory accumulating millions of zero-byte orphaned files:
find /var/spool /tmp /var/log -xdev -printf '%h\n' | sort | uniq -c | sort -k1 -n | tail -n 10

# 3. Safely delete excess orphaned files without overflowing argument list:
find /var/spool/postfix/maildrop -type f -delete
🎙️ 60-Second Elevator Pitch
"Every file system file requires an inode metadata table entry. If an application or unmonitored cron job generates millions of tiny temporary files or maildrop queue items, the filesystem exhausts available inodes long before physical disk blocks are filled. The diagnostic step is df -i followed by a find aggregation to isolate the offender. Preventative fixes include automated systemd tmpfiles cleanup timers and proactive Prometheus alerting on node_filesystem_files_free."

4. The 970-Scenario Multi-Domain Matrix

The DevOps & SRE Interview Hub spans 11 technical domains, categorizing production incidents based on how systems actually fail in enterprise architectures:

☸️ Kubernetes (170)

CrashLoopBackOff, CoreDNS starvation, CNI IP exhaustion, Node NotReady, PDBs, zero-downtime rolling updates.

☁️ AWS Cloud (125)

NLB 504 timeouts, STS assume role expiry, Aurora replica lag, S3 Gateway endpoint MTU drops, NAT saturation.

🏗️ Terraform & IaC (105)

DynamoDB state lock deadlocks, state drift, prevent_destroy lifecycles, targeted imports vs tainted re-creations.

🔄 CI/CD & Delivery (105)

ArgoCD sync loops, Docker multi-stage cache invalidation, runner secret leaks, concurrent pipeline race conditions.

🐳 Docker & Containers (100)

PID 1 zombie processes, SIGTERM vs SIGKILL graceful shutdown cascades, layer bloat, bridge subnet collisions.

🐧 Linux & Systems (85)

Inode exhaustion, high iowait, socket leaks (ss & lsof), dmesg panic triage, memory page flushing.

📊 Observability & SRE (80)

Prometheus cardinality explosions, Loki chunk delays, OpenTelemetry backpressure, Burn-rate SLO alerts.

💰 FinOps & Cost (81)

Idle NAT Gateways, GP2 to GP3 disk migration savings, Compute Savings Plans, untagged cloud resource leaks.

🌐 Networking (50)

Transit Gateway asymmetric routing, split-horizon Route 53 conflicts, TCP FIN/RST drops, MTU blackholes.

🔀 Git Workflows (50)

Detached HEAD in CI runners, rebase conflict storms, submodule desync, shallow clone depth optimizations.

🛡️ Security (45)

Container escape prevention, IAM least-privilege auditing, KMS key rotation, CVE triage with Trivy/Grype.

💎 Staff System Design (10)

Multi-region active-active disaster recovery, latency-based global routing, RPO/RTO compliance strategies.

5. The Power of Active Recall: Why Passive Reading Fails

Reading an interview answer is easy. Your brain nods along and feels a false sense of security. But when you are sitting in front of a hiring panel, your memory must retrieve that runbook under stress.

This is why we built Practice Mode directly into the Interview Hub:

Explore All 970 Production Scenarios Interactively

Test your incident response instincts across Kubernetes, AWS, Terraform, Docker, and Linux with diagnostic runbooks and active recall mode.

Launch DevOps Interview Hub (Free) ↗

Conclusion & Recommended Next Steps

The difference between a mid-level engineer who recites documentation and a Staff/Senior engineer who commands top-tier compensation is operational maturity. When you master how production systems fail and how to triage incidents under pressure, interview anxiety disappears.

  1. Daily Active Recall: Spend 15 minutes a day in Practice Mode on interview.naveedkumbhar.com.
  2. Hands-On Kubernetes Labs: Pair your theoretical prep with real minikube sandboxes and MCQ gates on the 24-Module Kubernetes Mastery Path.
  3. Formulate Your War Stories: Pick 3 real incidents from your own career and structure them using our 4-pillar model (Context, CLI Triage, 60s Pitch, Preventative Fix).
Naveed Ahmed

Naveed Ahmed (Kumbhar)

Senior DevOps & Cloud Engineer with 10+ years specializing in AWS, Kubernetes, Terraform, Platform Engineering, and SRE incident response.