Design a group chat system
Company: Airbnb
Role: Software Engineer
Category: System Design
Difficulty: hard
Interview Round: Onsite
Design a WhatsApp-like group chat system.
Core features:
- 1:1 and group conversations
- Send/receive text messages (assume small payloads)
- Group membership management (add/remove users)
- Message history sync across devices
Non-functional requirements:
- High availability and low latency for sending/receiving
- Support millions of users and large groups (up to, say, 10k members)
- Reasonable consistency guarantees (define what is required)
Discuss:
- APIs
- Data model/storage
- Message fan-out strategy
- Ordering guarantees
- Offline delivery and retries
- Read receipts/typing indicators (optional, but mention tradeoffs)
- How you would scale and monitor the system.
Quick Answer: This question evaluates competency in designing real-time distributed messaging systems, covering scalability, data modeling, API design, consistency models, ordering and fan-out strategies, fault tolerance, and operational monitoring.