Katkat

Design an airline booking system

AxonSoftware Engineer · Technical Screen

Last updated

This question evaluates a candidate's ability to design scalable, consistent, and resilient distributed systems for transactional domains, emphasizing API design, data modeling, concurrency control, idempotency, seat inventory guarantees, and external integrations like payments and ticketing.

Design an airline booking system that supports flight search (including multi‑leg connections), booking, seat selection, and itinerary modification/cancellation. Define core REST/gRPC APIs for search, book, modify, and cancel; the data model for flights, legs, fares, seat inventory, reservations, and users; and how to ensure seat availability, atomicity across connecting segments, and idempotency. Discuss consistency guarantees, concurrency control to prevent overbooking, and strategies for strong vs. eventual consistency across regions. Explain integration with payment, ticketing, notifications, and refund flows. Address indexing and caching for search queries (origins, destinations, dates, cabin), pagination and sorting, and flexible‑date search. Cover scaling, sharding, and read/write patterns; resiliency (failover, retries, sagas), observability, and SLAs. Compare trade‑offs for single‑airline vs. multi‑tenant OTA scenarios and outline partner API integration and rate limiting.