Senior Site Reliability Engineer - FAANG Interview Preparation Guide
This guide is based on general FAANG interview practices and may not reflect specific company procedures.
The interview process for Senior SRE at FAANG companies typically consists of 8 rounds spanning 4-6 weeks. It begins with recruiter screening and progresses through technical depth assessments (phone screen, system design, infrastructure automation), incident response and problem-solving scenarios, leadership evaluation, and finally hiring manager alignment. The process evaluates both technical depth and breadth, as well as leadership qualities, communication skills, and cultural fit. Senior-level candidates are expected to demonstrate expertise in distributed systems, cloud infrastructure, reliability engineering practices, and the ability to influence and mentor team members.
Interview Rounds
Recruiter Screening
What to Expect
This is your initial conversation with a recruiter or HR representative focused on validating your background, assessing communication skills, and ensuring mutual fit. The recruiter will verify your experience level, understand your motivation for the SRE role, discuss your career trajectory, and explain the interview process. This round also serves to gauge your enthusiasm for the company and role. Strong communication, clarity about your background, and genuine interest in the position are crucial for advancing.
Tips & Advice
Be concise and clear when describing your background. Focus on how your experience aligns with the SRE role—emphasize incidents you've managed, systems you've scaled, and reliability improvements you've driven. Ask thoughtful questions about the team, infrastructure, and reliability challenges. Demonstrate genuine interest in the company. Practice your elevator pitch: a 2-3 minute summary of your career, key accomplishments, and why you're pursuing this SRE role at this time. Highlight 2-3 significant wins: a major incident you resolved, a critical system you improved, or an automation project that had measurable impact.
Focus Topics
Motivation for SRE Role and Company Alignment
Clear articulation of why you're interested in this SRE role specifically, what aspects of reliability engineering excite you, and why this company resonates with you. For senior level, discuss your vision for reliability engineering, specific technical challenges you want to tackle, and how this role aligns with your career growth. Research the company's tech stack, known infrastructure challenges, and reliability initiatives to demonstrate genuine interest.
Practice Interview
Study Questions
Background and Relevant SRE Experience
A comprehensive overview of your career progression, highlighting projects and experiences directly relevant to SRE responsibilities. For senior level, focus on: managing production systems at scale, leading incident response efforts, designing monitoring and observability solutions, implementing infrastructure as code, and driving reliability improvements. Quantify your impact where possible (e.g., reduced incident response time by 40%, improved system uptime to 99.99%, managed infrastructure serving 10M+ requests/day).
Practice Interview
Study Questions
Communication and Problem-Solving Approach
Your ability to articulate complex technical concepts clearly and explain how you approach problem-solving. At senior level, recruiters look for engineers who can communicate technical depth to both technical and non-technical audiences, and who have a structured approach to tackling reliability challenges. Demonstrate your ability to break down complex problems, think holistically about systems, and explain your reasoning.
Practice Interview
Study Questions
Technical Phone Screen
What to Expect
This is your first technical interview, typically conducted via video call with a senior SRE or DevOps engineer. You'll be asked to solve practical troubleshooting problems, write scripts to automate tasks, and explain system-level concepts. The interviewer may present scenarios like 'your application is experiencing latency' or 'CPU is spiking on a production VM' and expect you to walk through diagnostic steps. You may be asked to write bash or Python scripts for automation tasks. The focus is on your practical knowledge of systems, scripting ability, and troubleshooting methodology. For senior level, expect deeper questions about performance optimization, advanced networking, and complex system interactions.
Tips & Advice
Approach each problem methodically. For troubleshooting scenarios, think out loud—explain what you'd check first, why, and how you'd escalate your investigation. Use a structured troubleshooting framework (e.g., OSI model for network issues, system resource hierarchy for performance issues). When writing code, ask clarifying questions about edge cases and requirements before diving in. For senior level, go beyond the obvious: discuss trade-offs, performance implications, and how your solution scales. Be comfortable with command-line tools (top, iostat, vmstat, netstat, tcpdump) and show familiarity with common profiling and debugging techniques. If you don't know something, say so and explain how you'd learn it. Senior engineers are expected to quickly debug unfamiliar systems.
Focus Topics
Performance Monitoring and Profiling
Ability to identify performance bottlenecks using profiling tools and metrics. This includes understanding CPU profiling, memory profiling, I/O profiling, and network profiling. Know tools like perf, flame graphs, APM (Application Performance Monitoring) tools, and how to interpret their output. At senior level, understand how to optimize based on profiling results, recognize common performance patterns (e.g., lock contention, GC issues, disk I/O saturation), and advise developers on optimization strategies.
Practice Interview
Study Questions
Network Fundamentals and Troubleshooting
Understanding of network protocols, network stack, and network-level troubleshooting. Knowledge of TCP/IP, DNS, HTTP/HTTPS, load balancing, networking tools (netstat, ss, tcpdump, traceroute), and common network issues. At senior level, understand network optimization, connection pooling, timeout handling, and how network issues manifest in applications. Be able to diagnose network latency, packet loss, DNS resolution issues, and firewall problems.
Practice Interview
Study Questions
Linux System Administration and Troubleshooting
Deep knowledge of Linux system administration, performance troubleshooting, and diagnostics. This includes understanding system resource management (CPU, memory, disk I/O), process management, file systems, permissions, and user management. At senior level, be prepared to troubleshoot complex performance issues using tools like perf, strace, ltrace, and understanding of kernel-level concepts. Understand how to read system metrics (/proc filesystem), use systemd effectively, manage services, and work with containers. Know how to diagnose and resolve common issues like memory leaks, resource exhaustion, and performance degradation.
Practice Interview
Study Questions
Bash/Shell Scripting and Automation
Practical ability to write production-quality bash scripts for automation, monitoring, and operational tasks. At senior level, you should be able to write scripts that handle error conditions, edge cases, and scale effectively. Understand advanced bash concepts like process substitution, file descriptors, signal handling, and working with large datasets efficiently. Know when to use bash versus a higher-level language like Python. Write scripts that are maintainable, well-documented, and follow best practices.
Practice Interview
Study Questions
System Design - Monitoring and Observability
What to Expect
This round evaluates your ability to design scalable, maintainable monitoring and observability systems. You'll be presented with a scenario like 'Design a monitoring system for a large-scale microservices platform' or 'How would you build an alerting system that prevents alert fatigue?' You're expected to think through architecture, data flows, tool selection, and trade-offs. For senior level, the interviewer expects you to discuss metrics collection at scale, designing dashboards and alerts effectively, logging architecture, distributed tracing, and how these components work together to provide observability. You should demonstrate understanding of SLOs/SLIs and how observability enables SLO monitoring. The interview is collaborative—the interviewer may ask follow-up questions to explore your thinking deeper.
Tips & Advice
Start by clarifying requirements: scale (QPS, data retention), SLO requirements, types of metrics and logs, audience (engineers, management), budget constraints. Propose a high-level architecture first, then dive into components. For senior level, discuss trade-offs between centralized vs. decentralized monitoring, push vs. pull metrics collection, sampling strategies for high-volume data, and cost optimization. Show familiarity with industry-standard tools (Prometheus, Grafana, ELK stack, Jaeger, DataDog) but focus on concepts rather than tool specifics. Discuss how to prevent alert fatigue through smart thresholding, alert correlation, and runbook-driven alerts. Address scalability: how does your system handle 1M metrics/sec? How do you store and query historical data efficiently? Think about both the happy path and failure scenarios—what happens if your monitoring system goes down? For senior level, be prepared to discuss SLO-driven monitoring, error budgets, and how observability informs reliability decisions.
Focus Topics
SLIs, SLOs, SLAs Definition and Implementation
Understanding Service Level Indicators (SLIs - what you measure), Service Level Objectives (SLOs - targets you set), and Service Level Agreements (SLAs - commitments to customers). At senior level, design SLOs that align with business requirements and user expectations. Choose meaningful SLIs like availability, latency, error rate. Understand how SLOs drive reliability decisions, allocation of engineering effort, and error budgets. Design monitoring to track SLI achievement. Address multi-tiered SLOs for different service tiers or customer segments.
Practice Interview
Study Questions
Metrics, Logs, and Traces Architecture
Design and implementation of the three pillars of observability. Metrics: numerical time-series data (CPU usage, request latency). Logs: detailed event records. Traces: request path across services. At senior level, understand how to collect, store, and query each efficiently at scale. Know the difference between push and pull models for metrics collection. Understand sampling strategies for high-volume data, retention policies, and cost optimization. Design data formats and schemas that are extensible and queryable. Address how these three pillars complement each other to provide comprehensive observability.
Practice Interview
Study Questions
Alert System Design and Alert Fatigue Management
Design of alerting systems that notify engineers only when action is needed, preventing alert fatigue. This includes threshold tuning, alert correlation, dynamic thresholding, and runbook-driven alerts. At senior level, understand how to design alert hierarchies, escalation policies, and on-call management. Discuss advanced techniques like anomaly detection and ML-based alerting. Address alert routing, grouping related alerts, and suppressing redundant alerts. Design for both real-time alerts and historical analysis of alert patterns.
Practice Interview
Study Questions
Monitoring System Scalability and Performance
Building monitoring systems that can handle massive scale without becoming a bottleneck or single point of failure. This includes designing for high-throughput ingestion (millions of metrics per second), efficient storage (data compression, time-series databases), and fast query performance. At senior level, understand partitioning strategies, caching layers, distributed aggregation, and how to scale horizontally. Design for high availability—monitoring should be more reliable than the systems it monitors. Consider self-healing capabilities and redundancy.
Practice Interview
Study Questions
System Design - Distributed Systems and Resilience
What to Expect
This round assesses your ability to design highly available, resilient distributed systems. You might be asked: 'Design a system that survives regional outages', 'How would you design a failover strategy for a critical service?', or 'Design a system for multi-region deployment.' For senior level, the interviewer expects deep understanding of failure modes, trade-offs between consistency and availability, replication strategies, and disaster recovery. You should discuss capacity planning, auto-scaling architectures, and how to handle cascading failures. The interview evaluates your system design thinking, knowledge of distributed systems concepts, and ability to make principled trade-offs. You'll need to think about data consistency, failure detection, and recovery mechanisms.
Tips & Advice
Start with clarity on requirements: uptime targets (99.9%, 99.99%, 99.999%), RTO (Recovery Time Objective), RPO (Recovery Point Objective), geographic scope (single region, multi-region), and consistency requirements. Propose a high-level architecture with clear components, then drill into specifics. For senior level, discuss multiple failure scenarios: data center outage, zone failure, cascading failures, distributed system partitions. Explain how your design handles each. Discuss replication strategies (active-active, active-passive), consistency models (eventual, strong), and data synchronization. Address monitoring and alerting for failover events. Discuss capacity planning: how do you handle peak traffic? How do you size for failover capacity? For senior level, be comfortable discussing trade-offs between cost (maintaining failover capacity is expensive), complexity, and reliability. Consider recovery procedures: how quickly can you detect failure? How quickly can you fail over? How do you validate the failover mechanism?
Focus Topics
Multi-region and Multi-cloud Resilience
Designing systems that work across multiple geographic regions or cloud providers. This addresses the highest reliability requirements and provides protection against provider-level failures. At senior level, understand data replication across regions, latency implications, consistency trade-offs, and cost of multi-region deployments. Design routing policies that direct traffic to healthy regions. Address compliance requirements that may mandate geographic distribution.
Practice Interview
Study Questions
Capacity Planning and Auto-Scaling Architecture
Designing systems that scale to handle peak load and grow with the business. This includes understanding traffic patterns, predicting capacity needs, and designing auto-scaling policies. At senior level, understand horizontal and vertical scaling trade-offs, stateless vs. stateful scaling, database scaling strategies. Design metrics-based scaling policies and understand how to avoid thrashing (scaling up and down too frequently). Consider cost implications: scaling adds cost but prevents expensive outages. Design graceful degradation when capacity limits are reached.
Practice Interview
Study Questions
High Availability and Fault Tolerance Design
Designing systems that continue operating even when components fail. This includes redundancy at multiple levels (data centers, availability zones, servers), health checking and failure detection, and automatic failover mechanisms. At senior level, understand mean time to failure (MTFF), mean time to recovery (MTTR), and how they combine to determine availability. Design health checks that accurately detect failures without false positives. Understand circuit breakers, bulkheads, and other patterns for preventing cascading failures. Design for graceful degradation—partial functionality is better than complete outage.
Practice Interview
Study Questions
Disaster Recovery and Failover Strategies
Planning and implementation for recovery from major failures like data center outages. This includes designing for multi-region deployment, data replication strategies, and automated failover. At senior level, understand active-active vs. active-passive architectures and their trade-offs. Design data consistency during failover (eventual consistency, write concerns). Understand DNS failover, load balancer behavior, and graceful degradation. Plan recovery procedures: detection time, failover time, validation. Document and test disaster recovery plans regularly.
Practice Interview
Study Questions
Incident Response and Problem-Solving
What to Expect
This round evaluates your incident management skills through a detailed case study. You'll be presented with a production incident scenario (e.g., 'Requests to your API are timing out, affecting 10% of traffic. Walk me through how you'd respond.') You're expected to think through incident detection, diagnosis, mitigation, root cause analysis, and prevention. For senior level, the interviewer wants to see your leadership during incidents, how you involve team members, communication strategies, and how you structure the investigation. You'll discuss incident management processes, postmortem practices, and how you convert incidents into learning and process improvements. The interview evaluates your problem-solving methodology, ability to make data-driven decisions under pressure, and leadership qualities.
Tips & Advice
Approach the incident systematically. Start with clarifying the problem: what's broken? How many users affected? Business impact? Then move through detection (how would you know?), diagnosis (what's the root cause?), and mitigation (how do you fix it now?). For senior level, demonstrate leadership: you'd likely be coordinating multiple people. Discuss communication strategies (status updates, stakeholder management). Explain your investigation process—use a structured approach (check logs, metrics, dependencies). Discuss trade-offs between quick fixes and proper solutions. Address root cause analysis: getting to the underlying issue, not just treating symptoms. Discuss prevention: how do you ensure this doesn't happen again? This might involve process changes, improved monitoring, improved testing, or architecture changes. Show humility and blamelessness—incidents happen, the goal is learning. For senior level, discuss how you'd facilitate a blameless postmortem and drive follow-up improvements.
Focus Topics
Chaos Engineering and Resilience Testing
Proactive testing of system resilience through controlled failure injection. This includes chaos engineering practices (Gremlin, Chaos Monkey style testing), game days, and failure simulations. At senior level, understand how to design chaos experiments that don't break production but test your understanding of failure modes. Design runbooks based on chaos testing results. Address test-induced outages versus actual outages—be careful not to test yourself into an incident.
Practice Interview
Study Questions
Error Budget Management and Release Velocity
Understanding error budgets—how much downtime is acceptable given SLO commitments—and using error budgets to balance reliability and feature velocity. At senior level, understand how to calculate error budgets, communicate them to product teams, and make principled decisions about feature releases versus stability work. If you have error budget remaining, you can push features. If you're running low, you need to focus on stability. Design processes for error budget-aware release planning.
Practice Interview
Study Questions
Incident Management and Response Process
Structure and process for responding to production incidents. This includes incident detection and alerting, initial triage, severity classification, escalation paths, and communication protocols. At senior level, you should understand how to organize the incident response: who should be involved, what information needs to flow to whom, and how to make decisions quickly. Understand SEV levels and how severity affects response protocols. Design incident management tools and processes. Address on-call rotation, escalation, and handoffs during long incidents.
Practice Interview
Study Questions
Root Cause Analysis and Postmortem Practices
Methodology for understanding why incidents happen and preventing recurrence. This includes techniques for root cause analysis (5 whys, fishbone diagrams), blameless postmortem culture, and follow-up action items. At senior level, understand how to facilitate postmortems effectively, encourage psychological safety so people speak openly, and convert incidents into learning. Design postmortem templates and tracking systems. Understand how to balance quick fixes with long-term improvements. Address post-mortem fatigue—don't require postmortems for every small issue.
Practice Interview
Study Questions
Infrastructure Automation and Deployment
What to Expect
This round evaluates your ability to design and implement infrastructure automation, deployment pipelines, and configuration management at scale. You might be asked: 'Design a deployment system for a microservices platform with thousands of services', 'How would you implement infrastructure as code for a complex environment?', or 'Design a canary deployment strategy.' For senior level, the interviewer expects you to think through the full lifecycle: from code commit to production, including testing, rollout strategies, rollback mechanisms, and monitoring. You should discuss infrastructure as code tools (Terraform, CloudFormation, Ansible), container orchestration (Kubernetes), and CI/CD best practices. The interview evaluates your ability to reduce toil through automation and ensure safe, reliable deployments.
Tips & Advice
Start by understanding requirements: scale (number of services, deployment frequency), environment diversity (dev, staging, prod), team size, and risk tolerance. Propose a high-level architecture, then drill into specific components. For senior level, discuss infrastructure as code: how do you version control infrastructure? How do you test infrastructure changes? How do you prevent configuration drift? Discuss deployment strategies: blue-green, canary, rolling. What are the trade-offs? How do you ensure safe rollouts? For senior level, think about orchestration: how do you coordinate deployments across many systems? How do you handle dependencies? How do you handle rollbacks? Discuss CI/CD pipelines: stages (build, test, deploy), gates for quality, approvals for production. Address both application deployment and infrastructure provisioning. Discuss monitoring and observability of the deployment process itself. How do you know if a deployment is successful?
Focus Topics
Configuration Management and Change Control
Managing configuration across hundreds or thousands of systems and coordinating safe changes. This includes configuration versioning, deployment of configuration changes, validation, and rollback. At senior level, understand how to implement consistent configuration across environments while allowing environment-specific customization. Design change control processes that balance safety with speed. Address secrets management: how do you handle API keys, database credentials, certificates securely? Design for compliance and auditability.
Practice Interview
Study Questions
Infrastructure as Code (IaC) Implementation
Using code to define and manage infrastructure, enabling version control, reproducibility, and automation. This includes IaC tools (Terraform, CloudFormation, ARM templates) and practices for managing infrastructure through code. At senior level, understand how to organize IaC for large-scale environments, handle state management (Terraform state), manage secrets, and coordinate changes across teams. Design for modularity and reusability. Address infrastructure testing, validation, and rollback strategies. Understand idempotency—running the same code multiple times should produce the same result. Design for disaster recovery: infrastructure should be reproducible from code.
Practice Interview
Study Questions
CI/CD Pipeline Design and Deployment Automation
Designing end-to-end pipelines from code commit to production. This includes build automation, testing stages, artifact management, deployment orchestration, and validation. At senior level, understand progressive deployment strategies (canary, blue-green, rolling) and how to implement them safely. Design for fast feedback: how quickly can developers know if their change is safe? Design for rollback: can you quickly revert a bad deployment? Address deployment frequency: some companies deploy hundreds of times per day. How do you maintain quality at that frequency? Discuss monitoring of the deployment process and automated validation.
Practice Interview
Study Questions
Container Orchestration and Kubernetes
Managing containerized applications at scale using orchestration platforms, primarily Kubernetes. This includes pod management, resource management, networking, storage, configuration, and secrets management. At senior level, understand how to design Kubernetes clusters for production (multi-zone, self-healing, autoscaling). Design for security, resource efficiency, and observability. Address advanced topics: network policies, storage classes, stateful sets, and custom resource definitions. Understand the trade-offs between managed Kubernetes services and self-managed clusters.
Practice Interview
Study Questions
Leadership, Mentorship, and Collaboration
What to Expect
This round assesses your leadership qualities, mentoring ability, and cross-functional collaboration skills. For a senior-level role, FAANG companies expect you to influence and mentor team members, drive reliability improvements across teams, and facilitate postmortems. You'll be asked behavioral questions about leading through incident response, mentoring junior engineers, managing conflicts or disagreements, and driving process improvements. For senior level, the interviewer wants to understand your leadership philosophy, how you build culture of reliability, and how you influence without direct authority. You should demonstrate emotional intelligence, communication skills, and the ability to work effectively with people from different backgrounds and expertise.
Tips & Advice
Use the STAR method (Situation, Task, Action, Result) for behavioral questions. Have specific examples from your career of mentoring team members, driving projects, managing conflicts, and making difficult decisions. For senior level, focus on leadership scenarios: leading incident response, coordinating across teams with different priorities, advocating for reliability when facing competing pressures. Discuss your approach to building culture: how do you create psychological safety? How do you encourage blamelessness? How do you ensure learning from incidents? Discuss your influence: have you changed processes or architectural decisions? How did you drive adoption? For senior level, emphasize systems thinking—you understand how individual actions affect the broader organization. Show empathy and understanding of different perspectives (developers want to ship features, management wants cost control). Discuss your approach to developing junior team members—specific examples of someone you've mentored and how they've grown.
Focus Topics
Reliability Culture and Process Improvement
Your approach to building culture where reliability is valued and continuously improved. At senior level, design and advocate for reliability practices: blameless postmortems, error budgets, SLO-driven development, infrastructure standards. Champion best practices. Drive adoption of new processes or tools. Address how you help the organization learn from incidents and near-misses. Discuss your approach to preventing toil burnout through automation and sensible on-call schedules.
Practice Interview
Study Questions
Cross-functional Collaboration and Influence
Working effectively with product, development, security, and other teams despite having different priorities and constraints. At senior level, you influence without direct authority, building consensus around reliability initiatives. Understand different perspectives: developers prioritize features, product prioritizes user value, security prioritizes protection. Find win-win solutions. Advocate for reliability when it's in tension with other priorities, while understanding business constraints. Build relationships across the organization.
Practice Interview
Study Questions
Incident Leadership and Blameless Postmortems
Your leadership during incidents and in postmortem sessions. At senior level, you should be comfortable stepping into incident commander role or supporting the commander. This includes staying calm, coordinating team members, making decisions with incomplete information, and communicating clearly to stakeholders. For postmortems, facilitate discussions that uncover root causes without blame, ensure all perspectives are heard, and drive follow-up improvements. Address how you balance speed (fixing the immediate issue) with learning (understanding why it happened).
Practice Interview
Study Questions
Team Mentorship and Knowledge Sharing
Your approach to developing junior engineers and sharing knowledge across the team. At senior level, you're expected to actively mentor team members, helping them grow technically and professionally. This includes identifying learning opportunities, providing constructive feedback, and creating psychological safety for learning from failures. Design mechanisms for knowledge sharing: pair programming sessions, brown bag talks, documentation, mentoring relationships. Address how you help junior engineers understand complex systems and build troubleshooting skills.
Practice Interview
Study Questions
Hiring Manager Round
What to Expect
This final round is with the hiring manager—the person who would be your direct supervisor. The conversation is more open-ended and covers both technical and fit topics. The hiring manager wants to understand your technical depth, your approach to work, your career aspirations, and whether you'd be a good fit for the team and company culture. This is your opportunity to ask questions about the role, team, and company. You should expect some technical questions but the focus is more on fit, growth potential, and your interest in the role. For senior level, the hiring manager cares about your vision for reliability and your ability to lead initiatives.
Tips & Advice
This is a two-way conversation. Come prepared with thoughtful questions about the team, the role, current challenges, and opportunities for impact. Ask about the team structure, on-call practices, and how reliability initiatives are prioritized. The hiring manager wants to understand: Are you genuinely interested in this role? Do you understand the company and team? Can you make an impact here? For senior level, discuss your vision for what you'd want to accomplish in the role. What technical projects excite you? What aspects of reliability engineering do you find most rewarding? Be authentic—this is someone you might work with closely. Discuss your career goals: do you see yourself growing into a leadership role? Do you want to go deeper technically (Staff engineer path)? Make sure your goals align with the opportunity. Show interest in company mission and values. Finally, remember that hiring is a two-way process. This is your chance to assess whether this opportunity is right for you.
Focus Topics
Alignment with Team Values and Mission
Your interest in the company and alignment with team values. For senior level, you should understand what matters to the team and company—whether it's customer obsession, operational excellence, innovation, sustainability, or other principles. Show how your values align. Discuss why this specific role and team interest you beyond compensation.
Practice Interview
Study Questions
Ownership and Initiative
Your approach to taking ownership of problems, driving projects to completion, and going beyond requirements. At senior level, ownership extends beyond individual tasks to broader initiatives. Share examples of projects you've owned end-to-end—identifying the problem, designing the solution, getting buy-in, implementing, and measuring impact. Show how you think about problems broadly, not just the narrow technical scope.
Practice Interview
Study Questions
Technical Depth and System Design Thinking
Demonstration of deep technical expertise and ability to think through complex system design problems. The hiring manager may ask technical questions to assess your current level and ensure you'll be challenged by the role. For senior level, the manager cares that you think systemically, understand trade-offs, and can make principled technical decisions. They want to know you can grow into more complex problems and mentor others. Be prepared to discuss your past projects, technical decisions you've made, and what you've learned.
Practice Interview
Study Questions
Career Growth and Aspirations
Your career trajectory, where you've come from, and where you're headed. At senior level, have a clear vision of your next growth steps. Do you want to become a Staff engineer (deeper technical expertise)? Move toward management? Specialize in a particular domain? Your career goals don't need to match perfectly with this role, but they should be compatible. A person who wants to become an engineering manager should see a path in the organization.
Practice Interview
Study Questions
Frequently Asked Site Reliability Engineer (SRE) Interview Questions
Tell me about a specific production incident you triaged hands-on. Walk through the actual monitoring signals, tools, and commands you used to narrow down the problem, the immediate fix you applied, and what you changed afterward to prevent a repeat.
Sample Answer
Direct answer
This question is looking for hands-on technical fluency under pressure, not just process: the specific signals you checked, the specific tools and commands you actually ran, and how those concrete steps led to the fix, told as a real, technically credible narrative rather than a high-level summary.
Structured elaboration
What separates a strong answer here from a more general first-responder story is the technical texture:
- Monitoring and observability signals. Name the actual dashboards, metrics, or logs you looked at first and why those were the right starting point given the symptom.
- Tools and commands. Be specific about what you actually ran (checking pod status and recent events in a container orchestrator, tailing logs for a specific service, checking resource utilization on a host) and what each step told you, not just that you 'checked the logs.'
- The diagnostic chain. Walk through how one check led to the next: what you ruled out, what pointed you toward the real cause, and where you might have gone down a wrong path before correcting.
- Immediate remediation. What specific action restored service, and why that was the right call given what you'd found (a restart, a rollback, a manual failover, a config change), including any manual verification you did to confirm it actually worked rather than just assuming.
- Long-term change. A concrete artifact that came out of it: a new alert, a runbook entry, an automated check, something that reduces reliance on someone remembering the right diagnostic steps next time.
Worked example
An illustrative skeleton: 'I got paged for a service that had stopped responding to health checks. I checked our container orchestrator's dashboard and saw several pods in a crash-loop state, so I described one of the pods to see recent events and found repeated out-of-memory kills. I tailed the pod's logs right before each restart and saw a specific request pattern that correlated with memory spikes, which pointed at a recent code change rather than an infrastructure problem. I rolled back that deploy, watched the pods stabilize and stop crash-looping over the next several minutes, and manually verified a few real requests were succeeding before considering it resolved. Afterward, I added a memory-usage alert tied to that service specifically, since the existing alerting hadn't caught the gradual climb before the crash loop started.'
Trade-offs and pitfalls
The main weakness in answers here is staying at too high a level ('I looked into the logs and found the issue') without the concrete tool-level detail that actually demonstrates hands-on competence; an interviewer asking this specific version of the question is usually trying to distinguish someone who directs others during an incident from someone who can personally do the diagnostic work. A second pitfall is describing a diagnostic path that sounds suspiciously clean and linear; a credible answer often includes at least one wrong turn or ruled-out hypothesis, since that's how real diagnosis actually goes, and its total absence can read as rehearsed rather than genuine.
You're trying to get a skeptical application team to actually adopt infrastructure-as-code and GitOps instead of their current workflow. How would you approach the rollout: what's the minimal first win, what metrics would prove it's working, and how do you handle the objections you know are coming?
Sample Answer
Direct answer
Start with one low-risk, high-visibility pilot rather than a mandate, ship a minimal GitOps loop for it in two to four weeks, and let measured deployment-lead-time and MTTR improvements make the case to the next team instead of a slide deck. The real objections (loss of control, upfront cost, "what if Git is down") get answered by keeping the pilot reversible: manual reconcile (someone approves each change before it's applied) before auto-sync (the operator applies every git change immediately, with no human step), PR review on every change, and a documented rollback path from day one.
Rollout plan
- Kickoff: a one to two hour session to align on the team's actual pain points (manual rollbacks, inconsistent environments, incidents tied to drift) and agree success metrics up front, before any tooling decisions.
- Minimal viable automation (2-4 weeks): pick a low-risk service (non-customer-facing, or a single-node internal API) as the pilot. Stand up a small repo with declarative infra (Terraform, or Helm/Kustomize for Kubernetes) and a GitOps pipeline (Flux or Argo CD) that stores manifests in git with PR-based changes, runs automated plan/lint checks, and deploys on merge with signed commits. Hand the team a one-page runbook and pair with them for the first onboarding session.
- Pilot metrics (baseline and after 4-8 weeks): deployment lead time (code to prod), change failure rate and MTTR, frequency of environment drift incidents, time spent on manual ops per sprint, and number of rollback events plus time to rollback.
- Risk mitigation: start the GitOps operator in read-only, manual-reconcile mode before enabling auto-sync; run it with least-privilege IAM scoped to its namespace; keep automated backups and tested restores for any stateful resource; and keep the rollback procedure to "revert the git commit," nothing more exotic.
Scaling across teams
Build a reusable starter repo and bootstrap script so a new team gets a GitOps repo, CI checks, and RBAC defaults without reinventing them. Run office hours and a documented playbook (patterns for secrets, multi-environment promotion, tagging) instead of a top-down mandate. Offer templated policy-as-code checks and a shared module library so each new team starts from something already proven, and run short, hands-on migration sprints per team, measuring the same baseline metrics each time to replicate the pilot's result rather than assume it generalizes.
Worked example
Situation: a skeptical application team is hesitant to move from manual deployment and ad hoc infra changes to IaC and GitOps because they fear disruption, loss of control, and upfront work.
Action: the team's most-complained-about service (frequent manual rollbacks) is picked as the pilot, not their most critical one. A small GitOps repo is stood up with read-only reconcile mode, PR-based changes, and a one-hour paired onboarding session. Baseline metrics are captured before the change: deployment lead time, change failure rate, and time spent on manual ops that sprint.
Result: after four weeks in manual-reconcile mode, the team is comfortable enough to flip to auto-sync. The pilot's before/after numbers (not vanity counts of how many GitOps deploys happened, but the same lead-time and MTTR numbers the team already tracked) become the evidence used to onboard the next team, along with direct feedback from the pilot team's engineers about easier peer review and reproducibility.
Addressing common objections
- "Too much upfront work": the minimal viable automation reduces immediate toil and produces a reusable template; the platform/SRE side does the initial scaffold, not the app team.
- "Loss of control, fear of automation mistakes": keep the initial mode manual-reconcile, insist on PR review, and make rollback a single git revert.
- "Security or compliance concerns": integrate secrets management, policy-as-code, and audit logs into the GitOps flow from the pilot, not bolted on later.
- "We'll be blocked if git is down": ensure git/CI redundancy and keep a documented manual runbook as a fallback for genuine emergencies.
Trade-offs & pitfalls
- Picking the wrong pilot (something too central, too complex, or too political) burns the one credibility shot this approach depends on; a service with real stakes but low blast radius is worth the extra time spent choosing it.
- Vanity metrics ("we deployed via GitOps ten times") do not move skeptics. The metrics that land are the ones the team already complains about, measured the same way before and after.
- Automating too fast, meaning full auto-sync from day one, removes the safety valve that makes a skeptical team comfortable. Earn auto-sync by first proving the manual-reconcile version is trustworthy.
You need to collect telemetry from a hybrid environment where some hosts sit behind corporate firewalls with no inbound access. Evaluate push, pull, and proxy/relay collection designs and recommend a secure architecture, including service discovery and how you'd authenticate agents (for example mutual TLS) across NAT and firewall boundaries.
Sample Answer
Direct answer
Pull doesn't work here: the collector can't open an inbound connection through a corporate firewall with no inbound access, so this comes down to push versus a local relay. Use agent-initiated push, authenticated with mutual TLS, and add a local relay inside networks where many hosts share one restrictive egress path, so the relay makes the one outbound connection to the central collector and the individual hosts only ever talk to something already inside their own network.
Structured elaboration
| Model | Works behind inbound-blocked firewalls? | Where auth/complexity lives | Best for |
|---|---|---|---|
| Pull (collector initiates) | No, needs inbound access or a VPN hole punched | Collector-side | Networks you fully control, no NAT |
| Push (agent initiates) | Yes, only needs outbound | Agent-side, per-host credentials | Small to medium fleets, direct internet egress allowed |
| Proxy/relay (agent pushes to local relay, relay pushes out) | Yes, and centralizes the one outbound connection | Relay-side | Large fleets behind one restrictive egress point |
Recommended architecture: agents push. Where a corporate network has many hosts behind one firewall, deploy a relay inside that network; agents push to the relay over the local network, and the relay makes the single outbound mTLS connection to the central ingest tier. Where no relay is present, agents push directly to a regional ingest endpoint.
Authentication: mutual TLS with short-lived certificates (issued via an internal PKI or an SPIFFE/SPIRE-style workload identity, an open standard that automatically issues short-lived cryptographic identities to services and hosts), not long-lived static tokens. Each agent proves its identity on every connection; the collector or relay validates the certificate chain and maps the identity to a tenant/authorization scope before accepting data.
Service discovery: agents resolve a priority list, local relay first (via internal DNS SRV records), falling back to a regional ingest load balancer if no relay is configured. Relays themselves register with a central control plane over their own mTLS connection so the platform knows which relays are healthy.
Traversing NAT and firewalls in practice: rely on standard outbound HTTPS (443) so no firewall exception is needed beyond what's already open for normal internet-bound traffic; use HTTP/2 or a persistent WebSocket-style multiplexed stream so one connection carries many events instead of opening a new TLS handshake per batch, which also reduces the load a busy proxy has to inspect.
flowchart LR
H1[Host behind firewall] -- push, mTLS --> R[Local relay]
H2[Host behind firewall] -- push, mTLS --> R
R -- single outbound, mTLS --> LB[Regional ingest LB]
H3[Host, direct egress allowed] -- push, mTLS --> LB
LB --> Q[(Durable ingest queue)]
Worked example
Sizing one relay for a corporate network segment. Assume N=5,000 agents behind one relay, each pushing a batch every 15 seconds, averaging 50KB/batch:
batchRatePerSec=155,000=333.3 batches/sec throughput=333.3×50KB=16,667 KB/sConverting to megabits/sec (×8 bits, ÷1000):
throughputMbps=1,00016,667×8≈133.3 MbpsAgainst an illustrative 1 Gbps relay uplink:
133.31,000=7.5× headroomOne relay comfortably serves 5,000 agents at this batch rate with 7.5x headroom before the uplink itself becomes the bottleneck, which is the concrete answer to "does one relay per corporate segment suffice or do we need to shard relays" for a segment this size.
Certificate rotation load. With 24-hour certificate lifetimes for those 5,000 agents:
renewalsPerDay=5,000×2424=5,000/day≈0.058/sec averageTightening to 1-hour lifetimes for a higher-security posture:
renewalsPerDay=5,000×124=120,000/day≈1.39/sec averageGoing from 24-hour to 1-hour certificate lifetimes is a 24x increase in renewal traffic against the PKI/issuance service, still under 1.4 renewals/sec average for this fleet size, which is the kind of load a normal internal CA handles without needing dedicated scaling, but it's worth stating the number rather than assuming "short-lived certs are free."
Trade-offs & pitfalls
Common wrong turns: defaulting to pull because it feels simpler to reason about ("the collector controls the schedule"), without checking that it's actually infeasible the moment a single host sits behind NAT with no inbound rule, which is the stated constraint here; putting authentication only at the relay and trusting everything on the internal network behind it, which means a compromised host on that network can inject or read telemetry for every other host sharing the relay; and skipping short-lived certificates in favor of long-lived static tokens to avoid the rotation-load question above, which trades a manageable, quantifiable renewal cost for an unbounded blast radius if one token leaks.
As a security architect, you don't own another team's backlog, but you need your threat-modeling findings built into their design before they start coding. How do you get that prioritized without direct authority over their roadmap?
Sample Answer
Direct answer
As a security architect you rarely have line authority over another team's backlog, so you get findings prioritized by making them cheap to accept and costly to ignore: translate the finding into the other team's own vocabulary (a defect, a customer risk, a compliance control they must attest to) and attach it to a decision they are already about to make, rather than asking them to open a brand-new work item. You lead with a specific, demonstrated risk instead of a policy citation, offer a menu of remediation options at different costs, and use an existing recurring forum, like a design review or architecture council, so the tradeoff is made visible to the team's own stakeholders, not just to you.
Structured elaboration
- Translate, don't mandate: reframe the threat-modeling finding in terms the team already tracks (a customer-facing incident scenario, a compliance control, a defect class QA can reproduce) instead of a generic "security best practice."
- Time it to their planning cycle: bring a written finding before backlog grooming or sprint planning, not after code is merged, so accepting it is a normal prioritization decision instead of a rework request.
- Offer options, not a mandate: propose two or three remediation paths (a quick mitigating control now, a full fix next sprint, an explicit accepted-risk sign-off) so the team's own product owner makes an informed tradeoff instead of feeling overridden.
- Borrow a forum, don't invent one: attach the ask to a ritual the team already respects, like their design review, so it reads as peer-level influence rather than a unilateral security gate.
- Make patterns visible upward: when a team consistently deprioritizes findings, escalate the pattern, not the individual finding, to a shared forum with both engineering and security leadership present, so someone with authority over both sides makes the call.
Worked example (illustrative, adapt to your own experience)
A security architect threat-models a new payments feature two weeks before the product team's sprint planning. Instead of filing a ticket titled "add input validation" into the team's backlog and hoping it gets picked up, they write a one-page finding: the specific attack path, the customer-facing scenario it enables, and three remediation options ranked by effort. They bring it to the team's existing design review, present it alongside the team's own product owner, and let the team choose between a lightweight mitigating control shippable in the current sprint or a fuller fix in the next one. The team picks the lightweight option and schedules the fuller fix on their own board, because the tradeoff was made visible and owned by them, not imposed from outside.
Trade-offs and pitfalls
- Too formal (a mandatory sign-off gate) breeds resentment and workarounds; too informal (a message in passing) gets lost in someone else's priority queue.
- Offering remediation options is powerful but risks a team always choosing the cheapest option indefinitely, so track accepted-risk decisions somewhere durable so a pattern of chronic deferral becomes visible over time.
- Borrowing an existing ritual only works if that ritual has real teeth; if the design review itself gets skipped or ignored, attaching your ask to it just inherits its weakness.
What the interviewer probes next
They typically follow up on how you handle a team that keeps saying "next sprint" indefinitely, whether you would ever reach for a hard gate like a release-blocking scan instead of persuasion, and how this influence model holds up when you are supporting a dozen teams at once instead of just one.
During an active incident, one engineer publicly and pointedly blames a specific colleague or team in the incident channel. As the person running the response, how do you handle it in the moment, and how do you make sure the eventual postmortem stays blameless and fair to everyone involved?
Sample Answer
Direct answer
When someone publicly blames a colleague during an active incident, the immediate priority is de-escalating without derailing the response itself: move the personal comment to a private channel quickly, keep the shared incident channel focused on resolving the problem, and address both the blaming behavior and its target separately, afterward, once the incident is stable.
Structured elaboration
- In the moment, prioritize the response, not the conflict. A brief, calm redirect in the shared channel ("let's keep this channel focused on mitigation, happy to discuss root cause separately") is usually enough; a longer confrontation in the middle of an active incident just adds noise and delay to something that's still actively harming users.
- Move the personal conversation private and prompt. Message the person who made the comment directly and briefly, acknowledging the stress of the moment but making clear that public blame isn't how the team operates, even under pressure; this shouldn't wait until after the incident closes.
- Check in with whoever was blamed. A quick, private, supportive message during or immediately after the incident, separate from the group, matters even if it feels like a small gesture; being publicly blamed during a stressful live incident is genuinely uncomfortable and worth acknowledging directly.
- Address it properly afterward, not just in the moment. A brief private conversation with the person who made the comment once things are calm, focused on what was actually happening for them in that moment (panic, feeling exposed, genuine frustration) and reinforcing the expectation clearly but without punitive framing, since this was very likely a stress reaction, not a considered decision.
- Ensure the eventual postmortem stays genuinely blameless despite what happened live. The public comment doesn't get carried into the written postmortem's tone or content; the facilitator should be deliberate about resetting the frame explicitly at the start of that meeting.
Worked example
During a live incident, a junior engineer posts in the shared channel, "this is happening because the PM pushed us to ship without proper testing." The incident commander responds immediately in-channel: "Let's keep this thread on mitigation, I'll follow up on that separately," and continues coordinating the response. Within the hour, they privately message the junior engineer: acknowledging the stress of the moment, but being direct that publicly blaming a specific person, even under pressure, isn't how the team handles incidents, and that there's a structured space (the postmortem) for exactly this kind of concern to be raised constructively. Separately, they check in privately with the PM, who appreciated the acknowledgment. When the postmortem runs a few days later, the facilitator opens by explicitly restating the blameless ground rules, and the underlying concern (a real gap in test coverage before this kind of deploy) does get surfaced and addressed, just through the process designed for it rather than as a live accusation.
Trade-offs and pitfalls
The most common mistake is either ignoring the comment entirely (which signals it's tacitly acceptable) or turning it into a bigger disruption in the moment than the underlying incident already is. A second is failing to follow up afterward at all, assuming the moment passed once the incident resolved, which misses both the coaching opportunity with the person who made the comment and the chance to support the person who was blamed.
How do you identify and reduce cache-miss related performance issues at the CPU level? Describe tools and metrics to measure L1/L2/L3 cache misses, how to interpret cache-miss hot spots, and algorithm-level changes that reduce miss rates.
Sample Answer
Cache hierarchy, briefly
Modern CPUs have a small, very fast L1 cache per core, a larger L2 cache per core or shared by a small cluster, and a larger still L3, or last-level, cache shared across all cores. Each level is roughly an order of magnitude slower than the one before it, and missing all the way to main memory is slower again, often by 100x or more relative to an L1 hit. A cache miss means the CPU needed data that was not in that cache level and had to fetch it from further away.
Tools and metrics
perf stat -e cache-references,cache-misses,L1-dcache-load-misses,LLC-load-misses <cmd> gives counts you should read as a ratio (misses divided by references), since more references naturally produce more raw misses; the ratio is what is comparable across runs. perf record -e cache-misses followed by a flame graph (a chart that stacks function calls as bars, where a wider bar means that function showed up in more samples) shows where in the code the misses concentrate, not just how many there are overall. Watching IPC, instructions per cycle, drop while the cache-miss rate rises is a strong signal you have gone from compute-bound to memory-bound. For structured struct-layout diagnosis, perf c2c specifically detects false sharing, where two unrelated variables on different cores land in the same cache line, so writing one invalidates the other's cache unnecessarily.
Worked example
Iterating a large 2D array in the wrong order relative to its memory layout is the classic case. A row-major array, C's default layout, stores arr[i][0], arr[i][1], up to arr[i][n-1] contiguously. Looping "for j: for i: sum += arr[i][j]" (column-first) jumps a full row's width in memory on every step, missing the cache almost every time. Looping "for i: for j: sum += arr[i][j]" (row-first) walks contiguous memory and reuses each fetched cache line many times before moving on. On a large enough array this reordering alone, with no algorithmic change, is a well-known and substantial speedup because it directly changes the cache-miss rate: as an illustrative example, summing a 4096x4096 double-precision array might take roughly 900ms column-first versus 60ms row-first, with the perf cache-miss rate dropping from around 45% to around 2%.
Algorithm and code-level fixes
- Match iteration order to memory layout, as above.
- Prefer "structure of arrays" over "array of structures" when only a few fields of a larger struct are accessed in a hot loop, so unused fields are not pulled into cache alongside the ones you need.
- Pack and align structs to fit cleanly into cache lines, commonly 64 bytes, rather than spanning two lines or wasting space to padding.
- For large matrix-style workloads, block or tile the computation so each block's working set fits inside a cache level before moving to the next block.
- Reduce pointer-chasing through linked structures in favor of contiguous arrays where the access pattern allows it.
How would you structure a DR testing program over a year: what mix of tabletop exercises, partial failover drills, and full failover tests would you run, and how often? How do you know a test actually validated your RTO/RPO rather than just checking a box?
Sample Answer
Direct answer
Structure the program as a pyramid: frequent, cheap, low-blast-radius tests at the base (tabletop exercises and small chaos experiments) and rare, expensive, high-fidelity tests at the top (a full regional failover), with the mix and cadence driven by how critical the system is. A test only "validates" RTO/RPO if it measures the actual cutover duration and actual data-loss window against the stated objectives; a test that only checks "the failover script exited 0" validates nothing about either number.
Program cadence
| Test type | Frequency | Scope | Blast radius | What it validates |
|---|---|---|---|---|
| Tabletop exercise | Monthly | Walk through the runbook verbally with the team, no systems touched | None | Runbook completeness, team knowledge, communication plan |
| Chaos experiment | Monthly (staggered by service) | Targeted fault injection (latency, instance kill) in staging or a canary slice of production | Small, scoped | Individual resilience mechanisms (timeouts, retries, circuit breakers) |
| Partial failover drill | Quarterly | One tier or one region's traffic for a limited cohort | Medium | Actual RTO/RPO for a real subsystem, under real (if partial) load |
| Full failover rehearsal | Semi-annually or annually | Entire production stack cut over to the DR target | Large, scheduled maintenance window | End-to-end RTO/RPO for the whole system, including cross-service dependencies and data reconciliation |
Critical, revenue-impacting systems get more frequent partial drills and at least one full rehearsal a year; lower-tier systems can run on tabletop plus chaos testing alone, escalating to a partial drill only if the tabletop surfaces a gap worth verifying live.
Knowing a test actually validated RTO/RPO
Every drill needs three explicit, pre-committed numbers before it starts: the RTO objective, the RPO objective, and how each will be measured (timestamp of last successful replication for RPO, timestamp from failure detection to traffic fully serving from the target for RTO). A test that "succeeded" without producing those two measured numbers against those two objectives is a box-check, not a validation, no matter how smoothly it went operationally.
Worked example
Take a service with an RTO objective of 120 minutes and an RPO objective of 15 minutes. During a quarterly partial failover drill, the team explicitly instruments the cutover:
- Failure is injected at T0. Traffic is fully migrated and serving correctly from the DR target at T0+95 minutes.
- The last successful replication timestamp before the failure was 12 minutes prior to injection.
Both are checked against the objectives directly, not inferred:
- RTO: 95 minutes measured, against a 120-minute objective. Met, with 25 minutes of margin.
- RPO: 12 minutes of un-replicated data, against a 15-minute objective. Met, with 3 minutes of margin.
If instead the drill log only said "failover completed successfully" with no cutover timestamp and no replication-lag reading at the moment of injection, there is no way to know whether either objective was actually met; the drill exercised the mechanics but validated neither number. That distinction, an explicit measured duration and lag compared against a stated objective versus a pass/fail exit code, is what separates a real validation from box-checking.
Data-pipeline experiments: staging first, then guarded production
For data pipelines specifically, the failure modes worth testing (replication lag, partition loss, reprocessing correctness) are riskier to inject directly into production because a botched experiment can corrupt or duplicate real data, not just cause temporary unavailability. The staging-first policy: run the same fault injection against a staging environment fed by a realistic (sampled or replayed) data volume first, validate the pipeline's idempotency and replay logic there, and only graduate to a production experiment once staging has proven the recovery path is safe, and then only against a bounded, reversible slice (a single partition or a single non-critical topic) with a documented rollback.
Trade-offs & pitfalls
Full rehearsals give the highest-fidelity validation but are expensive in engineering time and carry real operational risk, so they can't run monthly; the tabletop and chaos-testing layers exist precisely to catch cheap, obvious gaps before they ever reach a full rehearsal. The most common pitfall is a program that runs consistently but never increases rigor: five consecutive tabletop exercises that always conclude "the plan looks fine" without ever executing a real cutover leaves the actual RTO/RPO numbers unverified. The other common trap is running the full rehearsal on a quiet, low-traffic weekend that doesn't resemble real peak load, which can pass a drill that would fail under the conditions an actual disaster is most likely to occur alongside (peak traffic, a concurrent incident, or a partially degraded starting state).
Provide a decision framework you use to make quick operational choices with incomplete information during an incident. Include criteria such as reversibility, blast radius, business impact, and confidence levels, and explain how you document and communicate those decisions during and after the incident.
Sample Answer
Situation: During incidents we often must act with incomplete data—e.g., a sudden traffic spike causing timeouts and partial feature failures with unclear root cause.
Decision framework I use (quick, repeatable checklist):
- Clarify objective: restore customer-facing functionality or stop harm? (Customer impact first.)
- Assess criteria quickly (30–60s):
- Business impact: Which SLOs/transactions are affected? Estimate revenue/user impact.
- Blast radius: What systems/users would a change affect? Narrower is safer.
- Reversibility: Can we rollback in <5 mins? Prefer reversible actions.
- Confidence level: High/medium/low based on telemetry, logs, and past runs.
- Time-to-effect: How long until the change shows results?
- Prioritize actions:
- If high business impact + low blast radius + reversible → execute immediately.
- If high blast radius or irreversible → require brief sync (1–2 people) or mitigations first (rate-limit, circuit-break).
- If low confidence → run quick safe experiment (canary/feature flag) or gather more telemetry.
- Execute with guardrails: use feature flags, traffic steering, or throttles; document command run and expected outcome in incident channel.
- Re-evaluate at fixed cadence (5–10 mins) and escalate if needed.
Documentation & communication:
- During incident: post concise decision cards in the incident channel:
- Decision: action taken
- Rationale: criteria (business impact, blast radius, reversibility, confidence)
- Owner & timestamp
- Expected observation and rollback plan
- Use templates (Incident → Decision → Expected → Rollback) so anyone can pick up.
- After incident: include decision timeline in the postmortem, annotate root cause if discovered, and capture lessons (e.g., make safe action automated, reduce blast radius).
Example: Traffic surge causing DB timeouts. I chose to enable read-only cache (low blast radius, reversible, immediate effect) while we investigated; documented decision, owner, and rollback; monitored metrics; once stable, we reverted and added an automated circuit for future incidents.
This framework balances speed and safety, makes reasoning explicit, and ensures auditability and learning.
When designing a relational schema, how do you decide whether to normalize a table or denormalize it? Walk through the reasoning you would use, including what you gain and what you give up with each choice.
Sample Answer
Direct answer
Normalize when write correctness and storage efficiency matter most: each fact lives in exactly one place, so an update touches one row and there is no duplicate copy to drift out of sync. Denormalize when read speed matters most: copying a value into the table that needs it removes a join at read time, at the cost of extra storage and extra write work to keep every copy consistent. The decision is really about where you are willing to pay a cost: on the write path (normalized) or on the read path (denormalized).
Structured elaboration
What normalization buys you
- A single source of truth for each fact (a customer's name lives in one row in the customers table). Rename a customer once, and every order referencing that customer's ID sees the new name immediately, because nothing else stored a copy.
- No update anomalies: you cannot end up with two rows disagreeing about the same customer's e-mail address, because there is only one row.
- Smaller row sizes and less redundant storage, since each attribute is stored once.
What it costs
- Reads that need a full picture (an order plus the customer's name and the product's title) require joining across multiple tables. As the number of tables in the join grows, so does read latency and database load per request.
What denormalization buys you
- Fast reads: a single table scan or index lookup returns everything the page needs, no join required. This matters most for read-heavy, latency-sensitive paths (a product listing page, an order-history feed).
- Fewer round-trips and less join computation on the database, which matters at high read volume.
What it costs
- Duplicated data: the same fact (a product's name, a customer's e-mail) now lives in more than one row.
- Write amplification and staleness risk: change the source fact once, and every duplicate copy must also be updated, or the duplicates drift and become wrong. If you skip updating one copy, you now have silently inconsistent data.
- More total storage, since the same bytes are stored multiple times.
How to actually decide
- Estimate the read:write ratio on the specific table or field in question, not the system as a whole. A field read a thousand times for every write is a strong denormalization candidate; a field written as often as it is read is not.
- Ask how often the would-be-duplicated value actually changes. A product's category ID rarely changes; a live inventory count changes constantly. Denormalizing something that changes constantly multiplies your write cost and your staleness risk.
- Ask how expensive staleness is if a duplicate briefly lags. A denormalized display name that is a few seconds stale is usually fine; a denormalized account balance is usually not.
- Consider partial solutions before going fully one way: a materialized view or a cached read model gives you denormalized-shaped reads without hand-maintaining duplicate columns in the source tables, at the cost of a refresh lag you must define and tolerate.
Worked example
Take an orders schema. Normalized (third normal form): an orders table (order ID, customer ID, timestamp), an order_items table (order ID, product ID, quantity, unit price), a customers table, and a products table. Rendering an order-detail page means joining order_items to products (for the product name and image) and joining orders to customers (for the customer's name), a three- to four-way join.
Suppose the system processes 1,000,000 orders a month, averaging 3 line items per order, so 3,000,000 order_items rows are written per month. A normalized order_items row (order ID, product ID, quantity, unit price as fixed-width fields) is roughly 28 bytes. A denormalized version that also copies in the product name (about 24 bytes), product category (about 12 bytes), customer name (about 20 bytes), and customer e-mail (about 24 bytes) adds about 80 bytes per row:
At 3,000,000 rows a month, that is:
3,000,000×80 bytes=240,000,000 bytes≈240 MBof pure duplicate data added every month, before counting index overhead or replication. That is the storage side of the cost. The write side shows up when a product gets renamed: if that product already appears in 50,000 historical order_items rows, a normalized schema needs a single row updated in products; a denormalized schema that copied the product name into order_items needs all 50,000 rows updated (or accepts that historical order rows show the old name, which is a legitimate choice for orders specifically, since an order should arguably show the name as it was at purchase time, not the current name).
That last point is the real lesson: denormalizing an order line item's product name is often correct, not just a performance hack, because an order is a historical record and should not silently change when a product is renamed later. Denormalizing a customer's current e-mail address into the same row would be the wrong call, because you want that field to always reflect the customer's latest value, and a copy will drift.
Trade-offs & pitfalls
- Over-normalizing a read-heavy path (a product catalog page hit thousands of times a second) forces the database to redo the same multi-table join on every request, which is real, measurable load that a single denormalized read model would remove.
- Over-denormalizing a field that changes often multiplies write cost for a marginal read benefit, and creates a data-integrity bug class (stale duplicates) that is easy to miss in testing and expensive to debug in production.
- A common pitfall is denormalizing before measuring the actual read:write ratio, based on an assumption that reads are always dominant. Analytics and reporting schemas intentionally denormalize heavily (star-schema fact and dimension tables in an online analytical processing, OLAP, warehouse), because they are overwhelmingly read-heavy and batch-loaded; the live transactional path behind an online transaction processing (OLTP) system usually should not copy that pattern wholesale.
- The strongest senior answer treats this as a per-field decision, not a whole-schema philosophy: a single table can normalize some columns and denormalize others based on how each specific column is actually read and written.
Given an application with five 9s (99.999%) availability target within a single region, describe the architecture changes, redundancy patterns, and service-level considerations you would implement to approach that SLA for compute, storage and networking.
Sample Answer
Framing: what five 9s actually means
"Five 9s" is shorthand for 99.999% uptime. Translate that into an actual downtime budget before designing anything, because the budget tells you which failure modes you can and cannot tolerate:
allowed downtime/year99.999%99.99%99.95%=(1−availability)×365.25×24×60 minutes⇒≈5.26 minutes/year⇒≈52.6 minutes/year (10x looser)⇒≈4.4 hours/year (50x looser)The intuition: each additional "9" is roughly a 10x tighter budget. Going from four 9s to five 9s isn't a small tweak, it means almost nothing is allowed to be a manual, human-speed recovery; everything has to fail over automatically in seconds.
Compute
Architecture changes: run stateless app instances across at least 3 Availability Zones in the region, so losing one AZ still leaves 2 healthy.
Redundancy pattern: N+2 capacity (N is the baseline number of units actually needed to serve peak load; +2 means provisioning enough extra that you can lose two of them at once, such as one AZ's worth of capacity AND a second, correlated failure like a bad deploy, and still meet demand), fronted by a load balancer doing fast health checks.
Service-level considerations: deploy with a canary (send the new version to a small slice of traffic first) or blue-green (run the old and new versions side by side, then switch traffic over) rollout and automatic rollback on error-rate spikes, since a bad deploy is a more common cause of an outage than hardware failure; use circuit breakers so one failing downstream dependency can't cascade into taking down the whole compute tier.
Storage
Architecture changes: use a database with synchronous multi-AZ replication (the standby has every committed write before the primary acknowledges), so failover doesn't lose data.
Redundancy pattern: automated primary/standby failover with fast, deterministic detection (health-check-driven, not "wait for a human to notice"), typically targeting failover in well under a minute; read replicas absorb read traffic but are not the durability mechanism, the synchronous standby is.
Service-level considerations: back this up with point-in-time-recoverable backups as a last resort (protects against corruption/human error, not counted toward the uptime SLA (service level agreement, the contractual uptime commitment) itself), and periodically test that failover actually works rather than trusting it in theory.
Networking
Architecture changes: redundant load-balancer nodes per AZ (a managed LB service is normally already multi-AZ), and a NAT gateway (or equivalent egress path) provisioned per AZ instead of one shared NAT gateway that becomes a single point of failure for two of your three AZs.
Redundancy pattern: health-check-based routing that pulls a bad AZ or bad instance out of rotation automatically, with hysteresis (require a few consecutive failed checks, not one blip) so a transient glitch doesn't trigger an unnecessary failover.
Service-level considerations: validate DNS TTLs and any client-side caching of endpoints won't stall a failover beyond your budget.
The honest limit, and how you'd validate it
Five 9s within a single region is achievable through multi-AZ redundancy at every layer above, but it still shares fate with anything that is genuinely region-wide: the region's control plane, a region-wide network event, or a bad global configuration push. Say this explicitly rather than implying multi-AZ alone makes you immune to regional incidents; if the target truly must survive a whole-region loss, that pushes you into multi-region, which is a materially bigger investment.
Validate the design with regular failure-injection exercises (kill an AZ's worth of traffic in a game day, not just a single instance) and track actual measured uptime against the 5.26-minute/year budget with an error budget (a running tally of how much of your allowed downtime you have actually used), so you know whether you're actually meeting the target rather than just having designed for it on paper.
Recommended Additional Resources
- Site Reliability Engineering: How Google Runs Production Systems (O'Reilly) - foundational SRE concepts and practices
- The Art of Monitoring (Packt) - comprehensive guide to monitoring and observability architecture
- Kubernetes in Action (Manning) - deep dive into container orchestration with Kubernetes
- Terraform: Up and Running (O'Reilly) - practical infrastructure as code with Terraform
- Release It!: Design and Deploy Production-Ready Software (Pragmatic Programmers) - resilience patterns and anti-patterns
- Database Reliability Engineering (O'Reilly) - database-specific reliability and scaling strategies
- Continuous Delivery (Addison-Wesley) - CI/CD best practices and deployment automation
- LeetCode System Design Section - practice system design problems and interview questions
- Designing Data-Intensive Applications (O'Reilly) - distributed systems fundamentals and trade-offs
- Netflix Tech Blog - real-world insights on chaos engineering, microservices, and operations at scale
- Google Cloud Architecture Blog - cloud infrastructure best practices and patterns
- AWS Well-Architected Framework - reliability pillar and architectural principles
- Linux Performance and Tuning Guide - deep systems knowledge and performance optimization
- Kubernetes official documentation and CKAD exam preparation - container orchestration mastery
- Prometheus and Grafana documentation - hands-on experience with industry-standard monitoring
- The DevOps Handbook (IT Revolution Press) - organizational practices for reliability and DevOps culture
- Accelerate: The Science of Lean Software and DevOps (IT Revolution Press) - metrics-driven approach to reliability and deployment frequency
Search Results
Azure Site Reliability Engineering Interview Questions - YouTube
Ace your Azure SRE interview. This video covers Azure SRE interview questions and answers for freshers and experienced candidates.
Site Reliability Engineer Interview with Experian's Clarity Services
Azure #AWS #Linux #Kubernetes Watch this real Site Reliability Engineer (SRE) interview recording where I answer top SRE, DevOps, and Cloud questions!
So You Want to Be an SRE? - Vishakha Sadhwani
Role, skills, salary, AI impact and a downloadable interview guide!! · Explain SLIs/SLOs/SLAs and give real-world examples · Deep-dive on monitoring/observability ...
How does a Senior Site Reliability Engineer SRE work ... - YouTube
My Daily Tasks as Senior Site Reliability Engineer (SRE) | Interview Preparation For SRE and DevOps Site Reliability Engineer (SRE) Interview Questions and ...
Top 110+ DevOps Interview Questions and Answers for 2026
Here are some of the most common DevOps interview questions and answers that can help you while you prepare for DevOps roles in the industry.
Bloomberg Software Engineer Interview Questions
Prepare for Bloomberg interview with these Bloomberg Software Engineer Interview Questions on algorithms, data structures, system design, OOP and more.
This interview preparation guide was generated using AI-powered research from the sources listed above. While we strive for accuracy, we recommend verifying critical information from official company sources.
Want to create your own tailored preparation guide using our deep research?
Get Started for FreeInterview-Ready Courses
Visual-first, interactive, structured learning paths
Browse Site Reliability Engineer (SRE) jobs
AI-enriched listings across hundreds of company career pages
Explore Jobs