← Airbnb Interview Insights

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

SeniorPrefer not to say
Jul 2026

Summary

System design round at Airbnb for a software engineer role. The prompt was a WhatsApp-style group chat system, which sounds approachable until you start pulling on threads like fan-out for 10k-member groups and cross-device sync. Left feeling like I covered the surface reasonably but ran out of time on the parts that actually mattered.

Questions Asked (4)

Q1

Design a WhatsApp-like group chat system supporting 1:1 and group conversations, message history sync across devices, and groups of up to 10,000 members.

System DesignTechnical Trade-offsData Modeling
Author's notes

I started with the API layer and data model, which felt safe, but the fan-out problem for large groups is where things got messy.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying functional and non-functional requirements, then sketch a high-level architecture covering message flow, storage, and sync. Dive into data modeling for conversations and messages, and discuss trade-offs for scaling to 10,000-member groups, such as fan-out strategies and consistency models.

Pro tip: Emphasize the trade-offs between fan-out on write vs. read for large groups, and propose a hybrid approach that balances latency and storage costs. Also, mention how you would handle message ordering and idempotency to ensure reliability.

1. Clarify Requirements

Ask about expected scale (DAU, messages per day), latency requirements, consistency needs, and features like read receipts, media, and offline support. Define scope for 1:1 and group chats, and sync across devices.

2. High-Level Design

Outline components: clients, API gateway, chat service, message queue, storage (message DB, metadata DB), and push notification service. Describe message flow from sender to receiver, including sync for multiple devices.

3. Data Modeling

Design schemas for users, conversations (1:1 and group), messages, and group memberships. Discuss partitioning strategies (e.g., by conversation ID) and indexing for efficient history retrieval.

4. Scaling & Trade-offs

Address scaling to 10,000-member groups: compare fan-out on write vs. read, consider hybrid approaches, and discuss storage and delivery guarantees. Cover message ordering, idempotency, and handling offline devices.

5. Sync & Reliability

Explain how devices sync message history: using sequence numbers, delta sync, and conflict resolution. Discuss failure handling, retries, and ensuring exactly-once delivery where needed.

Key Points to Mention

  • Fan-out on write vs. fan-out on read for group messages, and hybrid approaches for large groups
  • Data partitioning and indexing strategies for efficient message history retrieval
  • Message ordering and idempotency using sequence numbers or timestamps
  • Multi-device sync mechanisms: delta sync, push notifications, and consistency models
  • Storage optimizations: cold storage, compression, and tiered storage for old messages
  • Handling offline users and delivery guarantees (at-least-once, exactly-once)

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

Q2

How would you handle message ordering guarantees in a distributed chat system?

System DesignTechnical Trade-offs
Author's notes

This came as a follow-up and I fumbled it a bit.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the requirements: what ordering guarantees are needed (global vs per-conversation), scale, and consistency vs availability trade-offs. Then propose a design that uses a central sequencer or per-conversation ordering with client-side reconciliation, and discuss how to handle failures and edge cases.

Pro tip: Emphasize that perfect global ordering is often unnecessary; per-conversation ordering with client-side sorting by timestamp and sequence numbers is usually sufficient and scales better. Also, mention that Airbnb's chat likely prioritizes user experience over strict ordering, so eventual consistency with conflict resolution is acceptable.

1. Clarify Requirements

Ask questions to understand the scope: Is ordering global or per-conversation? What are the latency and consistency requirements? How many users and messages per second?

2. Choose Ordering Scope

Decide between global ordering (e.g., via a central sequencer) and per-conversation ordering (e.g., using a per-conversation sequence number). Discuss trade-offs: global ordering is simpler but less scalable; per-conversation ordering scales better but requires client-side merging.

3. Design the Ordering Mechanism

For per-conversation ordering, assign a monotonically increasing sequence number per conversation, generated by a single writer or a distributed consensus protocol. For global ordering, use a central sequencer like Kafka or a distributed log.

4. Handle Failures and Edge Cases

Address network partitions, message loss, and out-of-order delivery. Use idempotent message IDs, acknowledgments, and retries. Consider clock skew and use logical clocks (e.g., Lamport timestamps) if needed.

5. Client-Side Reconciliation

On the client, buffer messages and sort by sequence number or timestamp. Handle gaps by requesting missing messages. Display messages optimistically and reconcile when the server confirms order.

Key Points to Mention

  • Per-conversation ordering vs global ordering and their trade-offs
  • Use of sequence numbers or logical clocks (e.g., Lamport timestamps) for ordering
  • Idempotent message IDs to handle duplicates and retries
  • Client-side buffering and sorting to present messages in order
  • Handling network partitions and ensuring availability (CAP theorem)
  • Scalability considerations: partitioning by conversation ID, using a distributed log like Kafka

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

