Design a Scalable Calendar Service
Company: LinkedIn
Role: Software Engineer
Category: System Design
Difficulty: medium
Interview Round: Onsite
Design a scalable calendar service. Explain its overall architecture, core components, and the design decisions that change as usage grows.
### Requirements and Constraints
Start by defining the calendar behaviors your design supports. For a concrete baseline, assume users can create, edit, delete, and list events in a selected time range. Treat sharing, invitations, recurring events, and reminders as requirements to clarify before including them. This baseline is an explicit practice scope, not a claim about any existing calendar product's implementation.
No user count, peak request rate, event density, or availability target is supplied. Identify the workload information needed to justify your storage, partitioning, and caching decisions.
### Clarifying Questions
- Are calendars private, shared, or collaborative, and who may edit an event?
- Are event times absolute instants, all-day dates, or local wall-clock recurrences?
- How frequently do users list events compared with editing them, and which time ranges are common?
- Must concurrent edits be rejected, merged, or accepted with an explicit conflict policy?
```hint Start from a calendar's time-range read
A user normally opens a bounded part of a calendar. Decide how event storage and indexes support that query before proposing sharding or caching.
```
### What a Strong Answer Covers
- A declared feature scope, event identity, calendar ownership model, and time representation.
- APIs and storage that support event mutations and interval-overlap queries.
- A concrete policy for concurrent edits, retries, and cache invalidation.
- Scaling decisions based on workload and hot calendars, including the cost of common read and write paths.
- Conditional treatment of recurrence, invitations, and reminders without assuming every extension is part of the baseline.
- Operational measures that distinguish slow range reads, propagation delays, and unreliable asynchronous work.
### Follow-up Questions
1. How would you represent a meeting recurring at the same local time across daylight-saving changes?
2. What happens when two users edit the same shared event from older versions?
3. Which changes would be needed if one shared calendar receives much more traffic than ordinary personal calendars?
Overview: Design calendar event storage and time-range reads, explain concurrent edits and scaling, and clarify recurrence and notification requirements.
Read the full LinkedIn Software Engineer interview experience this question came from