Whiteboard exercise. Try the problem cold, then reveal the rubric to self-score.
Out of 10 points45 min whiteboardReference solution →
01
Prompt
A calendar and scheduling platform handling recurring events, calendar sharing, and free/busy queries for 1.5 billion users across every timezone. The hard parts: an RRULE recurrence engine that expands "every Monday forever" into concrete instances on read without infinite storage, a free/busy query system that resolves availability across N calendars in milliseconds, and a sync layer that keeps events consistent across web, mobile, and CalDAV clients even after offline edits. iCal defined the spec; Google Calendar made it work at planet scale.
Time budget: 45 min whiteboard. Draw architecture, estimate numbers, discuss tradeoffs.
02
Hints (progressive — click to reveal)
Hint 1
Lead with RRULE expansion. This is THE differentiator. Explain "store the rule, expand on read" immediately — it shows you understand the core complexity rather than treating it as a simple CRUD app.
Hint 2
Timezones are not optional. Mention IANA timezone IDs (not UTC offsets) early. DST handling is the canonical "sounds easy, is hard" problem. Naming it explicitly earns credibility.
Hint 3
Free/busy is an interval problem. Frame it as merging intervals across expanded instances. Then optimize with bitmap caching. This shows algorithmic thinking applied to systems.
03
Rubric — 10 points
+2 Lead with RRULE expansion. This is THE differentiator. Explain "store the rule, expand on read" immediately — it shows you understand the core complexity rather than treating it as a simple CRUD app.
+2 Timezones are not optional. Mention IANA timezone IDs (not UTC offsets) early. DST handling is the canonical "sounds easy, is hard" problem. Naming it explicitly earns credibility.
+2 Free/busy is an interval problem. Frame it as merging intervals across expanded instances. Then optimize with bitmap caching. This shows algorithmic thinking applied to systems.
+2 Single-instance exceptions are the tricky part. "This Monday is moved to Tuesday" as an override row merged at read time. Shows you've thought beyond the happy path.
+2 Sync conflict resolution. Mention field-level merge + vector clocks. This demonstrates distributed systems depth — calendar is inherently a multi-device, occasionally-offline system.
Self-score: tally the points you would have mentioned unprompted. 7+ is interview-ready on this problem.
04
Red flags (things that tank the interview)
Materialize all future instances of "every Monday forever"
Store timezone as UTC offset (-05:00) instead of IANA zone (America/New_York)