System design interview question
Design a Movie Ticket Booking System
Design a system that allows users to book movie tickets for different theaters and showtimes. The system must support multiple theaters, each with different screens showing different movies at different times. Users should be able to view available seats, reserve seats, and complete a booking. Key entities include Theater, Screen, Movie, Seat, Showing (a specific movie at a specific time on a specific screen), and Booking. Handle the edge case where a seat cannot be booked if it's already reserved, and ensure that a booking is only valid if all selected seats are available. Consider how to represent seat status (available, reserved, booked) and prevent double-booking.
Practice this question step by step with an AI interviewer that reviews your requirements, your architecture and your trade-offs, and scores the design.