题目 1(英文原文)
I own a parking garage that provides valet parking service.
When a customer pulls up to the entrance they are either rejected because the garage is full, or they are given a ticket they can use to collect their car, and the car is parked for them.
Given a set of different parking bays (Small, Medium, Large), write a control program to accept/reject cars (also small, medium, or large) as they arrive, and issue/redeem tickets.
Garage layout is 1 small bay, 1 medium bay, and 2 large bays: [1,1,2]
First sequence Actions:[(arrival, small), (arrival, large), (arrival, medium), (arrival, large), (arrival, medium)]
Expected output: [1, 2, 3, 4, reject]
Second sequence Actions:[(arrival, small), (arrival, large), (arrival, medium), (arrival, large), (depart, 3), (arrival, medium)]
Expected output: [1, 2, 3, 4, 5]
面试挑战分析
这道题要求实现一个停车场管理系统,既能实时判断车位分配,也能正确处理车辆的进出操作。对于候选人来说,挑战在于:
- 准确管理车位状态:需要根据大小区分车位(Small、Medium、Large)和车辆。
- 处理动态变化的请求:既包括
arrival
(车辆到达),也包括depart
(车辆离开),并且需要保证车位状态及时更新。 - 输出结果与需求一致:如分配车票、正确处理
reject
。
csoahelp 提供的支持
在候选人与csoahelp合作的过程中,我们从以下几个方面进行了辅导:
- 问题拆解与Clarification
候选人首先需要明确以下问题:- 如何正确处理
arrival
和depart
类型的请求? - 车辆与车位是否严格匹配(例如
small
车只能停在small
车位)? - 系统如何记录并返回操作结果(如
reject
或车票编号)?
- 如何正确处理
- 设计高效的解决方案
我们指导候选人采用如下方法:- 使用字典(hashmap)存储车票与车位的映射,方便快速查找车辆信息。
- 使用数组管理不同类型车位的可用数量,减少操作复杂度。
- 根据每种操作类型(
arrival
或depart
),分别设计对应的处理逻辑。
- 提供详细代码框架与注释
def assign_parking(garage_layout, sequence):
size_to_idx = {"small": 0, "medium": 1, "large": 2}
result = []
ticket = 1
ticket_to_size = dict()
for req in sequence:
req_type, car_type = req
if req_type == "arrival":
size_idx = size_to_idx[car_type]
if garage_layout[size_idx] > 0:
garage_layout[size_idx] -= 1
result.append(ticket)
ticket_to_size[ticket] = car_type
ticket += 1
else:
result.append("reject")
elif req_type == "depart":
ticket_number = car_type
garage_layout[size_to_idx[ticket_to_size[ticket_number]]] += 1
return result
示例讲解
csoahelp指导候选人通过以下实例验证代码逻辑:
- 第一组操作:
[(arrival, small), (arrival, large), (arrival, medium), (arrival, large), (arrival, medium)]
初始车位:[1, 1, 2]
处理过程:
- 到达
small
车:分配票1
,车位状态更新为[0, 1, 2]
。 - 到达
large
车:分配票2
,车位状态更新为[0, 1, 1]
。 - 到达
medium
车:分配票3
,车位状态更新为[0, 0, 1]
。 - 到达
large
车:分配票4
,车位状态更新为[0, 0, 0]
。 - 到达
medium
车:无可用车位,返回reject
。
结果输出: [1, 2, 3, 4, reject]
- 第二组操作:
[(arrival, small), (arrival, large), (arrival, medium), (arrival, large), (depart, 3), (arrival, medium)]
初始车位:[1, 1, 2]
处理过程:
- 前四步同上,车位状态为
[0, 0, 0]
。 - 离开票
3
的车辆,释放medium
车位,状态更新为[0, 1, 0]
。 - 到达
medium
车:分配票5
,车位状态更新为[0, 0, 0]
。
结果输出: [1, 2, 3, 4, 5]
候选人反馈
在csoahelp的辅导下,候选人顺利完成了这道题。我们提供的详细问题分解与代码注释,使候选人能够快速理解并实现逻辑,避免了潜在的陷阱。
为什么选择csoahelp?
csoahelp提供的不仅仅是答案,而是完整的思维流程与实现框架。从clarification到实现,我们帮助候选人全面准备高压环境下的顶级公司面试。如果你也在准备技术面试,请与我们联系!
如果您也想在面试中脱颖而出,欢迎联系我们。CSOAHelp 提供全面的面试辅导与代面服务,帮助您成功拿到梦寐以求的 Offer!
If you need more interview support or interview proxy practice, feel free to contact us. We offer comprehensive interview support services to help you successfully land a job at your dream company.