← Uber Interview Insights

Uber·Software Engineer·Technical Phone Screen·Intermediate

Intermediate
May 2026

Summary

Phone screen for a software engineering role at Uber, just one question: design a parking lot system. Short and focused.

Questions Asked (1)

Q1

Design a parking lot system using object-oriented principles.

System DesignTechnical Trade-offs
Author's notes

Classic OOD question and I still fumbled the class hierarchy a bit.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements (e.g., multiple floors, vehicle types, payment) and then design a class hierarchy with core entities like ParkingLot, Level, ParkingSpot, and Vehicle. Focus on extensibility and key operations like parking and unparking, discussing trade-offs in data structures and concurrency.

Pro tip: Demonstrate awareness of real-world constraints by discussing how to handle concurrent access to spots and how to scale the design for high throughput, as Uber deals with large-scale systems.

1. Clarify Requirements

Ask questions to understand scope: number of levels, vehicle types (car, bike, truck), payment methods, entry/exit points, and whether reservations are needed.

2. Identify Core Entities

Define main classes such as ParkingLot, Level, ParkingSpot, Vehicle, Ticket, and Payment, and their relationships (e.g., ParkingLot has Levels, Level has Spots).

3. Design Class Interfaces

Specify key methods for each class, e.g., ParkingLot.parkVehicle(vehicle), unparkVehicle(ticket), and ParkingSpot.isAvailable(), ensuring separation of concerns.

4. Implement Key Operations

Detail algorithms for parking (finding an available spot) and unparking (calculating fee), considering data structures like maps or lists for efficient lookup.

5. Discuss Trade-offs and Extensions

Talk about design choices (e.g., spot allocation strategy, concurrency handling) and potential extensions like electric vehicle charging or dynamic pricing.

Key Points to Mention

  • Use of inheritance and polymorphism for vehicle types and spot types.
  • Strategy pattern for different spot allocation algorithms (e.g., nearest spot).
  • Concurrency control mechanisms (e.g., locks, atomic operations) to handle simultaneous parking attempts.
  • Scalability considerations: sharding by level or using distributed locks for large parking lots.
  • Payment integration and ticket generation for tracking sessions.
  • Extensibility for future requirements like valet parking or EV charging.

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