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: Design a meeting scheduler with cancellations evaluates requirements, scale assumptions, API/data design, architecture, trade-offs, failure modes, and rollout in a realistic interview setting. A strong answer states assumptions, handles edge cases, explains trade-offs, and shows how to validate the result clearly.