← Uber Interview Insights

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

SeniorPrefer not to say
Jun 2026

Summary

Uber system design round for a software engineering role, centered entirely on a meeting room booking system. The interviewer pushed back mid-implementation and asked for a redesign, which I was not fully prepared for.

Questions Asked (1)

Q1

Design an object-oriented Meeting Room Booking System with support for multiple rooms, overlapping booking rejection, recurring bookings, time-zone handling, and conflict resolution. Produce a class diagram and implement the core booking and availability logic in code.

System DesignData ModelingTechnical Trade-offs
Author's notes

I started with the obvious classes: Room, Booking, User, BookingService.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and constraints, then design a clean object model with core entities like Room, Booking, and User. Focus on the booking and availability logic, using interval trees or sorted lists for efficient conflict detection, and handle time zones by storing all times in UTC. Discuss trade-offs and scalability, and provide a class diagram and code for the core logic.

Pro tip: Demonstrate awareness of real-world complexities like recurring bookings with exceptions and time zone conversions, and propose a strategy for conflict resolution (e.g., first-come-first-served or priority-based).

1. Clarify Requirements and Scope

Ask questions to understand expected scale, booking rules, recurrence patterns, time zone support, and conflict resolution policies. Define functional and non-functional requirements.

2. Design Class Diagram

Identify core classes (Room, Booking, User, RecurrenceRule, etc.) and their relationships. Include attributes and methods, and consider using design patterns like Strategy for conflict resolution.

3. Implement Core Booking Logic

Write code for creating a booking, checking availability, and rejecting overlaps. Use efficient data structures (e.g., interval tree) for conflict detection.

4. Handle Recurring Bookings and Time Zones

Design recurrence rules (e.g., RRULE) and generate instances. Store all times in UTC and convert to local time zones for display and input.

5. Discuss Conflict Resolution and Trade-offs

Explain how conflicts are resolved (e.g., priority, first-come-first-served) and trade-offs between simplicity and scalability, consistency and availability.

Key Points to Mention

  • Use of UTC for storage and conversion to local time zones for user interactions
  • Efficient overlap detection using interval trees or sorted lists
  • Recurring bookings with exceptions and modifications (e.g., iCalendar RRULE)
  • Conflict resolution strategies (e.g., priority-based, first-come-first-served)
  • Concurrency control (e.g., optimistic locking) to prevent double bookings
  • Scalability considerations: sharding by room or time, caching availability

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