← Meta Interview Insights

Meta·Software Engineer·Onsite - System Design / Architecture·Senior

SeniorPrefer not to say
May 2026

Summary

Meta system design round, got a reservation system question (think Ticketmaster or hotel booking). Pretty classic but the contention angle made it genuinely tricky to get right under pressure.

Questions Asked (1)

Q1

Design a reservation system where users can search availability, place a temporary hold on a specific seat or room, and complete checkout without overselling inventory. Holds should expire automatically, and the system needs to handle high contention for popular events.

System DesignTechnical Trade-offsData Modeling
Author's notes

The hold expiration part is where I spent too long.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and scale, then design a data model that prevents overselling using atomic operations and distributed locking. Propose a two-phase reservation flow with temporary holds and TTL-based expiration, and discuss trade-offs between consistency, latency, and availability under high contention.

Pro tip: Emphasize idempotency and graceful degradation: use idempotency keys for hold and checkout requests, and design for partial failures (e.g., if the hold service is down, fall back to a queue or retry with backoff) to avoid double-booking or lost sales.

1. Clarify Requirements and Scale

Ask about expected traffic, contention levels, consistency needs, and whether holds are per-seat or per-room. Define functional and non-functional requirements (e.g., latency, availability, durability).

2. Design Data Model and Storage

Choose a storage layer (e.g., relational DB with transactions or distributed KV store) and model inventory, holds, and reservations. Ensure atomic updates to prevent overselling, using techniques like optimistic concurrency or row-level locks.

3. Implement Hold and Expiration Mechanism

Design a two-phase flow: first, place a temporary hold with a TTL; second, confirm and convert to a reservation. Use a distributed lock or atomic compare-and-swap to acquire holds, and a background job or TTL-based expiration to release expired holds.

4. Handle High Contention and Scalability

Address contention with sharding by event/seat, queueing requests, or using a token-based system. Discuss trade-offs: strong consistency vs. availability, and how to scale reads (caching) and writes (partitioning).

5. Ensure Reliability and Idempotency

Make hold and checkout operations idempotent using request IDs. Plan for failure scenarios: retries, timeouts, and compensation (e.g., releasing holds if payment fails). Monitor and alert on overselling attempts.

Key Points to Mention

  • Atomic operations (e.g., compare-and-swap, transactions) to prevent overselling
  • TTL-based expiration for holds with a background sweeper or lazy expiration
  • Idempotency keys for hold and checkout APIs to handle retries safely
  • Sharding or partitioning by event/seat to reduce contention
  • Trade-offs between strong consistency (CP) and high availability (AP) under network partitions
  • Graceful degradation and fallback strategies (e.g., queueing, rate limiting) during peak load

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.