Anthropic·Software Engineer·Onsite - System Design / Architecture
May 2026
System design round at Anthropic for a software engineering role, focused entirely on designing a scalable one-to-one chat system. Pretty deep dive, they wanted assumptions upfront and then pushed into the weeds on Kafka internals and tradeoffs.
- Design a scalable one-to-one chat system. Before diving in, state your assumptions about scale, latency, and reliability requirements.
- Walk through the core user flows for sending and receiving a message, including message persistence and retrieval.
- How would your system handle message delivery when the recipient is online versus when they're offline?
- How does the system detect whether a user is currently online or offline?
- How do you store and manage client sessions and WebSocket connections across multiple servers?
- How would you handle message ordering, retries, deduplication, and delivery acknowledgements?
- What are the tradeoffs between using Kafka and Redis for the messaging pipeline in this design?
- Explain the internal Kafka concepts that are relevant to this system: partitions, message ordering, offsets, and consumer groups.
“The scope was deliberately narrow, no group chat, no threads, just direct messaging.” The rest of the author's notes on Software Engineer interview at Anthropic, Onsite - System Design / Architecture round, covers how they worked through the question, what the panel pushed back on, and what they would do differently.
View Post