Design a hot-listing waitlist API
Company: Airbnb
Role: Software Engineer
Category: System Design
Difficulty: hard
Interview Round: Onsite
Design a waitlist API for high-demand listings. When a user wants a date that is unavailable for a given listing, they can join a per-listing, per-date waitlist; when inventory becomes available, notify waitlisted users. Define REST/gRPC endpoints, request/response schemas, data models, and storage. Explain ordering/fairness (e.g., FIFO with priority tiers), capacity limits, deduplication, idempotency, and how users join/leave the waitlist. Describe the notification subsystem (push/email/SMS), delivery guarantees, retries, and user preferences. Address concurrency and race conditions to prevent double-booking; discuss transactions, optimistic locking, and exactly-once vs at-least-once semantics. Cover scalability for spikes, sharding strategy, backpressure, rate limiting, observability, and end-to-end testing.
Quick Answer: Design a hot-listing waitlist API 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.