Bird
Raised Fist0
LLDsystem_design~20 mins

Class identification (ParkingLot, Floor, Spot, Vehicle) in LLD - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
Parking Lot Class Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
1:30remaining
Identify the primary responsibility of the ParkingLot class
In a parking lot system, which of the following best describes the main responsibility of the ParkingLot class?
ARepresent a single floor within the parking lot
BRepresent a single parking spot where a vehicle can park
CManage the overall parking facility including floors and spots
DTrack the details of a vehicle such as license plate and type
Attempts:
2 left
💡 Hint
Think about which class would oversee the entire parking structure.
🧠 Conceptual
intermediate
1:30remaining
Which class should handle vehicle parking logic?
In the parking lot system, which class is best suited to handle the logic of parking a vehicle into a spot?
AFloor
BSpot
CVehicle
DParkingLot
Attempts:
2 left
💡 Hint
Consider which class represents the place where a vehicle actually parks.
Architecture
advanced
2:00remaining
Determine the correct relationship between Floor and Spot classes
Which of the following best describes the relationship between Floor and Spot classes in a parking lot system?
ASpot inherits from Floor to reuse properties
BSpot contains multiple Floor objects representing levels
CFloor and Spot are unrelated and operate independently
DFloor contains multiple Spot objects representing parking spaces
Attempts:
2 left
💡 Hint
Think about how floors and spots are organized in a real parking lot.
scaling
advanced
2:30remaining
Scaling the ParkingLot system for multiple vehicle types
To support different vehicle types (car, motorcycle, truck) with different spot sizes, which class should be extended or modified?
AExtend Vehicle class to include type and size, and modify Spot to check compatibility
BModify ParkingLot to assign spots based on vehicle type only
CAdd vehicle type logic only in Floor class without changing Spot or Vehicle
DCreate separate ParkingLot instances for each vehicle type
Attempts:
2 left
💡 Hint
Consider where vehicle size and spot size compatibility should be checked.
tradeoff
expert
3:00remaining
Choosing the best class to track parking spot availability efficiently
For efficient tracking of available parking spots in a large parking lot, which class should maintain the availability data and why?
AEach Floor should maintain availability for its spots to reduce ParkingLot complexity
BParkingLot should maintain a global availability map for all spots to enable quick lookup
CEach Spot should maintain its own availability and ParkingLot queries all spots directly
DVehicle class should track availability as it knows which spots are occupied
Attempts:
2 left
💡 Hint
Think about balancing data centralization and query efficiency.

Practice

(1/5)
1. Which class in a parking system is responsible for managing multiple floors?
easy
A. ParkingLot
B. Floor
C. Spot
D. Vehicle

Solution

  1. Step 1: Understand the role of ParkingLot

    The ParkingLot class represents the entire parking area and manages multiple floors within it.
  2. Step 2: Compare with other classes

    Floor manages spots on a single level, Spot represents a single parking space, and Vehicle represents the car or bike.
  3. Final Answer:

    ParkingLot -> Option A
  4. Quick Check:

    ParkingLot manages floors = C [OK]
Hint: ParkingLot holds floors; floors hold spots [OK]
Common Mistakes:
  • Confusing Floor as managing multiple floors
  • Thinking Spot manages floors
  • Assigning Vehicle to manage floors
2. Which of the following is the correct way to represent a parking spot in a class diagram?
easy
A. class Vehicle { int spotNumber; boolean isOccupied; }
B. class Spot { int spotNumber; boolean isOccupied; }
C. class Floor { int spotNumber; boolean isOccupied; }
D. class ParkingLot { int spotNumber; boolean isOccupied; }

Solution

  1. Step 1: Identify the class representing a parking spot

    The Spot class should have attributes like spotNumber and isOccupied to represent a parking space.
  2. Step 2: Check other classes for correctness

    Vehicle represents cars, Floor represents a level, and ParkingLot represents the whole area, so they should not have spotNumber or isOccupied attributes.
  3. Final Answer:

    class Spot { int spotNumber; boolean isOccupied; } -> Option B
  4. Quick Check:

    Spot class holds spot info = A [OK]
Hint: Spot class holds spot details like number and occupancy [OK]
Common Mistakes:
  • Assigning spot attributes to Vehicle
  • Putting spotNumber in Floor or ParkingLot
  • Confusing class roles in diagram
3. Given the following code snippet, what will be the output?
class Vehicle {
  String licensePlate;
  Vehicle(String plate) { licensePlate = plate; }
}
class Spot {
  Vehicle parkedVehicle;
  boolean isOccupied() { return parkedVehicle != null; }
}
Spot spot = new Spot();
System.out.println(spot.isOccupied());
medium
A. true
B. Compilation error
C. null
D. false

Solution

  1. Step 1: Analyze Spot initialization

    The Spot object is created but parkedVehicle is not assigned, so it defaults to null.
  2. Step 2: Evaluate isOccupied method

    isOccupied returns true if parkedVehicle is not null; here it is null, so it returns false.
  3. Final Answer:

    false -> Option D
  4. Quick Check:

    parkedVehicle is null, so isOccupied() = false [OK]
Hint: Unassigned vehicle means spot is free (false) [OK]
Common Mistakes:
  • Assuming default boolean is true
  • Confusing null with false
  • Expecting compilation error due to missing constructor
4. Identify the error in this class design snippet:
class Floor {
  List<Spot> spots;
  void addSpot(Spot s) {
    spots.add(s);
  }
}
medium
A. Spot class should be inside Floor class
B. Method addSpot should return boolean
C. spots list is not initialized before adding
D. Floor class should not have spots list

Solution

  1. Step 1: Check initialization of spots list

    The spots list is declared but not initialized, so calling add on it will cause a runtime error.
  2. Step 2: Validate other options

    Returning boolean is optional, Spot class can be separate, and Floor should have spots list to manage spots.
  3. Final Answer:

    spots list is not initialized before adding -> Option C
  4. Quick Check:

    Uninitialized list causes error = A [OK]
Hint: Always initialize lists before use [OK]
Common Mistakes:
  • Ignoring list initialization
  • Thinking method return type matters here
  • Believing Spot must be nested class
5. You want to design a system where each Vehicle can only park in a Spot that matches its size (e.g., small, medium, large). Which class design change best supports this requirement?
hard
A. Add a size attribute to both Vehicle and Spot classes and check compatibility before parking
B. Add a size attribute only to Vehicle class and ignore Spot size
C. Add a size attribute only to Spot class and ignore Vehicle size
D. Remove size attributes and allow any Vehicle to park anywhere

Solution

  1. Step 1: Understand size matching requirement

    Both Vehicle and Spot need size attributes to compare and ensure compatibility.
  2. Step 2: Evaluate options

    Ignoring size in either class prevents proper matching; removing size ignores requirement.
  3. Final Answer:

    Add a size attribute to both Vehicle and Spot classes and check compatibility before parking -> Option A
  4. Quick Check:

    Size match needs attributes in both classes = B [OK]
Hint: Both Vehicle and Spot need size info to match [OK]
Common Mistakes:
  • Adding size to only one class
  • Ignoring size and allowing any parking
  • Confusing attribute placement