Design Slack-like team chat
Company: Crusoe
Role: Software Engineer
Category: System Design
Difficulty: medium
Interview Round: Onsite
Design a Slack-like team messaging system.
Include:
- Core features: workspaces/organizations, channels, 1:1 and group DMs, send/receive messages in real time, message history sync across devices.
- Common features (prioritize and justify): threading, reactions, @mentions, file uploads, search, notifications, presence/typing indicators, message edit/delete, retention.
- Non-functional requirements: low latency delivery, scalability to large workspaces and large channels, high availability, reasonable ordering guarantees, multi-device consistency, security and access control.
Describe:
- APIs (write/send, read/history, subscribe/stream, search).
- Data model and storage choices.
- Real-time delivery architecture (e.g., WebSockets), fanout strategy, and how clients catch up after being offline.
- How you handle ordering, deduplication, retries, and multi-region deployment.
- Monitoring and operational concerns.
Quick Answer: This question evaluates a candidate's understanding of large-scale real-time system architecture, covering distributed systems principles, data modeling, API design, messaging delivery and fanout, ordering and deduplication, multi-device consistency, and security/access control.