← Airbnb Interview Insights

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

Senior
Jun 2026

Summary

Airbnb system design round for a software engineer role. One question, chat app, classic but not easy to do well under pressure.

Questions Asked (1)

Q1

Design a chat application.

System DesignTechnical Trade-offsAPI & Integrations
Author's notes

Spent the first few minutes going too broad, like I was trying to design WhatsApp from scratch, and the interviewer had to nudge me to scope it down.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and scale (e.g., 1:1 vs group chat, real-time delivery, online status, message history). Then propose a high-level architecture with WebSocket gateways, a message service, and a datastore like Cassandra for messages, and dive into trade-offs around consistency, ordering, and delivery guarantees.

Pro tip: Explicitly state your assumptions and non-functional requirements (e.g., 99.9% availability, <200ms latency) before designing, and revisit them when making trade-offs—this shows you can drive the conversation and prioritize.

1. Clarify Requirements and Scope

Ask questions to define functional (1:1/group chat, media, read receipts) and non-functional (scale, latency, consistency) requirements. Establish assumptions like DAU and message volume.

2. High-Level Architecture

Sketch core components: clients, WebSocket gateways, message service, presence service, notification service, and storage. Explain data flow for sending and receiving messages.

3. Data Model and Storage

Choose databases for messages (e.g., Cassandra for write-heavy, time-series) and user metadata (e.g., MySQL). Discuss schema, partitioning, and indexing for efficient retrieval.

4. Deep Dive into Key Challenges

Address message ordering, delivery guarantees (at-least-once vs exactly-once), offline handling, and scaling WebSocket connections. Discuss trade-offs like consistency vs availability.

5. Wrap Up with Trade-offs and Evolution

Summarize design decisions, mention potential bottlenecks, and suggest future improvements (e.g., multi-region, end-to-end encryption).

Key Points to Mention

  • WebSocket for real-time bidirectional communication, with fallback to long polling
  • Message ordering and delivery guarantees: use sequence numbers per conversation, idempotent message IDs, and at-least-once delivery with deduplication
  • Storage choices: Cassandra for messages (high write throughput, tunable consistency), Redis for presence and recent messages, MySQL for user data
  • Scalability: horizontal scaling of WebSocket gateways with consistent hashing, pub/sub (e.g., Kafka) for message fan-out
  • Offline support: push notifications via APNs/FCM, message queue for undelivered messages
  • Security and privacy: end-to-end encryption, authentication via JWT, rate limiting

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