Design and evolve a reservation system
Company: Nordstrom
Role: Software Engineer
Category: System Design
Difficulty: hard
Interview Round: Onsite
Design an online reservation system that supports creating, modifying, and canceling reservations while preventing double-booking. Specify APIs, data model, consistency guarantees, idempotency, concurrency control, and handling of capacity limits, waitlists, and expiration/TTL. Discuss trade-offs between alternative approaches (e.g., optimistic vs. pessimistic locking; relational vs. NoSQL; centralized vs. sharded inventory). Explain how you would scale the design as traffic grows (partitioning, caching, queues, rate limiting, backpressure, monitoring, failure recovery). Identify key security and privacy concerns and mitigations. Which deployment strategy (blue/green, canary, rolling) would you choose and why? When designing features or services in general, what principles and risks do you prioritize first?
Quick Answer: Design and evolve a reservation system 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.