Requirements:
The parking lot can have multiple levels, each with a specified number of parking spaces.
The system should support different types of vehicles (e.g., cars, motorcycles, trucks) with varying sizes.
There should be a way to check if a parking space is available.
The system should allow vehicles to enter and exit the parking lot, with appropriate validations.
Provide functionality to find the location of a parked vehicle.
Implement a charging system for parking, considering different rates for different types of vehicles and durations.
Considerations:
Discuss the data structures and algorithms you would use for efficient space allocation and retrieval.
Consider how you would handle concurrent access and potential race conditions.
Think about scalability, extensibility, and maintainability of the system.
This question assesses the candidate's ability to design a system, think about various aspects such as data structures and algorithms, and consider real-world constraints and requirements in software development.