← Airbnb Interview Insights

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

Senior
Jun 2026

Summary

Airbnb system design round for a software engineer role. The whole session was basically one big question about building a landlord dashboard, and it went pretty deep into data modeling, caching, and pipeline architecture.

Questions Asked (4)

Q1

Design a dashboard that lets a host see total nights booked and average nightly price across all their listings for any date range they pick, with the UI responding in under 200ms.

System DesignData ModelingTechnical Trade-offs
Author's notes

This is where I spent most of the interview.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements: what 'total nights booked' and 'average nightly price' mean, how date ranges are selected, and the scale of data. Then propose a high-level architecture with pre-aggregation (e.g., daily rollups) and a fast query layer (e.g., in-memory cache or columnar store) to meet the 200ms latency. Finally, discuss trade-offs between consistency, cost, and complexity.

Pro tip: Emphasize that the 200ms requirement likely necessitates pre-computed aggregates and caching, but also discuss how to handle late-arriving data and ensure the dashboard remains reasonably fresh. Mention that you'd measure and monitor p95 latency to validate the design.

1. Clarify Requirements and Scope

Ask questions to understand data volume, update frequency, definition of 'nights booked' and 'average nightly price', and whether the date range is arbitrary or limited. Confirm the 200ms is for UI response, not just backend.

2. Design Data Model and Aggregation Strategy

Propose a fact table of bookings with nightly granularity, and pre-aggregate daily totals per listing and host. Consider using a star schema or denormalized rollup tables for fast reads.

3. Choose Storage and Query Layer

Select a storage solution that supports fast range queries (e.g., columnar database like Redshift, or a key-value store with pre-computed aggregates). Add a caching layer (e.g., Redis) for frequently accessed date ranges.

4. Address Latency and Scalability

Ensure the query path is optimized: use indexes, partition by date, and limit the amount of data scanned. Consider materialized views or incremental updates to keep aggregates fresh.

5. Discuss Trade-offs and Edge Cases

Talk about consistency vs. latency (e.g., eventual consistency of aggregates), handling late bookings or cancellations, and how to backfill or recompute aggregates. Mention monitoring and alerting for performance regressions.

Key Points to Mention

  • Pre-aggregation of daily totals per listing/host to avoid scanning raw bookings
  • Use of a fast query engine (e.g., columnar store) and caching (e.g., Redis) for sub-200ms responses
  • Data modeling: fact table for bookings, dimension tables for listings/hosts, and rollup tables
  • Handling late-arriving data and ensuring aggregates are updated incrementally
  • Trade-offs between consistency, cost, and complexity (e.g., batch vs. streaming updates)
  • Monitoring p95 latency and setting up alerts for performance degradation

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

Q2

How would you handle the tradeoff between data freshness and query latency in this system?

Technical Trade-offsSystem Design
Author's notes

Pre-aggregation buys you speed but your numbers can be up to 5 minutes stale.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the system's requirements and constraints, then discuss the tradeoff between data freshness and query latency, and finally propose a balanced solution using techniques like caching, asynchronous updates, or tiered storage. Emphasize that the optimal approach depends on the specific use case and business needs.

Pro tip: Demonstrate awareness of Airbnb's specific context, such as the need for real-time availability in search versus eventual consistency in analytics, and mention how you'd measure and monitor the tradeoff using metrics like cache hit rate and staleness.

1. Clarify Requirements

Ask questions to understand the specific use case, data update frequency, acceptable staleness, and latency SLAs. Identify which parts of the system require strong consistency versus eventual consistency.

2. Identify Tradeoffs

Explain that fresher data often means higher latency due to synchronous updates or cache invalidation, while lower latency may require serving stale data from caches or replicas.

3. Propose Strategies

Suggest techniques such as read-through/write-through caches, time-to-live (TTL) based expiration, change data capture (CDC) for asynchronous updates, and tiered storage (hot vs. cold data).

4. Evaluate and Recommend

Weigh the pros and cons of each strategy against the requirements, and recommend a hybrid approach if appropriate. Discuss how to measure and monitor the chosen solution.

