← Airbnb Interview Insights

Airbnb·Software Engineer·Onsite - System Design / Architecture·Senior

SeniorPrefer not to say
Jun 2026

Summary

Airbnb system design round focused entirely on scaling a host listings dashboard. The problem was well-scoped but had a lot of moving parts, and I felt like I was playing catch-up the whole time.

Questions Asked (4)

Q1

Design the backend for a host listings page that shows aggregated metrics (nights booked, average price) across a date range the host selects, and make it fast when a host has 100+ listings.

System DesignData ModelingTechnical Trade-offs
Author's notes

This is basically a read-heavy aggregation problem with a date filter on top, and I spent too long talking about the API shape before getting to the actual bottleneck.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements: the date range, aggregation metrics, and performance goals. Then propose a pre-aggregated data model (e.g., daily rollups per listing) to avoid scanning raw bookings, and discuss how to scale for 100+ listings with caching and parallel processing.

Pro tip: Mention that you would pre-aggregate data at write time or via a batch job, and use a cache with a short TTL for the host's dashboard, since hosts often refresh the page. This shows you think about real-world usage patterns and cost efficiency.

1. Clarify Requirements and Constraints

Ask about the expected query patterns, data volume, freshness requirements, and latency SLA. Confirm that the date range is host-selected and that metrics are aggregated across all listings.

2. Design the Data Model

Propose a pre-aggregated table (e.g., daily_stats per listing) that stores nights booked and total revenue per day. This avoids expensive scans of raw bookings and enables fast range queries.

3. Optimize Query Execution

For a host with 100+ listings, fetch aggregates for all listings in parallel or in a single query using an index on (host_id, date). Use a cache (e.g., Redis) to store results for common date ranges.

4. Handle Updates and Freshness

Decide how to update the aggregates: either via a stream processing job (e.g., Kafka + Flink) for near-real-time, or a batch job (e.g., nightly). Discuss trade-offs between consistency and performance.

5. Scale and Monitor

Shard the pre-aggregated table by host_id or date to distribute load. Add monitoring for query latency and cache hit rate, and consider read replicas for scaling reads.

Key Points to Mention

  • Pre-aggregation (daily rollups) to avoid scanning raw bookings
  • Indexing strategy: composite index on (host_id, date) for fast range queries
  • Caching layer (e.g., Redis) with TTL for frequently accessed date ranges
  • Parallel processing or batch fetching for multiple listings
  • Trade-offs between real-time and batch aggregation (freshness vs. performance)
  • Sharding or partitioning by host_id to distribute load

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q2

How do you handle edge cases like partial date overlaps and cancelled reservations when computing nights booked?

Data ModelingTechnical Trade-offsSystem Design
Author's notes

Blanked for a second on the cancellation piece.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the business definition of a 'night booked' and the data model, then systematically address each edge case (partial overlaps, cancellations, time zones) with concrete rules and trade-offs. Emphasize correctness, performance, and how your solution scales with large datasets.

Pro tip: Mention that you would validate your logic with property-based testing and real-world data samples, and that you'd document assumptions to align with stakeholders. This shows you think beyond code to product impact and maintainability.

1. Clarify requirements and definitions

Ask questions to understand what constitutes a 'night booked' (e.g., check-in to check-out, excluding checkout day) and how cancellations affect it. Confirm the granularity (per night, per reservation) and any business rules.

2. Model the data and edge cases

Identify all edge cases: partial overlaps (reservation spans across month boundaries), cancellations (full vs. partial), time zones, and DST. Represent reservations as intervals and define operations for intersection and subtraction.

3. Design the algorithm

Propose an algorithm that computes nights booked by iterating over dates or using interval arithmetic. For cancellations, exclude cancelled nights or adjust the interval. Handle partial overlaps by clipping intervals to the query range.

4. Address trade-offs and scalability

Discuss trade-offs between precomputation (e.g., nightly snapshots) and on-the-fly calculation. Consider performance for large datasets and suggest indexing or partitioning strategies.

5. Validate and test

Outline a testing strategy: unit tests for edge cases, property-based tests for invariants, and validation against real data. Mention monitoring and alerting for data quality issues.

