Unicorns VO Interview Question: Systems Design – Car Share Rental App

16 Views
No Comments

Systems Design – Car Share Rental App

We are building a car sharing rental app that enables users who want to rent a car to find users who have personal cars available for rent. It can be mobile web or native mobile (your preference).

For a car owner, you can:

  • add your car, and set per day price and parking location (address)
  • create an availability calendar for rentals
  • see all upcoming reservations your car has
  • see all past rentals your car has had

For a renter, you can:

  • browse availability of cars for your dates and price range on a map/list
  • rent a car
  • use your phone to unlock the car, which has keys in the glove box. Your phone itself cannot communicate to the car, but our servers can send/receive requests to an IoT device in the car (e.g. to unlock it, or lock it).
  • see all upcoming reservations
  • see all past trips you’ve been on

We expect to lay out rough data models and business logic to support the app. Prioritize design of the most complex parts. From there, we will explore some open-ended extensions to the product.

Note: Assume authentication is taken care of. Also, we do not expect designs for any hardware, or IoT components.

Feel free to ask questions, or state any assumptions!

What is the scale of the system?

  • # of car owners = 5 million
  • # of car renters = 10 million
  • # of rentals (varying length), weekly = 250k (5% of car owners)
  • 10x searches as the number of booked rentals (10% conversion)

This is a classic system design interview question centered on a car-sharing rental platform. The key challenges are modeling cars, availability calendars, reservations, and trip history, while supporting high-volume search and reliable booking without double reservations. A strong answer should cover data modeling, availability querying, concurrency control, reservation state transitions, and the synchronous IoT lock/unlock flow as part of the rental lifecycle. The provided scale hints are useful for capacity planning and for prioritizing the most complex parts of the design.

END
 0