Key Points to Mention

  • Caching strategies (e.g., Redis, Memcached) and their eviction policies
  • Eventual consistency vs. strong consistency and their impact on user experience
  • Asynchronous data pipelines (e.g., Kafka, CDC) for near-real-time updates
  • Read replicas and their role in scaling reads with potential staleness
  • Monitoring metrics like cache hit ratio, p99 latency, and data staleness
  • Business impact: how staleness affects revenue or user trust in Airbnb's context

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

Q3

Walk through the caching strategy you'd use for this dashboard, including how you'd handle cache misses and eviction.

System DesignTechnical Trade-offs
Author's notes

Read-through cache keyed on host ID plus the date range.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the dashboard's requirements—read-heavy, data freshness, and scale—then propose a multi-layer caching strategy (client, CDN, application, database). Explain how each layer handles cache misses and eviction, and tie your choices to trade-offs like consistency, latency, and cost.

Pro tip: Quantify the impact: mention expected hit ratios, latency improvements, and cost savings to show you think in terms of business metrics, not just technical details.

1. Clarify Requirements

Ask about data volume, read/write ratio, freshness tolerance, and user geography to tailor the caching strategy.

2. Design Multi-Layer Cache

Propose caching at multiple levels: browser, CDN, application (in-memory), and database query cache, explaining the purpose of each.

3. Handle Cache Misses

Describe strategies like cache-aside, read-through, and write-through, and how to prevent stampedes with request coalescing or locks.

4. Choose Eviction Policies

Select eviction policies (LRU, LFU, TTL) based on access patterns and data volatility, and justify your choice.

5. Address Invalidation and Consistency

Explain how to invalidate or update cached data (TTL, event-driven, versioning) and handle consistency trade-offs.

Key Points to Mention

  • Cache-aside vs. read-through vs. write-through patterns
  • Eviction policies: LRU, LFU, TTL, and their trade-offs
  • Cache stampede/thundering herd mitigation (e.g., locks, probabilistic early expiration)
  • Consistency models: eventual vs. strong consistency and invalidation strategies
  • Monitoring and metrics: hit ratio, latency, eviction rates
  • Cost and scalability considerations: Redis vs. Memcached, CDN costs

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

Q4

How would you model the data to support both a per-host aggregate view and a per-listing breakdown without running expensive queries each time?

Data ModelingSystem Design
Author's notes

Basically asking whether your summary table can serve both use cases or if you need two separate tables.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the access patterns and scale, then propose a denormalized, pre-aggregated data model that separates write and read paths. Use a summary table for per-host aggregates and a detail table for per-listing breakdowns, both updated incrementally via events or batch jobs. Emphasize trade-offs like consistency, storage cost, and query performance.

Pro tip: Mention that you would store pre-aggregated metrics in a wide-column store like Cassandra or a relational table with materialized views, and use change data capture (CDC) to keep them in sync. This shows you understand both data modeling and operational concerns.

1. Clarify Requirements

Ask about query patterns, data volume, latency requirements, and consistency needs to ensure the model fits the use case.

2. Design Core Tables

Propose a normalized listing table for source-of-truth data and a host table for host metadata, then discuss how to derive aggregates.

3. Introduce Pre-Aggregation

Create a host_aggregates table storing pre-computed metrics (e.g., total listings, average rating) and a listing_breakdown table with per-listing details, both keyed for fast lookups.

4. Define Update Strategy

Explain how to keep aggregates fresh using event-driven updates (e.g., Kafka streams) or scheduled batch jobs, and how to handle late-arriving data.

5. Discuss Trade-offs

Acknowledge trade-offs: increased storage, potential staleness, and complexity in maintaining consistency, and suggest mitigations like versioning or TTL.

Key Points to Mention

  • Denormalization and pre-aggregation to avoid expensive joins at read time
  • Use of materialized views or summary tables in a relational database
  • Event-driven architecture with CDC or stream processing for real-time updates
  • Partitioning and indexing strategies for scalability (e.g., by host_id)
  • Caching layer (e.g., Redis) for hot aggregates
  • Consistency models (eventual vs. strong) and how to handle updates

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