Key Points to Mention

  • Definition of a night: typically the number of nights between check-in and check-out, excluding checkout day.
  • Handling partial overlaps: clip reservation intervals to the query period and count only overlapping nights.
  • Cancellations: distinguish between cancelled before check-in (exclude entirely) and mid-stay cancellations (count only nights stayed).
  • Time zones and DST: store dates in UTC or property local time and handle DST transitions to avoid off-by-one errors.
  • Performance: use efficient data structures (e.g., interval trees) or pre-aggregated tables for large-scale queries.
  • Data quality: validate inputs, handle missing or inconsistent data, and log anomalies for investigation.

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q3

How would you keep the aggregated metrics up to date as new reservations come in or existing ones change?

System DesignTechnical Trade-offsAPI & Integrations
Author's notes

I went straight to a message queue approach, update the rollup tables asynchronously when reservation events fire.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the requirements: what metrics, how fresh they need to be, and the expected read/write patterns. Then propose a hybrid approach that combines real-time updates for critical metrics with batch processing for historical or less time-sensitive aggregations, and discuss trade-offs like consistency, latency, and cost.

Pro tip: Mention the importance of idempotency and handling out-of-order events, as reservations can be created, modified, or cancelled, and events may arrive late or duplicated. Also, consider using a lambda architecture or a unified streaming pipeline with a system like Apache Flink or Kafka Streams to balance freshness and accuracy.

1. Clarify requirements

Ask about the metrics needed, acceptable staleness, read patterns, and scale. This ensures the solution aligns with business needs.

2. Choose an update strategy

Decide between real-time (stream processing) and batch (periodic recomputation) based on freshness requirements and complexity.

3. Design the data pipeline

Outline how reservation events flow from the source to the aggregation layer, including handling of inserts, updates, and deletes.

4. Address consistency and correctness

Discuss techniques like idempotent writes, event ordering, and reconciliation to ensure metrics remain accurate despite concurrent changes.

5. Discuss trade-offs and scalability

Compare options (e.g., streaming vs. batch, push vs. pull) and explain how the design scales with increasing reservation volume.

Key Points to Mention

  • Event-driven architecture with a message queue (e.g., Kafka) to capture reservation changes
  • Stream processing for real-time aggregation (e.g., Apache Flink, Kafka Streams) and batch processing for historical corrections
  • Idempotency and exactly-once semantics to handle duplicate or retried events
  • Handling out-of-order events using event time and watermarks
  • Data store choices for serving aggregates (e.g., Redis, Cassandra) and their trade-offs
  • Monitoring and reconciliation to detect and fix discrepancies between source and aggregates

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q4

What are your performance goals for this page and how would you validate that the design actually meets them?

System DesignProduct Analytics & Metrics
Author's notes

Honestly a question I should have raised myself earlier rather than waiting for them to ask.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the page's purpose and user journey, then define specific, measurable performance goals tied to business and user experience metrics. Explain how you would validate the design through A/B testing, performance monitoring, and iterative analysis, ensuring alignment with Airbnb's quality standards.

Pro tip: Emphasize the importance of setting guardrail metrics to catch unintended negative impacts, and mention that validation should be continuous, not a one-time check.

1. Clarify Page Purpose and User Journey

Identify the page's role in the user flow and its key objectives, such as driving bookings or reducing bounce rates. This ensures performance goals are relevant and user-centric.

2. Define Performance Goals

Set specific, measurable goals like page load time under 2 seconds, Time to Interactive (TTI) under 3 seconds, and conversion rate improvements. Tie these to business KPIs and user experience.

3. Choose Validation Methods

Select appropriate methods such as A/B testing, performance monitoring tools (e.g., Lighthouse, WebPageTest), and real user monitoring (RUM) to collect data on the defined metrics.

4. Analyze and Iterate

Compare results against goals, identify bottlenecks, and iterate on the design. Use statistical significance to ensure reliable conclusions.

5. Monitor and Guardrail

Continuously monitor performance post-launch and set guardrail metrics to detect regressions or unintended consequences, ensuring long-term success.

Key Points to Mention

  • Core Web Vitals (LCP, FID, CLS) as standard performance metrics
  • A/B testing and multivariate testing for design validation
  • Real User Monitoring (RUM) and synthetic monitoring tools
  • Business metrics like conversion rate, bounce rate, and engagement
  • Statistical significance and sample size considerations
  • Guardrail metrics to prevent negative side effects

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.