Airbnb Staff Site Reliability Engineer Interview Preparation Guide
Airbnb's Staff SRE interview process is a rigorous 8-round evaluation spanning 4-6 weeks designed to assess technical depth in distributed systems, infrastructure expertise, operational excellence, leadership capability, and cultural alignment. The process begins with a recruiter screening, followed by a technical phone screen, then transitions to a 6-round onsite engineering loop covering coding challenges, general systems design, SRE-specific infrastructure design, code review, and behavioral assessment. For Staff level (12+ years experience), the bar is exceptionally high, requiring not just technical mastery but demonstrated ability to lead complex initiatives, mentor senior engineers, make strategic architectural decisions, and drive meaningful reliability improvements at Airbnb's scale.
Interview Rounds
Recruiter Screening
What to Expect
The initial stage combines Airbnb's first contact and recruiter follow-up into a single conversation, typically 40-45 minutes. A technical recruiter will review your SRE background, explore your specific interest in the Staff SRE role, and assess mutual fit. This is a two-way conversation where you discuss team structure, the systems you'd be stewarding, organizational context, and current technical challenges. The recruiter explains the interview process, timeline, and logistics. This round is conversational rather than adversarial and focuses on background verification, motivation assessment, cultural alignment, and whether your expectations match the role. Success here advances you to the technical phone screen.
Tips & Advice
Be specific and authentic about your SRE passion—generic 'I enjoy tech' responses don't resonate with Airbnb's culture-focused hiring. Ask thoughtful questions about the team, current reliability challenges, and how SRE is organized. Reference specific aspects of Airbnb's business (global property marketplace, real-time availability management, geographic scale) to demonstrate genuine research. Be honest about what you're seeking in your next role and what excites you about infrastructure work. Listen carefully to understand the team's actual problems and whether you're genuinely energized by them. Highlight 2-3 concrete achievements from your resume: scale you've managed (QPS, number of systems, team size), major incidents you led through, or significant reliability improvements you drove. Show curiosity about Airbnb's technology choices and willingness to learn new systems.
Focus Topics
Leadership, Collaboration, and Communication
Demonstrate how you communicate complex infrastructure concepts to both technical and non-technical audiences. Provide examples of successful cross-functional collaboration (working with product teams on feature deadlines, security on compliance, finance on cost optimization). Show your mentorship philosophy and specific examples of developing engineers into stronger roles.
Practice Interview
Study Questions
Motivation for Airbnb SRE and Role Alignment
Explain what specifically attracts you to Airbnb's infrastructure challenges. Reference the company's unique constraints: properties distributed globally, real-time consistency requirements, seasonal traffic spikes, payment reliability criticality, and multi-currency complexity. Show you've researched what makes Airbnb's infrastructure interesting and connect it to your expertise. Discuss what you want to accomplish in your next role and why Airbnb is the right place.
Practice Interview
Study Questions
Professional Background and SRE Expertise
Articulate your 12+ years in Site Reliability Engineering and systems infrastructure. Be specific about systems you've owned, team leadership experience, progression from individual contributor to senior technical leader, and key projects you've driven. Highlight scale achieved (peak QPS, geographic regions, number of services), complexity managed (distributed systems, high-availability requirements), and the progression of your responsibilities toward architecture and strategy.
Practice Interview
Study Questions
Technical Phone Screen
What to Expect
Following successful recruiter screening, you'll participate in a 60-minute technical phone screen with an Airbnb engineer (typically from backend, infrastructure, or platform team). You'll solve one to two algorithmic problems on a collaborative coding platform (CoderPad, HackerRank). Problems are typically medium-to-hard difficulty and require functional, working code that passes all test cases. The interviewer observes your problem-solving approach, communication clarity, code quality, and ability to optimize. For Staff level, expectations include not just correct solutions but clean implementation, thoughtful complexity analysis, and discussion of trade-offs. Pseudocode is not acceptable—you must write executable code.
Tips & Advice
Begin by clarifying the problem thoroughly: constraints on input sizes, expected time/space complexity, edge cases, return format. Think out loud while solving—interviewers want to understand your reasoning process, not just see working code. Write clean, readable code with meaningful variable names. After implementing a working solution, discuss complexity trade-offs before optimizing. Test your solution against provided examples and mentally trace through edge cases (empty inputs, duplicates, boundary values). For Staff level, elevate the conversation: explain why you chose this approach over alternatives, discuss the complexity implications for different input sizes, and consider how this would perform at Airbnb scale. Be conversational and collaborative if stuck—ask for hints rather than struggling silently. Demonstrate resilience and systematic debugging if you hit issues.
Focus Topics
Production-Quality Code Implementation
Write code to production standards: meaningful variable and function names, proper error handling, avoiding magic numbers, modular functions, appropriate comments for non-obvious logic. For Staff level, consider edge cases, resource management, and defensive programming. Avoid overly clever one-liners that sacrifice readability.
Practice Interview
Study Questions
Time and Space Complexity Trade-offs
Understand and articulate trade-offs between time and space efficiency. Sometimes O(n) space is worthwhile to achieve O(n) time instead of O(n²). Know when caching and memoization help. Discuss practical implications: will this fit in memory? How does it perform at scale?
Practice Interview
Study Questions
Core Data Structures
Master arrays, linked lists, trees (binary, BST, balanced), graphs, heaps, hash tables, stacks, and queues. Understand when to use each structure and complexity trade-offs. Be comfortable implementing or modifying structures on demand. For Staff level, also understand advanced structures like segment trees, tries, and when they optimize specific problems.
Practice Interview
Study Questions
Problem-Solving Process and Communication
Demonstrate a systematic approach: understand the problem completely, identify constraints and requirements, sketch a solution approach, discuss trade-offs, code cleanly, and test thoroughly. Communicate your thinking at each step. Ask clarifying questions early. Explain your approach before coding. Walk the interviewer through your solution.
Practice Interview
Study Questions
Algorithm Design and Complexity Analysis
Master common algorithms: sorting (quicksort, mergesort), searching (binary search), graph algorithms (DFS, BFS, Dijkstra, topological sort), dynamic programming, and greedy approaches. Understand Big-O notation deeply. Analyze time and space complexity accurately. Practice optimizing from naive to efficient solutions step-by-step, explaining the improvement at each stage.
Practice Interview
Study Questions
Onsite Coding Round 1
What to Expect
The first onsite coding round features a slightly more challenging problem than the phone screen. You have 60 minutes with an Airbnb engineer (potentially from SRE, backend, infrastructure, or platform team). You'll write complete, working code in a shared editor that passes all test cases. The interviewer observes your problem-solving process, code organization, debugging approach, and how you handle getting stuck. For Staff level, expectations include not just correct solutions but elegant implementations and sophisticated discussion of trade-offs and optimizations.
Tips & Advice
Replicate the phone screen approach but with higher standards for code elegance and optimization discussion. Spend the first 5-10 minutes ensuring you completely understand the problem—ask all clarifying questions before coding. Outline your approach on the whiteboard before implementing. Write code that prioritizes clarity and correctness. After achieving a working solution, discuss how you'd optimize further—could you reduce space complexity? Is there duplicated logic to refactor? Consider edge cases early and incorporate their handling. If stuck, think out loud and ask for hints rather than struggling silently. For Staff level, also contextualize the solution: 'If this were handling Airbnb's millions of listings in real-time, what would change?' This demonstrates you think about scale naturally and understand the infrastructure context of your work.
Focus Topics
Design Trade-offs and Scale Considerations
When discussing your solution, reference Airbnb-scale context: 'If this handled millions of listings in real-time, we might use X instead of Y because...' Discuss scalability implications. Show you think beyond the 20-element sample input to real-world constraints.
Practice Interview
Study Questions
Systematic Debugging and Testing
Develop testing strategy: trace through provided examples, test edge cases (empty, single element, large input), test boundary conditions. If code fails a test, debug systematically: use print statements or mental trace-through. Understand the failure and fix the root cause, not just patch the symptom.
Practice Interview
Study Questions
Advanced Data Structure Manipulation
Handle complex data structure scenarios: modify trees while traversing them, build graphs on-the-fly, strategically use heap operations, apply union-find for connected components, compose data structures (trees of graphs, etc.). Select optimal structures for complex problems.
Practice Interview
Study Questions
Algorithm Optimization Techniques
Master optimization strategies: memoization vs. tabulation in DP, pruning in backtracking, greedy vs. exhaustive search, early termination, caching patterns. Know when to apply each. Understand before-and-after complexity improvements.
Practice Interview
Study Questions
Production-Ready Code Implementation
Write code as if shipping to production: descriptive variable naming, helper functions for readability, error handling for invalid inputs, avoiding magic numbers, comments for non-obvious logic. Handle edge cases: empty inputs, single elements, duplicates, boundary values, very large inputs.
Practice Interview
Study Questions
Onsite Coding Round 2
What to Expect
The second coding round features a different problem, often with different focus than round 1 (for example, graph-heavy if round 1 was DP-focused, or string manipulation if round 1 was array-based). You have another 60 minutes with a different interviewer. The structure mirrors round 1. Both rounds combined give Airbnb signal across different problem domains and show consistency of performance. For Staff level SRE, these rounds demonstrate that you remain strong at low-level coding and algorithmic thinking despite being in a senior infrastructure role.
Tips & Advice
Apply the same solid systematic approach: understand the problem, outline the solution, code cleanly, test thoroughly, optimize, and discuss trade-offs. By the second coding round, you should feel comfortable and confident. Don't overthink it. Some candidates perform worse in round 2 due to fatigue or second-guessing themselves—maintain your approach and stay focused. If this problem feels easier than round 1, don't get complacent. If harder, break it down methodically. Both rounds carry equal weight, so perform consistently. For Staff level, use both rounds to demonstrate not just problem-solving ability but the communication and collaboration skills critical for a senior role. Show resilience if you encounter difficulty.
Focus Topics
Recovery from Mistakes Under Pressure
You may make mistakes or take wrong initial approaches in round 2. Show how you recover: acknowledge the mistake, adjust, re-approach, ultimately solve correctly. Recovery demonstrates resilience and systematic thinking as much as getting it right initially.
Practice Interview
Study Questions
Real-World Scenario Problem Solving
Some problems may be framed in Airbnb context: 'Design an algorithm to recommend properties' or 'Implement fraud detection for bookings' or 'Build a search relevance ranking system.' These test your ability to abstract a real business problem into a coding challenge and solve it algorithmically.
Practice Interview
Study Questions
System-Level Problem Solving
Some problems, especially relevant to SRE, might involve systems thinking: designing an LRU cache, implementing a rate limiter, designing a URL shortener, building a log aggregation system. These bridge coding and systems design. Approach by defining interfaces, discussing trade-offs, and implementing core logic.
Practice Interview
Study Questions
Consistency and Professional Presence
Perform at a similar level in round 2 as round 1. Interviewers looking at both rounds want to see consistent quality. Avoid dropoffs due to fatigue or anxiety. Maintain communication, debugging, and testing rigor.
Practice Interview
Study Questions
Diverse Problem Domains
Be prepared for variety: graph problems (shortest path, connectivity, topological sort), dynamic programming (optimization, counting), tree problems (traversal, manipulation, balancing), string/array problems (searching, sorting, transformation), and design problems (cache, rate limiter, etc.). Different rounds test breadth of knowledge.
Practice Interview
Study Questions
Onsite System Design Round 1: Distributed Systems Architecture
What to Expect
This 60-minute round focuses on general systems design and distributed systems fundamentals. You'll be given an open-ended problem like 'Design Airbnb's search and discovery system' or 'Design a scalable real-time recommendation engine' or 'Design a global notification delivery system.' You drive the discussion by asking clarifying questions, proposing architecture, and discussing trade-offs. Unlike coding rounds with clear right answers, system design is open-ended and emphasizes your thinking process. The interviewer acts as a technical peer, occasionally challenging your assumptions. For Staff level SRE, demonstrate deep understanding of: scalability at Airbnb's scope (millions of properties, globally distributed users), consistency models and their implications, fault tolerance and recovery, and operational concerns (monitoring, logging, deployment).
Tips & Advice
Start by asking clarifying questions: How many users? Properties? Requests per second? Geographic distribution? Read/write ratio? Consistency requirements? Latency SLAs? Then propose high-level architecture before diving into components. Use Airbnb context naturally—discuss properties, bookings, geographic constraints, seasonal demand. Propose multiple approaches and discuss trade-offs: SQL vs. NoSQL with specifics (when you'd use each), replication strategies (synchronous vs. asynchronous implications), caching layers (what to cache, invalidation strategy). Draw diagrams showing data flow and component interactions. For Staff level, go deeper than typical: discuss consistency models (eventual, strong, causal), CAP theorem implications, replica lag handling, network partition recovery. Discuss observability from the start—how do you know the system is working? Include monitoring, logging, and alerting. When challenged, defend your approach thoughtfully or acknowledge the trade-off and pivot. Avoid committing to one approach early—stay flexible as new constraints emerge. Reference real technologies you know (Elasticsearch, Redis, Cassandra, etc.) and explain why they fit.
Focus Topics
API Design and Service Boundaries
Design clean APIs between services: request/response formats, versioning strategy, backward compatibility. Consider rate limiting, authentication, authorization. For microservices: how do you define service boundaries? How do services communicate (REST, gRPC, async messaging)? What are trade-offs?
Practice Interview
Study Questions
Scalability Architecture and Load Balancing
Design systems that scale horizontally: sharding strategies (consistent hashing, range-based, directory-based), partitioning approaches, load balancing algorithms (round-robin, least-loaded). Understand when to shard and how to handle re-sharding. Address bottlenecks and cascading failures. For Airbnb: how do you scale search across millions of properties globally?
Practice Interview
Study Questions
Fault Tolerance and High Availability
Design for failure: redundancy and replication strategies, synchronous vs. asynchronous replication (consistency vs. performance trade-offs), failover mechanisms, circuit breakers, retry logic with exponential backoff, graceful degradation. Discuss cascading failure prevention. Address RTO (Recovery Time Objective) and RPO (Recovery Point Objective) for critical services.
Practice Interview
Study Questions
Data Storage and Retrieval at Scale
Compare SQL vs. NoSQL with specifics: relational databases for strong consistency and complex queries, key-value stores for scalability and performance. Discuss sharding strategies for massive datasets (consistent hashing, range-based, directory-based). Address read replicas, caching (Redis, Memcached), denormalization trade-offs. For Airbnb: how do you store and search millions of properties efficiently while handling bookings consistently?
Practice Interview
Study Questions
Distributed Systems Fundamentals
Understand core concepts: eventual vs. strong consistency with implications, CAP theorem trade-offs, Byzantine fault tolerance, quorum-based approaches, consensus protocols (Raft, Paxos conceptually). Know when to choose each. Discuss how Airbnb likely handles these trade-offs given its business constraints (booking consistency is critical).
Practice Interview
Study Questions
Onsite System Design Round 2: SRE-Specific Infrastructure Design
What to Expect
This 60-minute round is tailored specifically for SRE candidates. Instead of business-domain problems, you'll be given infrastructure-focused challenges such as 'Design a comprehensive monitoring and alerting system for Airbnb' or 'Design an incident management and response system' or 'Design a canary deployment system' or 'Design a capacity planning and auto-scaling framework' or 'Design distributed tracing for microservices.' The focus is on observability, operational excellence, reliability systems, and enabling safe operations at scale. For Staff level SRE, this is your domain—you should demonstrate deeply thoughtful, nuanced architecture considering trade-offs in monitoring overhead, alert fatigue, automation vs. manual control, and operational burden.
Tips & Advice
Approach this as your domain expertise round. Ask clarifying questions about scope: Which services? Criticality level? What's the blast radius of failure? What are we trying to solve (incident detection speed, cost reduction, safety)? Design thoughtfully. For monitoring: discuss metric collection (push vs. pull models), storage (time-series DBs), aggregation, alerting rules, alert routing, on-call integration. For incident response: discuss escalation procedures, runbook automation, cross-team coordination, post-incident review processes. For deployment: discuss blue-green deployment, canary strategies, automatic rollback, traffic shifting. For capacity planning: discuss forecasting, metrics to track, automation. Include cost considerations—Airbnb cares about efficient spend. Draw system diagrams showing data flow and components. Discuss operational burden: how much toil? Can it be automated? For Staff level, also discuss incremental design—start simple, evolve based on learnings. Discuss trade-offs between automation complexity and manual effort, between comprehensiveness and simplicity, between early detection and false positives. Reference best practices (SRE principles, industry standards). Be ready to deep-dive into components if asked.
Focus Topics
Capacity Planning and Resource Optimization
Design systems to track capacity and forecast demand: metrics to monitor (CPU, memory, storage, network), forecasting approaches (time-series analysis, trend analysis), automation of scaling decisions. Discuss reserved capacity vs. on-demand, cost optimization. Address Airbnb-specific patterns: seasonal demand spikes, geographic distribution impacts, bursty traffic.
Practice Interview
Study Questions
Reliability Engineering for Distributed Systems
Design systems with reliability first: fault injection testing (chaos engineering), resilience patterns (circuit breakers, retries with backoff, bulkheads, timeouts), graceful degradation, recovery procedures. Address multi-region failover, disaster recovery. Include DR testing and RTO/RPO strategies.
Practice Interview
Study Questions
Incident Management and Response Automation
Design end-to-end incident response: detection (alert-driven), paging (PagerDuty-like routing), triage (classification, severity), escalation (levels, thresholds), mitigation (runbook automation), communication. Design runbook automation—what responses can be automatic? What requires human judgment? Design on-call rotations, communication channels (Slack, etc.), incident commanders. Design post-incident review processes. For Airbnb: how do you quickly respond when booking service is degraded or search is down?
Practice Interview
Study Questions
Infrastructure Automation and Deployment Systems
Design deployment and infrastructure management: container orchestration (Kubernetes-like), configuration management, CI/CD pipelines, canary deployments, blue-green strategies, automatic rollback on failures. Discuss minimizing time-to-deployment while maintaining safety. Address infrastructure provisioning automation, scaling management, health checking. Discuss progressive delivery and traffic shifting strategies.
Practice Interview
Study Questions
Monitoring and Observability Infrastructure
Design comprehensive monitoring: metric collection infrastructure (time-series databases), log aggregation (ELK stack, Datadog-like systems), distributed tracing. Discuss push vs. pull metric collection models, sampling strategies for high-volume systems, metric retention policies, dashboard design patterns. Design alerting systems: rule definitions, routing to on-call teams, escalation policies, alert deduplication. For Airbnb scale: millions of properties generating events, millions of bookings in flight.
Practice Interview
Study Questions
Service Level Objectives (SLOs) and Error Budgets
Design SLO frameworks: define SLOs based on user impact and business requirements, distinguish between different service tiers. Explain error budget concepts and how to use them to balance reliability vs. feature velocity. Design frameworks to track SLO compliance, measure error budgets, make data-driven decisions on where to invest. Discuss how SLOs inform on-call policies, alerting thresholds, and incident response prioritization.
Practice Interview
Study Questions
Onsite Code Review Round
What to Expect
In this 60-minute round, you'll be presented with code (typically 50-200 lines in Airbnb's stack: Ruby, Python, TypeScript, or similar) and asked to perform a professional code review. You'll critique code quality, performance, security, maintainability, correctness, and testability. The interviewer plays an author defending their code or an observer listening to your critique. For Staff level SRE, you should identify design issues, performance bottlenecks, operational concerns (logging, monitoring), and suggest concrete improvements. You'll discuss trade-offs and prioritize feedback.
Tips & Advice
Approach this as a senior engineer reviewing peer code. Read through entirely first to understand intent, then critique systematically. Look for: (1) Correctness—does it do what it's supposed to? (2) Performance—any O(n²) loops where O(n) is possible? Unnecessary allocations? Database query inefficiencies? (3) Maintainability—readable? Clear variable names? Good separation of concerns? (4) Error handling—how are failures handled? (5) Security—vulnerabilities? Input validation? (6) Testing—testable? (7) Operational concerns (critical for SRE)—logging? Monitoring hooks? Graceful degradation? Ask clarifying questions: What is this code's purpose? Performance expectations? What's tested? Then share feedback constructively, prioritizing issues. Some are critical, others are style. For Staff level, discuss how code fits into larger system and architectural considerations. Be respectful and collaborative—frame as helping the team improve.
Focus Topics
Architectural Fit and System Integration
Think beyond the code: does it fit well with the larger system? Could there be better approaches given the architecture? Should this be a library, service, or configuration? Does it integrate well with other components? At Staff level, think architecturally.
Practice Interview
Study Questions
Security and Safety Considerations
Look for security issues: SQL injection risks, authentication/authorization problems, information disclosure, dependency vulnerabilities. While not all reviews are security-focused, at Staff level you should catch obvious issues. Suggest safer patterns.
Practice Interview
Study Questions
Testing and Observability
Evaluate testability and monitoring: is code modular enough to test? Are important events logged? Are there metrics for understanding behavior in production? Suggest improvements for observability. For SRE: code that can't be debugged or monitored in production is risky.
Practice Interview
Study Questions
Error Handling and Operational Resilience
Critique error handling: are there silent failures? Unhandled exceptions? Insufficient logging? For SRE roles, this is critical—suggest robust error handling, graceful degradation, circuit breakers, retries, timeouts, fallbacks. Discuss what happens when this code fails in production. Suggest operational improvements.
Practice Interview
Study Questions
Code Quality and Maintainability Assessment
Evaluate for readability and clarity: Are variable and function names descriptive? Is code organized logically? Are there overly long methods? Unnecessary complexity? Code smells: duplicated logic, deeply nested conditions, magic strings/numbers? Suggest specific refactoring to improve clarity. Recommend patterns and best practices.
Practice Interview
Study Questions
Performance and Scalability Analysis
Analyze performance: time/space complexity of algorithms, unnecessary iterations, inefficient data structures, memory allocations, I/O operations. Suggest optimizations. Understand context—not everything needs micro-optimization, but critical paths should be efficient. For SRE: performance at scale matters.
Practice Interview
Study Questions
Onsite Behavioral and Cultural Fit Round
What to Expect
The final 60-minute round focuses on behavioral traits, leadership experience, and alignment with Airbnb's core values. You'll be asked about past experiences using STAR format: 'Tell me about a time you faced X challenge' or 'Describe a project you led' or 'Tell me about a difficult decision.' Airbnb emphasizes core values: 'Belong Anywhere' (inclusion, diversity, welcoming), 'Be a Host' (generosity, long-term thinking, supporting others), and collaborative culture. For Staff level SRE, expect questions about: leadership and mentorship, managing ambiguity, driving large complex projects, handling conflict, learning from failure, and resilience. This round is conversational but probing—interviewers dig deeper with follow-up questions.
Tips & Advice
Prepare 6-8 STAR stories in advance covering: (1) Major incident you managed and systemic improvements made, (2) Mentorship of junior or senior engineers, (3) Difficult cross-functional decision you navigated, (4) Ambitious infrastructure project you drove end-to-end, (5) Technical complexity you simplified for the team, (6) Conflict you resolved with colleagues, (7) Meaningful failure you learned from and improved, (8) Reliability or performance improvement with quantified impact. For each story, clearly articulate: Situation (context), Task (your role), Action (what you did), Result (outcome, ideally with metrics). Include specific details and names (respecting confidentiality). Practice telling stories concisely in 3-4 minutes. Be authentic—generic stories don't resonate. For Staff level, emphasize: technical depth, leadership and mentorship, strategic thinking, resilience. Connect stories to Airbnb values: 'Be a Host' in supporting teammates, 'Belong Anywhere' in building inclusive teams. When asked about values or what matters, genuinely connect to Airbnb's mission if authentic. Avoid corporate jargon—be yourself, be specific, be human. Listen carefully to follow-up questions and answer directly.
Focus Topics
Learning from Failure and Resilience
Share a meaningful failure or setback you experienced and what you learned. This might be: technical decision that didn't work out, project that failed, interpersonal conflict initially handled poorly. Show that you reflect, learn, and improve. Avoid 'humble brags' that aren't real failures.
Practice Interview
Study Questions
Cross-Functional Collaboration and Influence
Describe a situation where you worked with product, security, finance, or other non-engineering functions to drive a decision. How did you navigate differing priorities? How did you influence outcomes? For Staff level, show how you've built relationships and reputation across functions.
Practice Interview
Study Questions
Leadership and Mentorship Track Record
Share examples of engineers you've mentored, their growth trajectories, and your role in developing them. Discuss your mentorship philosophy and how you create psychological safety. At Staff level, you've mentored multiple senior engineers—show this track record. Be specific: 'I helped X get promoted to senior engineer,' 'I developed the incident response competency in my team,' 'I created a mentoring program that resulted in...' Include impact: engineers promoted, teams strengthened, better incident response.
Practice Interview
Study Questions
Handling Ambiguity and Driving Impact
Describe a situation where you drove a complex initiative with ambiguous requirements or constraints. How did you break it down? How did you align stakeholders? What was the impact? At Staff level, you should own large projects without being told exactly what to do. Show strategic thinking and ability to navigate uncertainty.
Practice Interview
Study Questions
Major Incident Management and Systemic Learning
Describe a significant production incident you managed: what went wrong, your role in response, what you learned, and how you systematically improved things afterward. This showcases: (1) Technical expertise handling crisis, (2) Calmness and leadership under pressure, (3) Coordination of team response, (4) Systematic learning and improvement, NOT just firefighting. For SRE, incident stories are valuable.
Practice Interview
Study Questions
Airbnb Core Values Alignment
Research Airbnb values beforehand: 'Belong Anywhere'—creating inclusion, welcoming diverse perspectives, enabling everyone to feel comfortable; 'Be a Host'—generosity, supporting others first, long-term thinking, collaborative; 'Cereal Entrepreneur'—owning problems, solving ambiguous challenges. Share specific stories demonstrating these values in action. For Staff level, show how you've fostered these values in your teams and organizations, not just lived them individually.
Practice Interview
Study Questions
Frequently Asked Site Reliability Engineer (SRE) Interview Questions
Write a short, professional email making a specific ask of someone (for example, requesting access, information, or a decision). State the ask, the essential context, and the next step in the first two sentences rather than burying it at the end.
Sample Answer
Direct answer
Put the ask, the essential context, and the next step in the first two sentences, so a busy reader can act on the email even if they only read the opening before deciding whether to reply now or later.
Structured elaboration
- State the ask as the first sentence, not buried after several paragraphs of context: "I'd like to request temporary access to X" or "Could you approve Y by Thursday?"
- Give only the essential context, one or two sentences of why this ask exists, not the full backstory. Include it because it makes the ask easier to say yes to quickly, not because it's interesting.
- State the next step explicitly: what you need them to do, and by when, so they don't have to infer the deadline or the required action.
- Use the subject line to state the ask, not just the topic: "Approval needed by Thursday: Q3 budget line" tells the reader more than "Budget question."
- Keep the whole email short. If the request genuinely needs more context, put the essential ask up top and the detail below it, rather than making the reader wade through detail to find the ask.
Worked example
Subject: "Access request: prod DB read access, needed by Wednesday"
Body: "Could you grant me temporary read access to the orders table in prod? I'm investigating a customer-reported data discrepancy (ticket #4821) and need to check actual row values, which I can't do in staging since the issue only reproduces with real production data. Happy to have this access time-boxed to a few days and revoked afterward if that's easier to approve."
The ask (temporary read access) and the deadline context (needed by Wednesday) are in the subject line alone; the body confirms the specific ask, gives the minimum context needed to approve it, and proactively offers a constraint (time-boxed) that makes approval easier.
Trade-offs and pitfalls
- Leading with a long justification before the ask is the single most common failure; a reader has to hold the whole paragraph in their head waiting to find out what you actually want.
- Too little context can also fail: an ask with zero justification can force the reader to ask a clarifying question back, which is slower than including the one sentence of context that would have let them approve it immediately.
- For sensitive or high-stakes asks (a large budget approval, access to something risky), a slightly longer, more carefully justified email is worth the extra length; the "front-load the ask" principle still applies, it just means front-loading a well-justified ask rather than skipping justification entirely.
Can you share a specific instance where you persuaded a skeptical stakeholder to adopt your recommendation. What was their objection, and how did you address it?
Sample Answer
Direct answer
Persuading a skeptical stakeholder starts with diagnosing what kind of resistance you're actually facing, since the same "here's more data" response only works on an evidence-based objection. A political objection or a loss-of-control objection needs a different tactic entirely.
Structured elaboration
Objection taxonomy. Naming the type of resistance before choosing a tactic is what separates a senior answer from "I showed them more data":
| Objection type | What it sounds like | What actually resolves it |
|---|---|---|
| Evidence-based | "I don't trust this data or method" | More rigor, replication, or third-party validation |
| Political | Resistance for reasons unrelated to the evidence itself (turf, timing, a prior grudge) | Understanding the unstated interest at stake; more data doesn't move a non-evidentiary objection |
| Loss of control or trust | For example, a designer worried an automated system reduces their say | Preserving a real role or checkpoint for them in the new process, not proving the system works better |
Worked example
Situation. At a product org, a UX team relied on manual review of every design change against brand guidelines. A design systems lead proposed an automated linting check for a subset of mechanical rules. One senior designer resisted far more strongly than the proposal's scope seemed to warrant.
Stakes. The designer's review was a required approval gate; without their buy-in, adoption could be blocked or slow-walked indefinitely, regardless of how good the tool was.
The influence moves.
- Noticed the resistance didn't track with the evidence: false-positive-rate numbers didn't move the reaction at all, which was the signal something else was going on.
- Asked directly what was underneath the resistance, and learned it wasn't about accuracy: automating the check felt like it removed the designer's voice and shrank their judgment role.
- Reframed the proposal to preserve their say explicitly: the linter would catch only mechanical rule violations (spacing, contrast ratios), routing anything subjective to the designer's review, unchanged.
- Gave the designer a visible role in defining which rules counted as mechanical versus subjective, turning them from a blocker into the rule-owner.
Resolution. The designer became the tool's internal champion once their judgment role was made explicit rather than replaced.
What a senior candidate does differently. Doesn't try to win a trust objection with more data. A mid-level answer keeps citing the false-positive rate; a senior candidate diagnoses the objection type first and matches the tactic to it.
Trade-offs and pitfalls
- Misdiagnosis wastes your strongest tool. Aiming data at a political or trust objection wastes the one resource that can't solve that problem, and can read as tone-deaf to the stakeholder.
- Political objections sometimes can't be fully resolved through the stated concern, because the real driver is unstated. A senior candidate says plainly when they suspect this is happening rather than pretending the objection was purely rational.
- Preserving a role is not the same as granting a veto. The trade is scoping what the stakeholder keeps control over, not surrendering the decision.
Say you're placing a 5-node quorum-based cluster. Compare spreading those 5 nodes across 3 Availability Zones in one AWS region versus splitting them across two separate regions. How does quorum placement change, and how do you avoid split-brain in each topology?
Sample Answer
Direct answer
Within a single region, 3 AZs give you low-latency, redundant links (typically sub-2ms), so placing 5 nodes as 2-2-1 across the AZs lets you lose one whole AZ and still have a majority (3 of 5) reachable to keep accepting writes. Across two regions you cannot split 5 nodes evenly, so one region ends up holding the majority (3-2), and the region with only 2 nodes can never reach quorum on its own. Split-brain avoidance is the same rule in both cases (only the side that can prove it holds a majority may accept writes), but the two-region case carries a real risk that someone fails the minority side over anyway during a long partition, which is how split-brain actually happens in practice.
Structured elaboration
Single-region, 3-AZ placement (e.g., 2-2-1):
- AZ-to-AZ links are low-latency and rarely fully partition from each other (same region, redundant fiber paths).
- Losing one AZ still leaves 3 of 5 nodes reachable, so majority quorum holds and writes keep flowing.
- This mainly defends against a single AZ outage (power, networking gear), not against a true network split.
Two-region placement (e.g., 3-2):
- The region holding 3 nodes always has majority quorum by itself; the region with 2 never does.
- If the inter-region link drops, the 2-node region correctly refuses writes (it can't reach quorum) while the 3-node region keeps serving. That is the safe outcome, but it means the minority region's healthy nodes go write-unavailable.
- The dangerous failure mode is a human or an automation script promoting the minority region to "keep serving" during the partition. That creates two sides independently accepting writes, i.e. split-brain, and the divergence has to be reconciled or discarded once the link heals.
Why this is mostly an operational risk, not a protocol risk: consensus protocols like Raft already refuse to commit without a majority, so the protocol itself prevents split-brain as long as nobody forces an override. The real risk is a health check or runbook that misreads "can't reach the majority" as "the majority must be down" and promotes the wrong side.
Worked example
With N=5, majority is ceil((5+1)/2) = 3 nodes. In the 2-2-1 AZ layout, losing any single AZ still leaves at least 3 nodes across the remaining two AZs, so quorum holds. In the 3-2 region layout, if the WAN link between regions fails, the 3-node region has quorum (3/5, can elect a leader and accept writes) and the 2-node region does not (2/5, must reject writes and serve stale reads at best) until the link recovers.
Trade-offs and pitfalls
- Multi-region protects against a whole-region outage that multi-AZ cannot, but it adds real commit-path latency (cross-region round trips) and makes the minority-region-unavailable outcome unavoidable with an odd node count split unevenly.
- A common mistake is assuming a 3-2 region split protects both regions equally. It does not: only the 3-node region can survive a partition alone.
- An even split (e.g., 4 nodes as 2-2 across two regions) is worse, not safer: neither side can reach majority alone, so both stop accepting writes, or someone bolts on a tie-breaker node that becomes a new single point of failure.
- Overly aggressive health-check timeouts can misread a slow but healthy cross-region link as a partition and trigger an unnecessary failover, which is why managed cross-region services (e.g., Aurora Global Database) use deliberately conservative promotion procedures rather than fast automatic failover.
What the interviewer probes next
Expect a follow-up on what happens to writes that were in flight on the minority side when the partition started, and whether you'd ever choose an even node count.
Design the storage schema and partitioning strategy for a time-series database that has to handle high-cardinality metrics while still supporting efficient downsampling and range queries. Cover the data model (metric name, labels, timestamp, value), how you'd choose partition keys, your chunking strategy, compression, and index structures, and what that trades off in query latency versus storage overhead.
Sample Answer
The core design decision is a two-level key: shard by a hash of the series identity so writes and label lookups distribute evenly, and chunk by time within each series so both compression and range queries stay efficient. Everything else (indexing, downsampling, compression) hangs off that.
Data model
Each sample is (metric_name, labels, timestamp, value). In practice you don't store metric_name and labels as free strings per sample; you compute a SeriesID once per unique combination:
and every sample after that is just (SeriesID, timestamp, value). The label set is stored once in a separate series-metadata record, not repeated per sample.
Partitioning and chunking
flowchart LR
A[Sample Ingest] --> B[Hash by SeriesID]
B --> C[Shard 1]
B --> D[Shard 2]
B --> E[Shard N]
C --> F[Head Block: in-memory chunk]
F --> G[Flush to Durable Chunk]
G --> H[Inverted Label Index]
G --> I[Block Storage]
H --> J[Query: label lookup]
I --> J
- Partition key:
(time_window, shard_id)whereshard_id = hash(SeriesID) mod N. Time-first partitioning means old partitions become immutable and can be compacted/downsampled/expired independently; sharding by SeriesID hash inside each time window spreads a hot series's neighbors across nodes instead of colocating them. - Chunking: each series appends to an in-memory "head" chunk, flushed to a durable, compressed chunk when it hits either a time bound (e.g., 2 hours) or a size bound. Chunk metadata (SeriesID, start/end timestamp, min/max value) lets a query prune whole chunks without decompressing them.
- Compression: delta-of-delta for timestamps, XOR (Gorilla-style) for values within a chunk, general-purpose compression (LZ4/Snappy) over the chunk byte stream, dictionary-encoded label strings referenced by ID.
- Index structures: a primary LSM-style index maps
SeriesID -> chunk pointersfor fast range scans of one series; a secondary inverted index mapslabel_key=value -> [SeriesIDs], typically stored as compressed bitmaps (e.g., Roaring bitmaps) so a query like{job="checkout", env="prod"}becomes a bitmap intersection instead of a full scan.
Sizing the design against a concrete workload
Take 10,000,000 active series, an average of 6 label pairs per series (beyond the metric name), a 2-hour flush window at 15-second scrape interval, and a target of at most 2,000,000 active series per shard for balanced load:
active_series = 10_000_000
avg_labels_per_series = 6
bytes_per_posting_entry = 3 # Roaring-bitmap-compressed 32-bit series ID, moderately dense postings (assumption)
total_postings_entries = active_series * avg_labels_per_series
inverted_index_bytes = total_postings_entries * bytes_per_posting_entry
chunk_window_s = 2 * 3600
scrape_interval_s = 15
samples_per_series_per_chunk = chunk_window_s / scrape_interval_s
compressed_bytes_per_sample = 2 # consistent with the Gorilla-style bit math above, rounded up for a mixed workload (assumption)
head_bytes_per_series = samples_per_series_per_chunk * compressed_bytes_per_sample
head_total_bytes = active_series * head_bytes_per_series
target_series_per_shard = 2_000_000
min_shards = active_series / target_series_per_shard
Result: total_postings_entries = 60,000,000, inverted_index_bytes ≈ 180 MB, samples_per_series_per_chunk = 480, head_bytes_per_series = 960, head_total_bytes ≈ 9.6 GB, min_shards = 5.0 (round up to 8 for power-of-2 hash routing headroom).
That tells you two concrete things: the in-memory working set for the head block across all shards (~9.6 GB) comfortably fits on modern hardware split across 8 shards (about 1.2 GB/shard), and the inverted index itself (~180 MB) is small relative to the chunk data, meaning label-lookup cost is dominated by bitmap intersection speed, not index size. If active series grew 10x to 100M, head memory would grow to ~96 GB total, which is the point where you'd need to either shrink the chunk window (trading write amplification for lower per-shard memory) or add more shards.
Trade-offs
| Choice | What you gain | What it costs |
|---|---|---|
| Smaller chunk window (e.g., 30 min instead of 2h) | Lower head-block memory footprint, faster recovery on restart | More, smaller chunks on disk; more flush/compaction overhead; slightly worse compression ratio since fewer samples per block |
| More shards | Better write/query parallelism, smaller failure blast radius per shard | Cross-shard queries for a single label predicate now fan out to more nodes; more metadata to track |
| Time-first vs. hash-first partition key ordering | Time-first makes retention/expiry a cheap drop-partition operation | Hash-first can improve single-series read locality but makes retention expensive (has to scan and delete rather than drop) |
| Roaring-bitmap inverted index | Fast label-predicate intersection at low memory cost | Degrades if label values are extremely high-cardinality and postings lists become sparse and non-contiguous, hurting bitmap compression |
Pitfalls
- Choosing a partition key that's purely hash-based (no time component) makes retention expensive: you can't just drop a partition, you have to scan and delete, which is the mistake most designs make when they optimize only for write balance and forget that data has to expire.
- Sizing the head-block window without doing the arithmetic above (as many designs do) leads to either restart storms (window too large, recovery replays too much) or excessive flush overhead (window too small).
- An inverted index without a query-time cardinality guard turns a single broad label predicate (like an unbounded regex) into a full index scan across all shards; that needs a query-side cost limit independent of the storage design.
Design a liveness and readiness probe strategy for a microservice deployed behind a load balancer and autoscaler. Explain what should be checked in each probe, how probe failures should be handled by the platform, and how probe configuration affects rolling updates, draining, and availability.
Sample Answer
Situation: You're designing probes for a microservice running in Kubernetes behind a load balancer and autoscaler. Here's a practical, SRE-focused strategy.
Readiness probe (what + why)
- Purpose: signal "can serve real traffic". Prevents LB from sending requests until app is ready and removes pod from service during transient failures.
- Checks: HTTP GET /health/ready returning 200; verify that critical downstreams are reachable (DB connection pool non-empty, caches warm, feature flags loaded). Keep it fast (<200ms) and idempotent.
- Config example: initialDelaySeconds: 5, periodSeconds: 5, timeoutSeconds: 1, failureThreshold: 3 — allow short transients but remove pod within ~15s if repeatedly failing.
Liveness probe (what + why)
- Purpose: detect deadlocked or unhealthy processes that need restart.
- Checks: lightweight self-check (HTTP GET /health/live or TCP probe) that ensures event loop/threads are responsive; avoid expensive external calls.
- Config example: initialDelaySeconds: 30, periodSeconds: 10, timeoutSeconds: 2, failureThreshold: 3 — restart within ~36s if unresponsive.
How platform should handle failures
- Readiness failure: kubelet marks Pod NotReady → Endpoints controller removes it from Service → LB stops routing. Do NOT restart. Alert if prolonged NotReady (SLO breach).
- Liveness failure: kubelet restarts container. Ensure logs/metrics and crash-loop backoff policy are monitored; create alert on repeated restarts.
Impact on rolling updates, draining, and availability
- Rolling updates: readiness gate ensures new pods only receive traffic when readiness passes; set maxUnavailable conservatively (e.g., 10%) to preserve capacity.
- Draining/termination: use preStop hook + terminationGracePeriodSeconds > typical request timeout to let in-flight requests finish; readiness probe should immediately fail on SIGTERM so pod is removed from load balancer before termination.
- Autoscaling: HPA decisions should be based on ready pods; long readiness times can delay scale-up; ensure readiness is fast but accurate.
- Trade-offs: aggressive liveness restarts can mask slow failures; overly strict readiness may reduce available capacity during deployments. Tune thresholds based on real latency and failure modes; instrument and alert on probe-related events.
This combination keeps restarts targeted, avoids sending traffic to partially-initialized pods, and makes rolling upgrades and drains predictable.
You operate a microservices ecosystem where services have different RPO requirements: user profiles need 30 seconds, payment transactions need zero, analytics can tolerate 24 hours. Design a cross-region replication and backup strategy that meets each service's RPO without over-engineering the ones that don't need it.
Sample Answer
Direct answer
Don't pick one replication strategy for the whole system, match the mechanism to each service's stated RPO (recovery point objective: the maximum amount of data, measured in time since the last durable copy, the service can afford to lose): synchronous or quorum replication for the zero-RPO service, change-data-capture streaming for the near-real-time service, and periodic snapshotting for the tolerant one. Then sequence recovery in dependency order so a service isn't restored before the upstream it depends on is back. Over-engineering shows up as spending synchronous-replication effort on the analytics service that only ever needed a daily snapshot.
Structured elaboration
| Service | RPO target | Mechanism | Why this and not stronger or weaker |
|---|---|---|---|
| Payment transactions | 0 | Synchronous or quorum-committed write across regions | Anything weaker risks losing a committed financial transaction, the one class of loss with real legal and trust cost |
| User profiles | 30 seconds | CDC streaming to a regional replica | Full synchronous replication isn't justified by a 30s target and would add unnecessary write latency to every update; async streaming with monitored lag comfortably meets it |
| Analytics | 24 hours | Periodic snapshot to replicated object storage | Synchronous or streaming replication here is pure over-engineering, batch analytics has no user-facing latency requirement |
Recovery ordering. Sequence recovery by dependency and criticality, not by which service happens to come back online first: promote the payments store first, the highest-integrity requirement and smallest tolerance for being wrong, verify it, then catch up and promote the profile replica, verify it, then resume analytics last, since nothing else depends on analytics being current.
flowchart TD
F[Region A failure detected] --> P[1. Promote payments quorum replica, fence old leader]
P --> V1{Verify: writes accepted, balances reconciled}
V1 --> U[2. Drain CDC backlog, promote profile replica]
U --> V2{Verify: profile lag = 0}
V2 --> A[3. Resume analytics batch jobs from last snapshot]
A --> V3{Verify: end-to-end smoke tests pass}
Worked example: setting the CDC alerting margin for the 30-second service
Assume the profile CDC pipeline runs with a measured steady-state lag of 8 seconds, a baseline from monitoring. The RPO budget is 30 seconds, so the available headroom before breaching the target is:
30−8=22 secondsSet the alert threshold partway through that headroom, not right at the limit, so operators have real reaction time before an actual breach:
8+222=19 seconds≈20 seconds (alert threshold)That leaves roughly 10 seconds of buffer between the alert firing and the RPO actually being breached, enough time for an on-call engineer to begin triage before the commitment is broken, not just a number picked because it's below 30.
Worked example: sizing the payments quorum's commit-latency cost
Payments run a 3-region majority quorum, 2 of 3 acks required to commit. Nearer replica round trip 20ms, farther replica 45ms. Since only one remote ack is needed alongside local:
commit latency=local write+min(20,45)=local write+20 msThis is the explicit, quantified latency tax paid on every payments write to guarantee RPO=0, weighed against the alternative, accepting some RPO on payments, which the requirement already ruled out.
Worked example: analytics snapshot cadence margin
The RPO target is 24 hours; a snapshot cadence set exactly at 24 hours leaves zero margin if a single run is delayed or fails. Running at a 20-hour cadence instead:
24−20=4 hours of buffer against a missed or delayed run still landing inside the 24-hour RPOTrade-offs & pitfalls
- Recovering services in the wrong order, for example bringing user-facing profile reads back before payments is verified consistent, can let the system present data that later needs correcting once the higher-priority service catches up; sequence by criticality and dependency, not convenience.
- Setting the CDC alert threshold exactly at the RPO limit gives operators zero reaction time; build in the margin explicitly, as in the worked example.
- A cadence set exactly equal to an RPO target, as in the naive 24-hour snapshot case, has no tolerance for a single missed run; always leave margin.
- Applying the payments-grade synchronous mechanism to the profile or analytics services because it's "the safest option" is not safety, it's unnecessary latency and cost on writes that never needed that guarantee. Over-engineering the services that can comfortably tolerate a higher RPO, namely profile (30 seconds) and analytics (24 hours), by giving them payments-grade guarantees they don't need is exactly the failure mode this question is testing for.
Compare Jenkins, GitHub Actions, and GitLab CI (or another managed pipeline service) for a mid-size company adopting or consolidating its CI/CD platform. Evaluate ease of use, scalability, extensibility (plugin/action ecosystem), security controls, multi-tenancy, and migration effort from whatever the team runs today. Recommend one platform for a specific scenario (for example, a hybrid on-premise-plus-cloud environment with strict secret-management requirements) and justify the trade-offs you're accepting.
Sample Answer
Direct answer
Jenkins, GitHub Actions, and GitLab CI trade off along the same handful of axes: how much infrastructure you own, plugin/extension ecosystem breadth, and multi-tenancy and security posture. The right choice depends heavily on where your code already lives, your team's appetite for running infrastructure, and how much you need extensibility versus a smaller, more opinionated surface.
Structured elaboration
Jenkins uses a controller-agent architecture: you run and maintain the controller (or pay someone to), and it has by far the largest plugin ecosystem of the three, which is both its greatest strength (there's a plugin for almost anything) and its biggest operational liability (plugin compatibility, security patching, and version upgrades are an ongoing maintenance burden, and a bad plugin can take down the whole controller). Extensibility is effectively unlimited, but that comes with the highest maintenance overhead of the three options.
GitHub Actions is a fully managed SaaS platform tightly integrated with GitHub: no controller to run, workflows live as YAML in the repository, and GitHub manages runner infrastructure for hosted runners. Ease of use and integration with the rest of the GitHub ecosystem (PRs, issues, packages) is its strongest point; extensibility comes through a large but more curated marketplace of actions rather than Jenkins' raw plugin breadth, and self-hosted runners are available if you need to run inside your own network.
GitLab CI is a pipeline engine that's part of a broader, single-vendor DevOps platform (source control, CI, container registry, and security scanning in one product), configured via a .gitlab-ci.yml file, using lightweight Go-based runners. Its strength is that consolidation: less integration glue needed between separate tools, at the cost of being more opinionated about how you structure things if you want the full platform's benefits.
Security controls and multi-tenancy differ mainly by deployment model, not by inherent design: Jenkins self-hosted on-premise keeps everything inside your network but makes you responsible for isolation and patching; GitHub Actions and GitLab CI's hosted SaaS tiers handle infrastructure security for you but require trusting the vendor's isolation between tenants, while their self-hosted/self-managed variants give you the same control (and burden) as Jenkins.
Migration effort from an existing Jenkins setup is real and often underestimated: Jenkinsfile Groovy logic, especially anything using scripted-pipeline flexibility or complex shared libraries, doesn't translate directly to GitHub Actions or GitLab CI YAML, and a migration typically needs either automated translation for common patterns plus manual rework for the rest, or a deliberate re-architecture rather than a literal line-by-line port.
Worked example
A mid-size SaaS company already hosting code on GitHub, wanting to minimize infrastructure ownership, with straightforward build/test/deploy needs, is well served by GitHub Actions: no controller to maintain, tight PR integration, and a plugin ecosystem broad enough for typical needs. A regulated enterprise with strict on-premise requirements, heavy investment in custom Jenkins plugins, and existing operational capacity to run infrastructure might reasonably stay on self-hosted Jenkins despite the maintenance cost, because the migration cost and the loss of deeply customized plugin behavior would outweigh the operational savings.
Trade-offs and pitfalls
The most common mistake is comparing these platforms purely on feature checklists without weighing the migration cost from whatever you're currently running, which is frequently the dominant factor in the actual decision; a technically 'better' platform that costs six months of migration effort may not be the right call for a team under delivery pressure. The second is underestimating Jenkins' plugin-maintenance burden when comparing it against a managed SaaS platform on pure capability, since raw extensibility isn't free.
During a P1 outage, the first responder doesn't restore service within a few minutes and doesn't acknowledge the page. Walk through what happens next: escalation timeouts, who gets paged, which channels you use, and who ultimately declares a major incident.
Sample Answer
Direct answer
Escalation has to be a timed staircase, not a hope that someone notices: each tier gets an explicit timeout, and crossing it triggers the next tier automatically rather than waiting for a human to decide to escalate. The critical branch is distinguishing "primary hasn't acknowledged at all" (a much stronger, faster signal that they're unreachable) from "primary acknowledged but hasn't fixed it yet" (a slower, more judgment-based signal), and a specific person needs to be unambiguously the incident commander once the incident crosses into major-incident territory.
Structured elaboration
flowchart TD
A[Page fires to primary] --> B{Acked within 5 min?}
B -->|No| C[Auto-escalate to secondary]
B -->|Yes| D{Mitigated or owned by 15 min?}
C --> D
D -->|No| E[Notify SRE lead and EM at 20 min]
E -->|Sev1 criteria still met at 30 min| F[IC declares Major Incident]
F --> G[Comms lead posts updates every 15 min]
| Time | Trigger | Action | Channel |
|---|---|---|---|
| T+0 | Page fires | Primary paged | PagerDuty + phone |
| T+5m | No ack from primary | Auto-escalate to secondary (unreachable-primary path) | PagerDuty + phone |
| T+15m | Acked but not mitigated or no clear owner | Secondary/backup engages as acting responder | Incident Slack channel |
| T+20m | Still unresolved | SRE lead and engineering manager notified | PagerDuty + phone |
| T+30m | Sev1 criteria still met, no imminent fix | Incident Commander formally declares a Major Incident, opens a bridge | Incident channel + status page |
Redundancy for an unreachable primary. The T+5m no-ack escalation exists specifically because "didn't acknowledge" is not the same failure mode as "acknowledged but stuck." An unreachable primary should trigger the fastest possible escalation, on multiple channels at once (page, SMS, phone call) rather than a single retry, since every minute the whole rotation is effectively uncovered.
Who declares Major Incident, and when. The role of Incident Commander should be predefined (whoever is the senior-most engaged responder at the moment of declaration, or a designated on-call IC rotation), not assigned ad hoc during the incident. Declaration criteria should be objective: customer-facing impact confirmed and no imminent fix, not a vibes call.
Audit trail. Every escalation event (page sent, ack received, tier crossed, IC declared) should be logged automatically by the paging tool with timestamps, not reconstructed from memory afterward. This is what makes the eventual postmortem's timeline accurate instead of approximate.
Worked example
A P1 outage affects payment processing. T+0: primary is paged, acknowledges within 2 minutes, and starts investigating (restart attempts, checking recent deploys). T+15m: the issue isn't mitigated and the primary flags they need help; the secondary engages and effectively becomes acting IC. T+20m: still unresolved, SRE lead and EM are notified via page and phone. T+30m: payment processing is still materially impaired with no fix in sight, so the SRE lead formally declares a Major Incident: opens an incident bridge, assigns a comms lead to post external status-page updates and an internal lead to keep driving the technical fix, and sets a 15-minute update cadence. Every one of these steps (ack time, escalation trigger, IC declaration) is logged automatically with a timestamp by the paging tool, which becomes the backbone of the postmortem timeline.
Trade-offs and pitfalls
- Pitfall: "someone will notice and escalate" with no explicit timer is the default at many small companies and reliably fails exactly when it matters most, at 3am with a skeleton crew.
- Pitfall: leaving IC as "whoever showed up" instead of a defined selection rule creates coordination ambiguity in the first minutes of a major incident, which is the worst possible time to negotiate who's in charge.
- Trade-off: the T+5m no-ack timeout should be noticeably tighter than the T+20m and T+30m escalation-for-non-progress timeouts, because "didn't acknowledge at all" is a much stronger signal of a coverage gap than "acknowledged and is still working on it." Making every tier the same length either escalates too aggressively on ordinary, in-progress incidents or too slowly on a genuinely unreachable primary.
A boundary check validates that a value (an index, an offset, a size) falls within the range the code actually handles correctly, and it routinely catches real production bugs before they cause damage. Pick three DIFFERENT kinds of boundary bugs you've seen or can construct realistically, and for each: describe the bug it would cause if unchecked, the specific defensive check you'd add, and a unit test that would catch a regression if the check were later removed.
Sample Answer
Direct answer
A boundary check catches a specific class of bug (accessing an index, offset, or value outside the range the code actually handles correctly) at the moment it happens, instead of letting it silently produce wrong output or crash somewhere unrelated later; three concrete examples: array/list indexing, pagination offsets, and numeric limits.
Structured elaboration and worked examples
- Array indexing: the bug is an off-by-one or attacker-controlled index reading past the end of a buffer or list. The defensive check: validate
0 <= index < len(array)before accessing, raising a clearIndexError/custom exception instead of either crashing with a cryptic native error or, in an unsafe language, reading adjacent memory. A unit test:assert_raises(IndexError, get_item, [1,2,3], 5). - Pagination offsets: the bug is a negative or absurdly large
offset/limitfrom a client, which can either error confusingly deep in a SQL driver or, worse, silently return zero rows and look like 'no data' rather than 'bad request'. The defensive check: clamp or rejectoffset < 0and caplimitto a sane maximum (say 1000) before it reaches the query layer. A unit test:assert paginate(items, offset=-5, limit=10) raises ValueError. - Numeric limits: the bug is an integer overflow or an out-of-domain value (a negative quantity in an order, a percentage over 100) silently producing a nonsensical result instead of an error. The defensive check: validate the value's range explicitly before using it in a calculation. A unit test:
assert_raises(ValueError, apply_discount, price=100, percent=150).
Trade-offs and pitfalls
Each of these checks is cheap individually, but the value comes from applying them CONSISTENTLY at every place the boundary is actually crossed (every array access from external input, not just the ones you happen to remember); a single unguarded pagination endpoint added six months later by someone who didn't see this pattern reintroduces the exact bug class. Treat these as patterns to lint for or wrap in a shared utility function, not as one-off checks to remember individually.
You inherit an organization where incidents are hidden and blame is publicly assigned. Over a six-month plan, describe concrete changes to systems, processes, and leadership behaviors you'd implement to promote transparency, psychological safety, and learning. Include metrics to track progress and tactics to shift incentives.
Sample Answer
Month 0–1: Assess & signal change
- Run anonymous baseline surveys (psych safety, willingness to report incidents); collect incident history, missed postmortems, MTTR, SLO burn data.
- Quick wins: publish a one-paragraph “blameless incident policy” signed by execs; open an anonymous incident reporting channel (forms/Slack).
- Metrics baseline: MTTR, # incidents reported, % incidents with postmortem, psych-safety score.
Month 1–3: Build safe systems + runbooks
- Tooling: deploy an incident tracker (Jira/Playbook) with required fields, optional reporter identity, and a postmortem template focused on cause/contributing factors and action items.
- Create/curate runbooks and on-call playbooks; integrate into alerting so responders use documented steps.
- Process: mandate blameless postmortems within 7 days for Sev≥2; assign a neutral facilitator (rotating) trained in blameless facilitation.
- Leadership behavior: leaders attend first two postmortem meetings as observers, explicitly model curiosity (“what happened?” not “who failed?”).
- Metrics & targets (by month 3): +50% incident reporting vs baseline, 80% postmortem completion rate, MTTR reduced 20%.
Month 3–4: Embed learning and transparent metrics
- Learning loop: publish redacted postmortems & remediation trackers in a searchable “learning library”; run monthly “incident lessons” syncs to share patterns.
- Measurement: introduce SLOs + error budgets publicly; show real-time dashboards for SLO burn and active incidents.
- Incentives: align performance reviews to reliability contributions — reward documented remediation, runbook ownership, and mentoring rather than “no incidents.”
- Tactic: introduce “safety moments” into weekly standups; leaders start meetings by exposing one thing that went wrong and what they learned.
Month 4–6: Institutionalize and shift incentives
- Process: automate follow-ups—postmortem action items assigned with deadlines and tracked to closure; quarterly reliability OKRs tied to team compensation pools.
- Leadership dev: run coaching for managers on psychologically safe feedback, praising reporting and corrective actions publicly.
- Metrics & targets (by month 6):
- Psych-safety score up by ≥20% from baseline
- Incident reporting up (near-miss + low-sev) by ≥100% (shows transparency)
- Postmortem completion ≥95% within SLA
- MTTR down ≥30%; repeat incident rate down 50%
- % of OKR compensation tied to reliability outcomes ≥10%
Tactics to shift incentives
- Replace “blame avoidance” KPIs with: postmortem participation, closed remediation rate, runbook completeness, and SLO health.
- Public recognition program (monthly) for teams that close action items and reduce incident recurrence.
- Budget for small reliability experiments — teams get microgrants to implement improvements discovered in postmortems.
Why this works
- Systems and tooling lower friction to report and learn.
- Processes enforce timely, blameless investigation and remediation.
- Leadership modeling and performance alignment change social and economic incentives from hiding incidents to surfacing and fixing them.
- Metrics provide objective feedback so leaders can see culture change and operational improvement.
Edge considerations
- Redact sensitive info when publishing.
- Start with volunteer teams for pilots to prove value before full rollout.
- Monitor for gaming (reporting noise) and refine metrics (focus on signal: repeat incidents, MTTR, remediation closure).
Recommended Additional Resources
- Cracking the Coding Interview by Gayle Laakmann McDowell - comprehensive technical preparation for coding rounds with detailed walkthroughs
- System Design Interview by Alex Xu and Shuyi Xu - essential for system design rounds with real-world Airbnb-like examples
- Designing Data-Intensive Applications by Martin Kleppmann - deep dive into distributed systems and data engineering concepts critical for SRE
- Site Reliability Engineering: How Google Runs Production Systems (Google's SRE Book) - foundational text covering monitoring, incident response, SLOs, and SRE philosophy
- The DevOps Handbook by Gene Kim, Jez Humble, Patrick Debois, John Willis - practical guide to improving reliability, deployment, and operations
- Building Microservices by Sam Newman - understanding service architecture and operational concerns
- LeetCode.com - practice medium-to-hard algorithmic problems; focus on arrays, trees, graphs, and dynamic programming
- System Design Interview YouTube Channel by Gaurav Sen - visual explanations of distributed systems and architecture concepts
- Airbnb Engineering Blog (airbnb.io/engineering) - learn about Airbnb's actual infrastructure decisions, technology choices, and engineering challenges
- PagerDuty Incident Response Academy - free training on incident management best practices
- Prometheus Documentation (prometheus.io) - learn modern monitoring and alerting systems
- Kubernetes Official Documentation - understand container orchestration if not already familiar
- Pramp.com and Exponent.com - practice mock interviews with real people before your actual interview
- Interviewing.io - additional mock interview platform with detailed feedback
- High Scalability Blog - real-world architecture case studies from companies like Airbnb, Netflix, and others
Search Results
Airbnb Interview Experience (2019) - Part 1 - YouTube
Overall interview experience at Airbnb for "L4 Site Reliability Engineer ... Top 10 Most Common Job Interview Questions ANSWERED. Cass ...
Airbnb Software Engineer Interview Guide – Process, Questions ...
The Airbnb software engineer interview process typically spans four to five stages, each designed to rigorously assess your technical skills, problem-solving ...
A Deep Dive Into the Airbnb Interview Process
A Deep Dive Into the Airbnb Interview Process · Step 1: Initial Phone Call(s) Screen · Step 2: Technical or Peer Phone Screens · Step 3: Onsite ...
Airbnb Site Reliability Engineer Interview Experience - San ... - Taro
The interview is passable. They are not knowingly trying to trip you up with trick questions. Even for sessions that I did relatively poorly on, ...
AirBnB SRE virtual on-site coding interviews | Tech Industry - Blind
AirBnB SRE virtual on-site coding interviews. The AirBnB virtual on-site for SRE has 2 coding rounds. For SWE, the typical problems are ...
Staff Eng | Facebook/Airbnb/Pinterest/Square/Stripe/ByteDance
The org head asked pretty probing questions around previous teams, how I worked with people, handled difficulties, etc. Other: Like the Square interview, this ...
Site Reliability Engineering Interview Questions - MentorCruise
Master your next Site Reliability Engineering interview with our comprehensive collection of questions and expert-crafted answers.
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