← BlackRock Interview Insights

BlackRock·Software Engineer·Onsite - System Design / Architecture·Intermediate

IntermediatePrefer not to say
Apr 2026

Summary

System design round at BlackRock for a software engineer role. The whole thing was basically one big OOP and design question about a parking lot, but with enough layers that it kept going for a while.

Questions Asked (1)

Q1

Design a parking lot system that handles multiple vehicle types (motorcycle, car, truck) with appropriately sized spots, multiple floors, ticket generation on entry, fee calculation on exit, and logic for finding available spots. Walk through the class hierarchy, key APIs, and how you'd extend it for reservations or real-time availability.

System DesignData ModelingTechnical Trade-offs
Author's notes

I started with the class hierarchy which felt natural, vehicle types mapping to spot sizes and all that.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and constraints (e.g., spot sizes, vehicle types, floors, payment model) to scope the design. Then define a clean class hierarchy with interfaces for extensibility, and walk through core APIs for entry, exit, and spot allocation. Finally, discuss trade-offs and how to extend for reservations and real-time availability, emphasizing scalability and data consistency.

Pro tip: At BlackRock, interviewers value robust, scalable designs with clear separation of concerns. Explicitly discuss how you'd handle concurrency (e.g., locking spots during allocation) and data consistency, as these are critical in financial systems.

1. Clarify Requirements and Scope

Ask questions to understand expected scale, vehicle types, spot sizes, payment methods, and whether reservations or real-time tracking are needed. Define functional and non-functional requirements.

2. Design Class Hierarchy and Data Model

Define core classes: ParkingLot, Floor, ParkingSpot, Vehicle (with subclasses Motorcycle, Car, Truck), Ticket, and Payment. Use inheritance or composition to model vehicle-spot compatibility.

3. Define Key APIs and Workflows

Outline APIs for entry (generate ticket, assign spot), exit (calculate fee, free spot), and spot availability. Describe the step-by-step flow for each operation.

4. Address Extensibility and Trade-offs

Discuss how to extend for reservations (e.g., Reservation class, spot locking) and real-time availability (e.g., observer pattern, caching). Highlight trade-offs in data structures (e.g., hashmap vs. tree for spot lookup).

5. Consider Scalability and Concurrency

Explain how to handle multiple entry/exit points, concurrent access to spots, and potential bottlenecks. Mention strategies like optimistic locking, partitioning by floor, or using a message queue.

Key Points to Mention

  • Vehicle and spot type hierarchy with appropriate sizing (e.g., MotorcycleSpot, CompactSpot, LargeSpot) and compatibility rules.
  • Ticket generation with unique ID, entry timestamp, and assigned spot; fee calculation based on duration and vehicle type.
  • Spot allocation algorithm: efficient search for available spots (e.g., using a min-heap or segment tree for nearest spot).
  • Concurrency control: locking mechanisms to prevent double-booking, and handling of simultaneous entry/exit.
  • Extensibility for reservations: adding a Reservation class, pre-booking spots, and integrating with availability API.
  • Real-time availability: using observer pattern or pub/sub to notify clients of spot changes, and caching for performance.

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