← Airbnb Interview Insights

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

SeniorPrefer not to say
May 2026

Summary

Airbnb system design round focused entirely on a group chat product, no 1:1 messaging involved. Broader scope than I expected and the interviewer kept pushing on edge cases I hadn't thought through.

Questions Asked (1)

Q1

Design a chat system where every conversation is a group chat. Cover group creation, membership, message delivery, fanout strategy, ordering, offline sync, presence, read receipts, and storage.

System DesignData ModelingTechnical Trade-offs
Author's notes

I started with the message send/receive flow which felt natural, but I underestimated how much time the fanout piece would eat up.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and scale, then model conversations as groups with membership and message storage. Design the message flow with fanout-on-write for small groups and fanout-on-read for large groups, and address ordering, offline sync, presence, and read receipts as separate concerns.

Pro tip: Emphasize trade-offs: fanout-on-write gives low latency but high write amplification, while fanout-on-read is cheaper but adds read latency. Choose based on group size and activity patterns, and consider a hybrid approach.

1. Clarify Requirements and Scale

Ask about user scale, group size distribution, message volume, latency expectations, and consistency needs. This shapes all subsequent design decisions.

2. Data Model and Storage

Design schemas for users, groups, memberships, messages, and receipts. Choose storage technologies (e.g., SQL for metadata, NoSQL for messages) based on access patterns and scale.

3. Message Delivery and Fanout

Decide on fanout strategy: write (push to each member's inbox) vs. read (pull from group log). Discuss hybrid approaches and how to handle large groups.

4. Ordering, Offline Sync, and Read Receipts

Use per-group sequence numbers or timestamps for ordering. For offline sync, store messages in per-user inboxes and sync on reconnect. Track read receipts via per-user last-read pointers.

5. Presence and Real-time Communication

Design presence using heartbeats and a pub/sub system. Use WebSockets for real-time delivery and fallback to push notifications for offline users.

Key Points to Mention

  • Fanout-on-write vs. fanout-on-read trade-offs and hybrid approach for large groups
  • Message ordering using per-group sequence numbers or vector clocks
  • Offline sync via per-user inbox and delta sync on reconnect
  • Read receipts using per-user last-read message ID and aggregation
  • Presence system with heartbeats, TTL, and pub/sub for scalability
  • Storage choices: SQL for metadata, NoSQL for messages, and caching for hot data

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