Adobe 面试真题记录:Load Balancer(Round-Robin Prototype)- 一亩三分地 – 面经 – 代面试

这次在 Adobe 的一场技术面试中,候选人遇到的是一道和负载均衡相关的算法题,题目名称是 Load Balancer

题目给出的英文原始描述如下:

Implement a prototype round-robin load-balancing algorithm for n servers numbered 1 to n, handling m requests.

Each request i arrives at time arrival[i] and takes burstTime[i] to execute.

The load balancer assigns each request to the available server with the lowest index.

A server becomes unavailable from the arrival time until completion (arrival[i] + burstTime[i]).

If multiple requests arrive simultaneously, they are processed in order of their original indices.

If no server is available when a request arrives, it is dropped (-1).

For each request, return the 1-based index of the server that processes it, or -1 if dropped.

面试官给了一个完整示例,用 arrival time 和 burst time 推导每个 request 的分配结果,并要求实现函数 getServerIndex

在题目刚给出来时,候选人能够准确复述规则,但对几个关键点存在犹豫。例如,请求是否需要先按 arrival 排序,服务器“可用”的时间点如何维护,同时到达的请求是否需要保持原始顺序。

我们在这一阶段的辅助,是先陪候选人把英文描述逐句拆开,确认处理顺序是以 arrival time 为主,同时在 arrival 相同的情况下,保留 request 的原始 index 顺序。服务器的可用状态由当前时间与结束时间决定,分配时只考虑当前时刻空闲的服务器,并选择 index 最小的那个。

在规则确认后,候选人开始尝试设计整体流程。最初的想法是逐请求模拟时间流转,但在服务器释放时机和多请求同时到达的情况下,逻辑容易变得混乱。我们在现场协助候选人把“请求事件”和“服务器释放事件”分离,明确每个请求处理时只关注当前可用的服务器集合。

当面试官开始关注性能约束时,题目给出的 nm 上限都在 10^5,线性扫描服务器的方案存在被追问风险。我们在这一点上提醒候选人,可以用一个结构维护当前空闲服务器的最小 index,同时用另一个结构按结束时间管理正在忙碌的服务器。

候选人随后按照这个方向继续完善思路,并能够清楚解释在请求到达前,如何先释放已经完成的服务器,再进行分配。如果当前没有任何服务器可用,则直接返回 -1,不进入等待。

整个过程中,我们的辅助集中在三点:
保证时间线处理一致;
保证 arrival 相同请求的顺序不被破坏;
保证服务器选择规则始终符合题目描述。

这道题在面试中并未要求完整写出所有细节代码,但面试官多次通过示例追问执行过程。候选人在最后能够完整走完样例,从输入推导出每个 request 对应的 server index,逻辑前后一致。

以上是这次 Adobe 面试中 Load Balancer 题目的实际情况,以及 CSOAHelp 在现场对候选人所做的辅助内容。

如果你也在准备Apple、Meta、TikTok等大厂的算法与系统设计面试,却不清楚如何拆题和应对各种边界,欢迎添加微信,即可领取北美面试求职通关秘诀。我们也有代面试,面试辅助,OA代写等服务助您早日上岸~

Leave a Reply

Your email address will not be published. Required fields are marked *