DoorDash NG 一共三轮面试:半小时 BQ(engineering value)+ 一小时 LC Interview + 一小时 Interactive Coding。
BQ 轮都是典型的 behaviour 问题,tell me about a time when xxx,基本不会深挖简历项目。提前了解公司的 core value 和 principles 会有极大帮助。
LC Interview 考的是 Order Batching & Dasher Scheduling。先通过 clarification 明确歧义部分,然后使用 sorting + greedy 完成订单分组。第二阶段加入 Dasher scheduling 后,将问题抽象成类似 LC Meeting Rooms II 的问题,使用 min-heap 计算 minimum Dashers。面试官通常会继续追问复杂度、edge case、生产环境相关问题。整体考察了 greedy、heap、interval scheduling、edge cases 和 incremental problem solving。
Interactive Coding 考的是 Dasher Coordination Service。和前一轮的区别在于,这轮会提供现有 codebase,在此基础上去完成题目,是算法 + 工程的结合。先明确 service 的核心 requirements,将 downstream API interaction 与 scheduling logic 做合理拆分。核心算法上将任务建模为 intervals,通过 sorting + priority queue / greedy resource allocation 完成 Dasher coordination,并讨论了只求 minimum resources 时使用 sweep line / two pointers 的优化方向。
整体来说 coding 的难度不容小觑,需要近乎完美的发挥才有机会拿 offer。从第三方视角看,candidate 需要呈现出较强的互动式 problem-solving 能力:先通过 clarification 确认歧义 requirement,再给出 baseline/optimal approach,并能够边 coding 边解释 invariant、复杂度和 edge cases。