Microsoft's "Design Movie Ticket Booking System" is a classic system design interview question emphasizing scalability for high-concurrency scenarios like peak booking times. It tests skills across distributed systems, concurrency control, data engineering, backend services, and infrastructure, often tagged with web and machine learning for features like recommendations. No single "official" full problem statement from Microsoft exists publicly, but it's commonly derived from standard formulations like those on GitHub, LeetCode discussions, and GeeksforGeeks equivalents (e.g., BookMyShow design).[1][2][4]
Design an online movie ticket booking system (similar to BookMyShow or Fandango) that allows users to browse movies, view showtimes, select seats, book tickets, and make payments. The system must handle millions of concurrent users during peak hours (e.g., new movie releases), ensure no double-booking of seats, provide real-time seat availability, and scale globally. Key challenges include concurrency (multiple users booking the same seat), data consistency across distributed databases, and high throughput for searches and transactions.[2][4][6]
No formal I/O formats exist (it's not a coding problem), but typical API examples include:
| Endpoint | Input Example | Output Example |
|----------|---------------|----------------|
| /search/movies | { "city": "Chicago", "date": "2026-02-10", "genre": "Action" } | { "movies": [{ "id": 123, "title": "Avengers", "showtimes": ["18:00", "21:00"] }] } [2] |
| /book/tickets | { "showId": 456, "seats": ["A1", "A2"], "userId": 789 } | { "bookingId": "BK789", "status": "confirmed", "qrCode": "xyz" } (succeeds if seats free; else "conflict") [4] |
| /seats/availability | { "showId": 456 } | { "available": ["A3", "B1"], "total": 100, "booked": 50 } (real-time via cache) [2] |
/recommend returning { "seats": ["VIP"], "reason": "past prefs" }.[1]