算法面试 / 05

开放题、Case 题与业务追问

业务算法面试常有开放题。它们没有唯一答案,考的是你拆问题的能力。

开放题回答框架

统一使用:

目标 -> 指标 -> 归因 -> 方案 -> 实验 -> 风险

不要一上来就说模型。先问清楚业务目标。

Case:如何提升推荐点击率

不要直接回答“换更好的排序模型”。

可以这样拆:

  1. 指标:点击率、有效点击、停留、负反馈、留存。
  2. 归因:召回不足、排序不准、内容质量差、冷启动差、重复曝光。
  3. 方案:多路召回、序列特征、重排多样性、冷启动探索。
  4. 实验:A/B 看点击和护栏指标。
  5. 风险:标题党、低质内容、短期点击伤害长期体验。

Case:如何降低广告主成本

拆法:

  1. 明确成本:CPA、CPC、ROI、预算消耗。
  2. 判断问题:CTR 低、CVR 低、出价高、定向不准、落地页差。
  3. 算法方案:CTR/CVR 校准、出价优化、预算 pacing、人群扩量。
  4. 实验指标:广告主 ROI、消耗、转化量、用户体验。
  5. 风险:过度降本导致消耗不足。

Case:如何降低风控误伤

拆法:

  1. 指标:误伤率、召回率、资损、申诉率、通过率。
  2. 归因:标签噪声、规则过严、模型阈值、客群差异。
  3. 方案:分层阈值、规则模型协同、人工复核、灰度策略。
  4. 实验:高风险人群和低风险人群分开看。
  5. 风险:误伤降低可能带来风险漏放。

Case:如何提升物流准时率

拆法:

  1. 指标:准时率、P90 延误、取消率、骑手等待、补贴成本。
  2. 归因:需求预测、供给排班、商家出餐、派单、路径、ETA。
  3. 方案:排班优化、实时调度、ETA 校准、峰值补贴。
  4. 实验:按城市、区域、时间片灰度。
  5. 风险:补贴成本和骑手体验。

Case:如何评估补贴是否有效

关键是因果。

不能只看“发补贴的人转化更高”,因为补贴不是随机发的。要估计增量效果:

  • 最好做随机实验。
  • 如果不能随机,考虑 DID、PSM、IV、DR。
  • 用 uplift 模型找边际人群。
  • 在预算约束下按增量收益排序。

一句话:

补贴评估看的是增量,不是相关性。

业务追问怎么处理

面试官可能不断加条件:

  • 如果预算有限呢?
  • 如果线上延迟不允许呢?
  • 如果新用户数据很少呢?
  • 如果策略伤害长期留存呢?
  • 如果实验组和对照组互相影响呢?

应对方式是把新增条件转成约束,而不是推翻原方案。

例如:

如果预算有限,我会把目标从最大化转化改成最大化增量收益 / 成本,并加入预算约束。

回答开放题的禁忌

  • 不问目标,直接给模型。
  • 只讲单指标,不讲护栏。
  • 只讲离线,不讲实验。
  • 只讲平均,不讲分层和长尾。
  • 不讲风险和降级。

一段通用模板

我会先明确这个问题的主指标和护栏指标,然后做链路归因,判断问题来自流量、样本、模型、策略还是系统约束。方案上不会只用单个模型,而是结合数据、模型、策略和实验。上线前先做离线评估和小流量实验,观察主指标、过程指标和护栏指标,再根据分场景结果决定是否放量。

物流业务场景设计

Q:即时物流中,如何设计动态定价机制(骑手出价)以平衡供需?请从机制设计和算法两个角度分别阐述。

来源:阿里巴巴 / 算法工程师 - 运筹 & 因果推断

普通回答:供不应求时提高出价,供过于求时降低。

更好的回答

机制设计角度

  1. 目标:激励相容(骑手真实报告成本)、效率(订单流向效用最高骑手)、平台收益最大化。
  2. VCG 机制在此场景的应用与局限(计算复杂度高,实时场景不可行)。
  3. 一价和二价拍卖的权衡:二价拍卖激励相容但收益可能较低。

算法角度

  1. 预测供需缺口 → 计算弹性系数 → 出价调整幅度。
  2. 多臂老虎机 / Contextual Bandit:在线学习最优出价策略。
  3. 强化学习(如 PPO):建模为 MDP,state = 当前供需状态,action = 出价水平,reward = 订单履约率 − 补贴成本。

落地难点:骑手策略性响应(高价时才上线)、平台与骑手的博弈、公平性约束。

考察点:是否能从经济学机制设计和算法两个维度思考定价问题,而不只是调参数。

Q:如何将骑手调度问题建模为 MDP?请定义 state、action、reward,并分析线上部署时面临的主要挑战。

来源:阿里巴巴 / 算法工程师 - 运筹 & 因果推断

普通回答:state 是骑手位置,action 是分配哪个订单,reward 是完成率。

更好的回答

MDP 定义

  • State:当前各区域骑手分布、待配送订单队列、各骑手当前任务状态、时段、天气。
  • Action:将新订单分配给哪名骑手(离散大规模动作空间),或骑手空闲时调度去哪个区域待命。
  • Reward:及时率提升 + 骑手收益 − 平台补贴成本(多目标,需权重调节)。
  • Transition:骑手移动、订单完成、新订单到达的随机过程。

算法选择:PPO(连续控制)、A3C(并行探索)、MADDPG(多智能体)、Offline RL(利用历史日志)。

线上挑战

  1. 动作空间爆炸(骑手数 × 订单数的匹配)→ 指针网络 / 注意力解码。
  2. 分布漂移(线下训练数据 vs 线上真实分布)→ 保守离线 RL(CQL)。
  3. 探索代价高(生产环境无法随机试错)→ 仿真环境 + 安全约束。

考察点:MDP 建模的完整性,以及对 RL 在生产系统中落地难点的认识。

Q:淘宝闪购要推出”骑手个性化出价”功能:不同骑手对同一订单报价不同。请设计完整的技术方案,包括数据、模型和效果评估。

来源:阿里巴巴 / 算法工程师 - 运筹 & 因果推断

普通回答:训练一个预测接单概率的模型,概率低的多加钱。

更好的回答

问题拆解:预测每位骑手对该订单的”保留价格”(接单临界出价),在此基础上制定个性化出价。

数据建设:骑手历史接单记录(出价 / 拒绝)、骑手画像(历史活跃时段、区域偏好、收入偏好)、订单特征(距离、重量、目的地、时段)。

模型方案

  1. 生存分析 / 选择模型:预测在出价 p 下骑手接单概率 P(accept 骑手特征, 订单特征, p)。
  2. Causal Forest:估计个体级价格弹性(∂P/∂p 对每位骑手不同)。
  3. 综合效用:出价 = argmax_p [接单概率(p) × 完单价值 − p]。

效果评估:A/B 实验对比接单率、平台出价成本、骑手满意度(NPS)、订单履约时效;用 DID 排除骑手行为策略性适应的影响。

考察点:能否把业务需求完整拆解为数据、模型、策略和评估闭环,而不只是训练一个模型。

下一篇建议继续看: