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
List three Linux profiling tools (e.g., perf, eBPF) and describe a realistic use-case for each when diagnosing a backend server's performance problem. Include when you'd use strace or iostat as well.
Sample Answer
perf — Use-case: CPU- and kernel-level hotspots. If a backend shows high CPU load or latency spikes, run perf record / perf report on the service to find heavy call stacks, syscalls, or context-switch hotspots. Example: identify a particular libc function or JITed method consuming cycles, then optimize code or tune CPU affinity. Good for offline sampling and generating flamegraphs.
bpftrace / bcc (eBPF) — Use-case: low-overhead, live tracing across kernel and user space. For intermittent, production-sensitive latency issues (can't stop service), write short bpftrace scripts to trace syscalls, scheduling delays, tail-latency stacks, or network skb drops aggregated by PID. Example: measure syscall latencies for requests >95th percentile to find syscall-heavy code paths without heavy overhead.
atop (or pidstat/top) — Use-case: continuous resource accounting with historical context. If resource usage evolves over minutes/hours (memory growth, IO wait, thread counts), atop/pidstat provide per-process CPU, memory, disk I/O, and thread info over time so you can correlate with deployments or traffic surges. Use atop to identify processes causing sustained iowait or page faults.
When to use strace: For a specific PID when you suspect problematic syscalls (blocking open/read/write, excessive futexes). Use sparingly in production due to overhead; apply to short windows or staging to see exact syscall sequences and args.
When to use iostat: When you suspect disk subsystem bottlenecks. iostat shows device-level throughput, IOPS, and %util; use it to determine whether high response times are due to saturated disks vs. application CPU or network issues.
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.
You join an incident channel that just started and the only initial message is 'systems degraded' plus a flurry of pages. What are the first three pieces of information you should gather and the first three actions you should take in the first five minutes? Explain why each is important for containment and communication.
Sample Answer
First three pieces of information to gather (why each matters)
-
Scope & impact: which services, regions, customer-facing features, and percent of traffic affected.
- Why: tells you containment boundaries and prioritizes where to focus mitigation (e.g., blocklist vs full rollback).
-
Error symptoms & timelines: dominant error types (502/timeout/latency), recent deploys/config changes, and exact time degradation started.
- Why: links cause (deploy/config) to effect and speeds root-cause narrowing so containment can be targeted.
-
Current mitigation and owner status: who is already working on it, any mitigations in place (circuit breakers, autoscaling, throttles), and pager overload.
- Why: avoids duplicated work, surfaces gaps, and enables rapid coordination/hand-offs.
First three actions in the first five minutes (why each matters)
-
Announce a short incident status message (impact summary + “I’m acting as coordinator for now”) in channel and set communication cadence (eg. updates every 5 min).
- Why: reduces noise, prevents fragmented efforts, and gives stakeholders a predictable update rhythm.
-
Triage and isolate: run quick health checks/dashboards, mute non-actionable alerts, and, if possible, throttle/redirect traffic or engage failover for the most impacted service.
- Why: containment reduces blast radius and buys time for diagnosis.
-
Assign roles & next steps: name an owner for investigation, one for mitigation, and one for communications/logging; capture actions in the channel.
- Why: clear responsibility accelerates work, ensures progress is tracked, and preserves audit trail for postmortem.
As an SRE leader, how would you prioritize reliability engineering work (improving SLOs, reducing toil, building automation) against incoming feature requests from product teams? Walk through a concrete example of a time you had to make this trade-off and how you negotiated it with stakeholders.
Sample Answer
Prioritizing reliability engineering work against feature requests is not a one-time policy decision, it's a recurring negotiation that works best when it's anchored to an agreed, visible signal rather than relitigated from scratch every sprint. The strongest approach ties the trade-off to a shared reliability target (a service-level objective, or SLO, and the resulting error budget) so that whether reliability work takes priority becomes a mostly mechanical question once that target is trending badly, and a genuine judgment call the rest of the time.
A structure for the recurring decision
- Anchor to a shared number. When the team has an agreed reliability target and the current state relative to it is visible to both engineering and product, "should we ship this feature or fix reliability" stops being a values argument and becomes "are we inside or outside our agreed margin."
- Separate toil from real engineering investment. Toil (repetitive manual operational work) competes with both features and deeper reliability engineering; automating it away is rarely controversial and should usually win by default, since it pays back quickly and frees capacity for everything else.
- Make the cost of deferral visible. Reliability work deferred long enough compounds (a known issue causes repeat incidents, each one costing far more engineering time than the original fix would have); surface that compounding cost in terms product stakeholders can weigh, not just "we should be doing this."
- Reserve explicit capacity, don't just compete for it. Many teams that get this right allocate a standing percentage of each cycle to reliability and toil work up front, so it isn't re-litigated feature by feature.
Worked example (a concrete trade-off)
A team's checkout API is inside its reliability target, but a recurring, low-severity issue (an intermittent third-party payment-processor timeout) has caused three minor incidents in the past quarter, none severe enough to trigger the error-budget policy on their own. Meanwhile product wants a new checkout feature shipped this sprint. The negotiation: the team quantifies that the recurring timeout has already cost roughly two engineer-days of incident response this quarter and is trending worse, proposes shipping the feature this sprint as planned but committing the next sprint's reliability-work allocation specifically to that fix rather than leaving it in the general backlog, and gets product's buy-in by showing the incident-time cost directly rather than arguing reliability work is important in the abstract.
Trade-offs and pitfalls
Treating every reliability request as equally urgent erodes trust with product stakeholders, who correctly notice when "everything is a fire" and start discounting reliability asks across the board; the credibility of a hard stop (this must happen now) depends on it being genuinely rare. The opposite failure, always deferring reliability work in favor of the next feature, quietly accumulates risk until an incident forces the trade-off on the team's behalf, usually at a worse time and a higher cost than if it had been scheduled deliberately. The healthiest teams treat this as a standing, visible allocation decision rather than a fight that has to be re-won every time.
You are responsible for mentoring a junior SRE. Create a six-month mentorship plan that includes technical skills, incident leadership, documentation practice, and professional development. Define measurable milestones, how often you'd meet, what hands-on tasks they should complete, and how you'd assess success at three and six months.
Sample Answer
Overview: Six-month structured mentorship with biweekly 1:1s + weekly asynchronous check-ins. Focus areas: core technical SRE skills, incident leadership, documentation & runbooks, and career/professional growth.
Cadence:
- 1:1 (50 min) every two weeks — progress, blockers, feedback
- Weekly 15-min async status (Slack/email) — tasks completed
- Shadowing during at least one on-call rotation per month
Milestones & Hands-on Tasks:
Month 0–1 (Onboarding / fundamentals)
- Milestone: understand stack, CI/CD, alerting, runbooks
- Tasks: deploy a small service to dev; add one alert to Prometheus/Grafana; write a dev runbook
- Success metric: demo deploy + PR merged; runbook reviewed
Month 2–3 (Automation & reliability)
- Milestone: contribute automation and monitoring improvements
- Tasks: implement an automated rollback script or K8s job; add dashboards; write a playbook for common incidents
- Success metric: automation merged + reduced manual steps by X%; dashboard used in ops
3-month assessment (formal)
- Technical: completes assigned tasks, shows debugging workflow, testable automation
- Incident leadership: led 1 post-incident review (PIR) as scribe/coordinator
- Documentation: 3 reviewed runbooks
- Behavioral: demonstrates ownership, communication
- Pass criteria: shipping work independently, positive feedback from on-call peers
Month 4–5 (Incident leadership & SLOs)
- Milestone: lead incidents, own a small SLO/error-budget
- Tasks: be primary responder for low-sev incidents; define an SLO, instrument metrics, present to team
- Success metric: SLO defined + dashboard, led ≥2 incident responses
Month 6 (Ownership & career growth)
- Milestone: autonomous SRE contributor and mentor-in-training
- Tasks: run a blameless PIR as lead, mentor a new hire on a small task, propose a reliability improvement project
- Success metric: PIR outcomes implemented, mentee feedback positive, project proposal approved
6-month assessment
- Technical: consistent, production-safe changes; automation in place
- Incident leadership: led multiple incidents; clear comms under pressure
- Documentation: comprehensive runbooks covering top 10 incidents; ownership assigned
- Professional: growth plan defined (next 6–12 months), demonstrates coaching ability
- Pass criteria: meets ≥80% of milestones, manager and peer endorsements, readiness to manage larger services
Evaluation methods:
- Work artifacts (PRs, runbooks, dashboards)
- 360 feedback from on-call team and engineers
- Objective metrics: mean time to acknowledge/resolve for incidents they handled, number of manual steps automated, number of runbooks authored/reviewed
Adjustments: iterate plan every 1:1 based on progress; escalate training (pair-programming, courses, certifications) if gaps persist.
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.
Write a SQL query to compute the daily 95th-percentile latency per service from a table events(service TEXT, ts TIMESTAMP, latency_ms INT). Provide both a precise window-function solution (if feasible) and describe an approximate method suitable for very large datasets (e.g., using t-digest or histogram sketches).
Sample Answer
Precise (exact) solution — exact 95th percentile per service per day using window functions (Postgres example). Two options: percentile_cont (ordered-set aggregate) or percentile_disc via DISTINCT ON if you need an observed value.
-- Using ordered-set aggregate (Postgres)
SELECT
service,
date_trunc('day', ts) AS day,
percentile_cont(0.95) WITHIN GROUP (ORDER BY latency_ms) AS p95_latency_ms
FROM events
GROUP BY service, date_trunc('day', ts)
ORDER BY service, day;
If your SQL engine lacks percentile_cont, you can compute rank-based percentile with window functions:
WITH daily AS (
SELECT
service,
date_trunc('day', ts) AS day,
latency_ms,
row_number() OVER (PARTITION BY service, date_trunc('day', ts) ORDER BY latency_ms) AS rn,
count(*) OVER (PARTITION BY service, date_trunc('day', ts)) AS cnt
FROM events
)
SELECT
service,
day,
max(latency_ms) FILTER (WHERE rn = ceil(0.95 * cnt)) AS p95_latency_ms
FROM daily
GROUP BY service, day
ORDER BY service, day;
Approximate method for very large datasets
- Use t-digest or histogram sketches to aggregate summaries per shard/partition and merge them. This is suitable for streaming or map-reduce style ingestion and reduces memory/IO.
Example approach (conceptual):
- At ingestion, build a t-digest per (service, day) for a time window (or per shard).
- Merge digests periodically into a daily digest per service.
- Query percentile from merged digest.
If using Postgres with tdigest extension:
-- pseudo-example; exact funcs depend on extension
SELECT service, day, tdigest_percentile(merged_tdigest, 0.95) AS p95
FROM daily_tdigests;
Trade-offs and guidance
- Exact methods require sorting or holding rows per group -> high memory/IO for hot services or long tails.
- t-digest preserves tail accuracy and merges well; error typically <<1–2% for p95 with reasonable compression.
- Histogram sketches (DDSketch, Quantile Digest) provide deterministic error bounds; choose based on error guarantees needed for SLOs.
- Validate sketch accuracy with sampling and store metadata (count, min, max) for monitoring.
- For alerts/SLOs, prefer conservative thresholds (account for sketch error) and surface confidence intervals.
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