Design Broadcast Scheduling APIs
Company: Attentive
Role: Software Engineer
Category: System Design
Difficulty: medium
Interview Round: Technical Screen
Design a broadcast messaging service for companies.
Requirements:
- Each company has a set of subscribers.
- A client can schedule a message to be broadcast to all subscribers of a company at a future time.
- The system should support querying scheduled broadcasts by time range.
- The system should eventually send the message to every intended subscriber.
Describe:
1. The external APIs for managing subscribers and scheduling broadcasts.
2. The storage schema for companies, subscribers, scheduled broadcasts, and delivery state.
3. How the scheduler decides which broadcasts are due.
4. Whether a simple polling model is acceptable, and how you would improve it at larger scale.
5. How to handle idempotency, retries, duplicate prevention, and failures.
6. Any important product decision, such as whether the recipient list is evaluated at send time or snapshotted at schedule time.
Quick Answer: This question evaluates a candidate’s ability to design scalable, reliable broadcast and scheduling systems, covering API design, data modeling, distributed scheduling, delivery semantics, idempotency, retries, and operational fault-tolerance.