DoorDash 面试真题:ETA Window Optimization

下面这道题,来自一次真实的 DoorDash 机器学习面试。
如果你正在准备类似岗位,这种题目形式你很可能会遇到。


Problem Statement (Original)

When a consumer places an order with DoorDash, our ETA system provides them with an estimated delivery time window (e.g., 5–15 minutes), with the lower bound larger than 0 minutes to prevent unrealistic ETAs.

The accuracy of ETAs is measured by on-time rate, i.e., the percentage of orders whose actual delivery time falls within the predicted window.

Now we have an ML model that predicts the probability of delivery time at minute level. Specifically, the model returns an array where the value at index i represents the probability of the delivery arriving at the i-th minute.

Given a fixed window size of K minutes, return the optimal window’s lower bound and upper bound to achieve the highest on-time rate.


面试一开始,面试官会让你先复述问题。你需要确认三点:概率数组的含义、窗口长度是固定的 K、窗口是闭区间且下界不能为 0。确认完这些,讨论才会继续往下走。

接下来,你会被引导去思考:窗口内的 on-time rate 本质上就是概率之和。于是你会很自然地想到用固定长度的连续区间来扫描整个数组,并在过程中记录概率最大的那一段。

当你把这个思路说清楚、代码也顺利跑通示例后,面试官不会停在这里。

他会继续往前推一步:

如果我们要求「超过承诺上界的概率不能超过 10%」,这个窗口还成立吗?

这时,问题开始发生变化。你需要同时处理两个量:
一个是窗口内的 on-time probability,另一个是窗口右端之后的 late probability。讨论中,你需要把“迟到”的定义讲清楚,并说明如何用累计概率快速判断某个上界是否满足条件。

在这个阶段,面试官更关心你怎么组织思路,而不是代码细节。你需要先筛掉不满足 lateness 约束的候选窗口,再在剩余窗口里选择 on-time rate 最大的那个。

随后,话题会转向更偏工程的问题。你会被问到:如果概率数组中出现负数、NaN,或者总概率为 0,该如何处理;如果数组并不是一个严格归一化的分布,逻辑是否还能成立。你需要说明哪些情况应该直接拒绝,哪些情况可以继续计算。

最后,面试官会把问题推到更抽象的层面:如果概率分布存在某种结构,比如单峰分布,是否有办法不扫描完整数组;如果没有任何假设,为什么在最坏情况下必须完整遍历。

这些讨论,都会发生在同一题目之下。


CSOAHelp(csoahelp) 的实际服务中,这类过程并不是面试结束后的复盘,而是发生在面试进行中。
当你在共享编辑器里写代码、解释思路、回应追问时,解题方向、约束定义和下一步可能出现的 follow-up,会同步得到支持,帮助你把对话持续往前推进。

我们也有代面试,面试辅助,OA代写等服务助您早日上岸~

Leave a Reply

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