Simulate bus boarding with priority and wheelchairs
InstacartSoftware Engineer · Technical ScreenLast updated
This question evaluates queue and priority handling, stable ordering, capacity accounting, constraint handling for wheelchair riders, and the ability to design unit tests and articulate trade-offs within the Software Engineering Fundamentals category.
You are implementing a simplified bus boarding simulator.
Model:
Personhas at least:id(string/int)priority(boolean): if true, they should board before non-priority riders.wheelchair(optional): if present, the person uses a wheelchair.capacityCost(int): how many capacity units they consume when boarding (defaults to 1 for a normal rider; wheelchair riders may have different costs).Bushas:totalCapacity(int)maxWheelchairs = 2
Task A — Priority boarding:
- Given a waiting line of people (in arrival order) and a bus with remaining capacity, board as many people as possible.
- Priority riders should be boarded before non-priority riders.
- Preserve relative order within the priority group and within the non-priority group (stable ordering).
- Return (1) the list of boarded riders in the order they boarded and (2) the remaining waiting line.
Task B — Explain tradeoffs:
- Explain why you implemented it that way.
- Provide at least one alternative approach and compare time/space complexity and maintainability.
- Mention what you would change for “real production” (e.g., extensibility, fairness/starvation, configurability).
Task C — Unit tests:
- Write unit tests for Task A (and for Task D below if time). Specify key edge cases.
Task D — Add wheelchair constraints:
- Extend boarding logic with these rules:
- A bus can carry at most 2 wheelchair riders.
- Each wheelchair rider consumes
capacityCostunits (not necessarily 1). - Non-wheelchair riders consume 1 unit.
- Continue to respect priority boarding and stable ordering within groups.
You may define your own function signatures (e.g., board(bus, waitingQueue)).
Solution walkthrough is for members
Get the full walkthrough with reference code and complexity analysis, plus Kitty Coach at 300 messages a day. Hints, the code runner and community answers stay free.