Movie Ticket Booking (BookMyShow)

Browse shows, hold seats temporarily, and confirm bookings under heavy contention.

Hard50 minSeat lockingHold expiryPayments

Design a movie ticket booking system like BookMyShow: browse movies and shows by city, view the seat map, hold seats while paying, and confirm the booking. Interviewers love it because seat locking under heavy contention is a real concurrency problem.

Requirements

Functional

  • Cities have theatres; theatres have screens; screens have a fixed seat layout with categories (Recliner, Prime, Classic).
  • Shows: a movie on a screen at a start time, with per-category prices.
  • Users browse movies in a city, pick a show, view the live seat map.
  • Select up to 10 seats; seats are held for the user for ~8 minutes while they pay.
  • On payment success, seats become BOOKED and a ticket is issued; on failure or timeout, holds are released.
  • Cancel booking (per policy) with refund; seats return to AVAILABLE.

Non-functional

  • No double booking, even when thousands of users try the same seats at once.
  • Seat map reads must be fast.
  • Payment and confirmation are idempotent.

Try it first

Set a timer, sketch your own design on paper, then compare it with the reference walkthrough.

50:00

Complete & continue

Defend it out loud

The AI interviewer will probe your design for Movie Ticket Booking (BookMyShow) and score it.

Mock interview