Design a meeting scheduler with cancellations
Company: Uber
Role: Software Engineer
Category: System Design
Difficulty: hard
Interview Round: Onsite
Design a meeting scheduling system for an organization. Include APIs for creating, updating, and cancelling single or recurring meetings; preventing double-booking of attendees and rooms; and querying free/busy to find the earliest common slot across N participants with room constraints and time zones. Specify the data model (tables/collections and key fields), storage choices (SQL/NoSQL), indexing, and sharding strategy for multi-tenant scale. Describe conflict-detection algorithms and concurrency control (e.g., optimistic locking, transactional boundaries, idempotency) during create/update/cancel flows. Detail the cancellation flow: how to efficiently remove a meeting, propagate notifications, free resources, and maintain audit history; propose optimizations for O(log n) cancel operations and for bulk cancellations. Cover nonfunctional requirements: expected QPS, latency SLOs, caching, eventual consistency vs strong consistency trade-offs, background jobs, failure handling and retries, deduplication, security and access control, and back-of-the-envelope capacity planning.
Quick Answer: This System Design question evaluates expertise in designing distributed meeting scheduling systems, including data modeling, API design, recurrence and exception semantics, concurrency and consistency mechanisms, time zone and multi-tenant considerations, room/attendee constraints, and notification/deduplication workflows.