Q3

What are the tradeoffs of adding read receipts and typing indicators to a chat system at scale?

System DesignTechnical Trade-offs
Author's notes

Easier part of the conversation.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the scale and requirements, then systematically analyze the tradeoffs across dimensions like latency, throughput, cost, and user experience. Conclude with a balanced recommendation that considers Airbnb's specific context, such as its global user base and mobile-first usage.

Pro tip: Emphasize that read receipts and typing indicators are often non-critical features that can be deprioritized during peak load or for certain user segments, showing you understand how to balance user experience with system reliability.

1. Clarify Requirements and Scale

Ask questions to understand the expected scale (e.g., number of concurrent users, messages per second), latency requirements, and whether the features are essential or nice-to-have. This sets the context for tradeoff analysis.

2. Identify Technical Challenges

Discuss the technical challenges of implementing these features at scale, such as increased write load, fan-out to many recipients, and the need for real-time delivery. Consider the impact on existing infrastructure.

3. Analyze Tradeoffs

Break down tradeoffs into categories: performance (latency vs. throughput), cost (infrastructure and bandwidth), user experience (privacy concerns, perceived responsiveness), and complexity (operational overhead). Provide specific examples.

4. Propose Mitigations and Alternatives

Suggest strategies to mitigate negative tradeoffs, such as batching updates, using ephemeral storage, or making features opt-in. Discuss alternatives like only showing typing indicators in small groups.

5. Recommend a Balanced Approach

Synthesize your analysis into a recommendation that aligns with business goals and user needs. For Airbnb, consider prioritizing read receipts for hosts and guests in booking-related chats, while making typing indicators optional.

Key Points to Mention

  • Increased write load and fan-out: Each read receipt or typing event must be delivered to all participants, potentially causing a write amplification problem.
  • Latency vs. throughput: Real-time delivery requires low-latency connections (e.g., WebSockets), which can strain resources and reduce throughput.
  • Cost implications: Storing and processing these events increases infrastructure and bandwidth costs, especially with a global user base.
  • User experience and privacy: Read receipts can create pressure and anxiety; typing indicators may be distracting. Consider opt-in/opt-out controls.
  • Scalability and reliability: Ensure the system can handle spikes and gracefully degrade (e.g., drop typing indicators under load) without affecting core messaging.
  • Data storage and retention: Decide how long to store these ephemeral events; using in-memory stores or TTL-based expiration can reduce costs.

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

Q4

How would you scale and monitor this system in production?

System DesignTechnical Trade-offs
Author's notes

Ran short on time here so this was pretty rushed.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the system's current architecture, expected scale, and non-functional requirements. Then, systematically address scaling strategies (horizontal scaling, caching, sharding) and monitoring practices (metrics, logging, tracing, alerting). Finally, discuss trade-offs and how you would iterate based on production feedback.

Pro tip: Emphasize observability from day one and how you'd use data to drive scaling decisions, rather than just listing technologies. Show that you understand the cost and complexity trade-offs of each scaling approach.

1. Clarify Requirements and Current State

Ask about expected traffic, data volume, latency SLAs, and existing architecture. This ensures your answer is tailored to the specific system.

2. Outline Scaling Strategies

Discuss horizontal scaling (adding instances), vertical scaling (upgrading resources), and architectural patterns like sharding, caching, and asynchronous processing. Mention specific technologies (e.g., load balancers, CDNs, message queues).

3. Describe Monitoring and Observability

Cover metrics (e.g., latency, error rates, throughput), logging (centralized, structured), tracing (distributed tracing), and alerting. Explain how you'd use tools like Prometheus, Grafana, ELK, or Datadog.

4. Address Trade-offs and Iteration

Discuss trade-offs such as consistency vs. availability, cost vs. performance, and complexity vs. scalability. Explain how you'd use monitoring data to iterate and improve.

5. Summarize with a Concrete Plan

Provide a prioritized action plan: what you'd do first, what metrics you'd track, and how you'd validate the scaling approach.

Key Points to Mention

  • Horizontal scaling with load balancers and auto-scaling groups
  • Caching strategies (CDN, Redis, Memcached) to reduce database load
  • Database scaling: read replicas, sharding, and choosing the right database (SQL vs. NoSQL)
  • Monitoring stack: metrics (Prometheus/Grafana), logging (ELK), tracing (Jaeger), and alerting (PagerDuty)
  • Trade-offs: consistency vs. availability, cost vs. performance, and operational complexity
  • Capacity planning and load testing to validate scaling decisions

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