算法面试 / 05
开放题、Case 题与业务追问
业务算法面试常有开放题。它们没有唯一答案,考的是你拆问题的能力。
开放题回答框架
统一使用:
目标 -> 指标 -> 归因 -> 方案 -> 实验 -> 风险
不要一上来就说模型。先问清楚业务目标。
Case:如何提升推荐点击率
不要直接回答“换更好的排序模型”。
可以这样拆:
- 指标:点击率、有效点击、停留、负反馈、留存。
- 归因:召回不足、排序不准、内容质量差、冷启动差、重复曝光。
- 方案:多路召回、序列特征、重排多样性、冷启动探索。
- 实验:A/B 看点击和护栏指标。
- 风险:标题党、低质内容、短期点击伤害长期体验。
Case:如何降低广告主成本
拆法:
- 明确成本:CPA、CPC、ROI、预算消耗。
- 判断问题:CTR 低、CVR 低、出价高、定向不准、落地页差。
- 算法方案:CTR/CVR 校准、出价优化、预算 pacing、人群扩量。
- 实验指标:广告主 ROI、消耗、转化量、用户体验。
- 风险:过度降本导致消耗不足。
Case:如何降低风控误伤
拆法:
- 指标:误伤率、召回率、资损、申诉率、通过率。
- 归因:标签噪声、规则过严、模型阈值、客群差异。
- 方案:分层阈值、规则模型协同、人工复核、灰度策略。
- 实验:高风险人群和低风险人群分开看。
- 风险:误伤降低可能带来风险漏放。
Case:如何提升物流准时率
拆法:
- 指标:准时率、P90 延误、取消率、骑手等待、补贴成本。
- 归因:需求预测、供给排班、商家出餐、派单、路径、ETA。
- 方案:排班优化、实时调度、ETA 校准、峰值补贴。
- 实验:按城市、区域、时间片灰度。
- 风险:补贴成本和骑手体验。
Case:如何评估补贴是否有效
关键是因果。
不能只看“发补贴的人转化更高”,因为补贴不是随机发的。要估计增量效果:
- 最好做随机实验。
- 如果不能随机,考虑 DID、PSM、IV、DR。
- 用 uplift 模型找边际人群。
- 在预算约束下按增量收益排序。
一句话:
补贴评估看的是增量,不是相关性。
业务追问怎么处理
面试官可能不断加条件:
- 如果预算有限呢?
- 如果线上延迟不允许呢?
- 如果新用户数据很少呢?
- 如果策略伤害长期留存呢?
- 如果实验组和对照组互相影响呢?
应对方式是把新增条件转成约束,而不是推翻原方案。
例如:
如果预算有限,我会把目标从最大化转化改成最大化增量收益 / 成本,并加入预算约束。
回答开放题的禁忌
- 不问目标,直接给模型。
- 只讲单指标,不讲护栏。
- 只讲离线,不讲实验。
- 只讲平均,不讲分层和长尾。
- 不讲风险和降级。
一段通用模板
我会先明确这个问题的主指标和护栏指标,然后做链路归因,判断问题来自流量、样本、模型、策略还是系统约束。方案上不会只用单个模型,而是结合数据、模型、策略和实验。上线前先做离线评估和小流量实验,观察主指标、过程指标和护栏指标,再根据分场景结果决定是否放量。
物流业务场景设计
Q:即时物流中,如何设计动态定价机制(骑手出价)以平衡供需?请从机制设计和算法两个角度分别阐述。
来源:阿里巴巴 / 算法工程师 - 运筹 & 因果推断
普通回答:供不应求时提高出价,供过于求时降低。
更好的回答:
机制设计角度:
- 目标:激励相容(骑手真实报告成本)、效率(订单流向效用最高骑手)、平台收益最大化。
- VCG 机制在此场景的应用与局限(计算复杂度高,实时场景不可行)。
- 一价和二价拍卖的权衡:二价拍卖激励相容但收益可能较低。
算法角度:
- 预测供需缺口 → 计算弹性系数 → 出价调整幅度。
- 多臂老虎机 / Contextual Bandit:在线学习最优出价策略。
- 强化学习(如 PPO):建模为 MDP,state = 当前供需状态,action = 出价水平,reward = 订单履约率 − 补贴成本。
落地难点:骑手策略性响应(高价时才上线)、平台与骑手的博弈、公平性约束。
考察点:是否能从经济学机制设计和算法两个维度思考定价问题,而不只是调参数。
Q:如何将骑手调度问题建模为 MDP?请定义 state、action、reward,并分析线上部署时面临的主要挑战。
来源:阿里巴巴 / 算法工程师 - 运筹 & 因果推断
普通回答:state 是骑手位置,action 是分配哪个订单,reward 是完成率。
更好的回答:
MDP 定义:
- State:当前各区域骑手分布、待配送订单队列、各骑手当前任务状态、时段、天气。
- Action:将新订单分配给哪名骑手(离散大规模动作空间),或骑手空闲时调度去哪个区域待命。
- Reward:及时率提升 + 骑手收益 − 平台补贴成本(多目标,需权重调节)。
- Transition:骑手移动、订单完成、新订单到达的随机过程。
算法选择:PPO(连续控制)、A3C(并行探索)、MADDPG(多智能体)、Offline RL(利用历史日志)。
线上挑战:
- 动作空间爆炸(骑手数 × 订单数的匹配)→ 指针网络 / 注意力解码。
- 分布漂移(线下训练数据 vs 线上真实分布)→ 保守离线 RL(CQL)。
- 探索代价高(生产环境无法随机试错)→ 仿真环境 + 安全约束。
考察点:MDP 建模的完整性,以及对 RL 在生产系统中落地难点的认识。
Q:淘宝闪购要推出”骑手个性化出价”功能:不同骑手对同一订单报价不同。请设计完整的技术方案,包括数据、模型和效果评估。
来源:阿里巴巴 / 算法工程师 - 运筹 & 因果推断
普通回答:训练一个预测接单概率的模型,概率低的多加钱。
更好的回答:
问题拆解:预测每位骑手对该订单的”保留价格”(接单临界出价),在此基础上制定个性化出价。
数据建设:骑手历史接单记录(出价 / 拒绝)、骑手画像(历史活跃时段、区域偏好、收入偏好)、订单特征(距离、重量、目的地、时段)。
模型方案:
-
生存分析 / 选择模型:预测在出价 p 下骑手接单概率 P(accept 骑手特征, 订单特征, p)。 - Causal Forest:估计个体级价格弹性(∂P/∂p 对每位骑手不同)。
- 综合效用:出价 = argmax_p [接单概率(p) × 完单价值 − p]。
效果评估:A/B 实验对比接单率、平台出价成本、骑手满意度(NPS)、订单履约时效;用 DID 排除骑手行为策略性适应的影响。
考察点:能否把业务需求完整拆解为数据、模型、策略和评估闭环,而不只是训练一个模型。
下一篇建议继续看: