
刚考完美团2025届秋招算法策略端的第一批笔试趁着记忆还热乎赶紧把这次笔试的整体感受、考点分布和踩坑记录整理出来。我投的是算法策略方向也就是大家常说的推荐、搜索、广告策略这一挂笔试风格和纯后端开发或者CV/NLP算法岗有明显区别更偏“算法应用 机器学习基础 业务场景”的组合。准备大厂算法岗笔试的同学尤其是目标在策略算法方向的朋友这篇复盘应该能帮你少走不少弯路。先说结论美团算法策略端笔试不是单纯刷LeetCode就能过的编程题是基本功底真正拉开差距的反而是选择题里的机器学习基础和场景设计题的答题思路。第一批笔试的考题整体没有特别偏难怪但覆盖面非常广从KMP的next数组到GBDT和XGBoost的区别再到外卖配送调度、营销券最优组合基本把策略算法日常会碰到的知识点都扫了一遍。1. 笔试概况与整体流程1.1 美团算法策略端笔试的基本形式美团秋招笔试一般在赛码网完成远程开启摄像头监控全流程线上。算法策略端的笔试试卷基本是三段式选择题、编程题部分批次还会带简答或场景设计题总时长120分钟。第一批笔试的通知到考试时间往往只有三四天节奏非常紧如果之前没有系统准备过临时抱佛脚会相当痛苦。我后来回想美团不同批次的笔试题目并不完全一样但方向上保持着高度一致搜索、推荐、外卖配送调度、营销定价这些业务场景会被反复拿出来命题。算法策略端岗位对应的业务离钱近笔试也倾向于考察“算法能不能解决业务问题”而不只是纯粹的算法竞赛题。这意味着你不仅要会写代码还要能理解业务指标、评估策略效果。1.2 时间节奏与考场体验120分钟听起来不算短但实际做题时会发现时间并不宽裕。我自己的时间分配是这样的先花5分钟整体浏览全卷把编程题里一眼就有思路的题标记出来选择题控制在35到40分钟以内编程题按难度递增的顺序做每道题如果卡了超过15分钟就果断跳过最后留10分钟检查输入输出格式和边界条件。实际操作下来前两道编程题比较顺利第三道卡了大概20分钟最后用暴力加剪枝拿了一部分分数。这里想强调一个经验遇到一道题觉得“差一点就能想出来”的时候千万不要恋战先把后面能拿的分拿完再回来啃硬骨头。笔试平台一般只展示每个用例的通过比例部分分数也是分数总比空着强。1.3 和后台开发/CV算法笔试的区别美团后端开发笔试基本以纯算法题为主偶尔穿插数据库和网络知识算法策略端则是“算法题 机器学习理论 业务场景”三合一。选择题会问你“GBDT和XGBoost的区别是什么”“LR不收敛该怎么处理”简答题可能让你设计一个推荐策略的AB实验方案。如果你只刷LeetCode但不补机器学习基础编程题再顺选择题和简答题也很容易翻车。我认识一个朋友就是典型的刷题选手四道编程题AC了三道结果选择题里SVM核函数和AUC计算直接蒙圈最后总分被拉低。策略算法岗的笔试本质上考的是“算法工程师的完整知识结构”不是“竞赛选手的解题速度”。2. 考点深度拆解策略端到底在考什么2.1 数据结构与基础算法的高频题型这一块是笔试的基本盘也是编程题的直接来源。从这次笔试和我了解到的往年题目来看高频考点集中在以下几个方面。排序算法是选择题的常客堆排序、快排、归并的时间复杂度最好和最坏情况、稳定性比较经常出现。比如快排平均O(n log n)但最坏O(n^2)归并排序稳定但需要O(n)额外空间堆排序不稳定但空间复杂度O(1)。这些细节如果记混了选择题基本就是送分给别人。字符串算法里KMP的next数组计算是每年都有人栽跟头的点。这次热词里也有“在kmp算法中对于模式串pabacaba其next数组”的说法。手动算一遍给你看模式串“abacaba”长度为7前缀子串的最长相等前后缀长度分别是长度为1的子串“a”没有真前后缀next为0“ab”前缀a后缀b不相等next为0“aba”前缀a等于后缀anext为1“abac”没有任何相等前后缀next为0“abaca”前缀a等于后缀anext为1“abacab”前缀ab等于后缀abnext为2“abacaba”前缀aba等于后缀abanext为3如果next数组下标从0开始且next[0]-1那就是[-1, 0, 0, 1, 0, 1, 2, 3]。考场上能镇定地把这个算对已经超过很多人了。图论里Dijkstra求最短路径几乎是必考朴素版复杂度O(V^2)堆优化版O(E log V)选择题经常让你判断在稀疏图上应该用哪个版本。树方面二叉树最近公共祖先、层序遍历、二叉树直径这些题目在美团笔试里反复出现本质上是BFS/DFS的变体。并查集则常用来处理动态连通性问题比如“给一组边判断两个节点是否连通”。前缀和和差分是处理子数组统计问题的高频手法比如“求连续子数组和等于K的个数”。这类题看似简单但边界条件很多写代码时很容易在索引上出错建议平时多练几道找感觉。2.2 机器学习基础与模型选型考点选择题的重头戏在机器学习。逻辑回归的损失函数、梯度下降、L1与L2正则化的区别基本属于必考。L1正则化能产生稀疏权重L2正则化让权重趋向于小值但不为零这个区别要能说清楚最好还能写出损失函数的表达式。SVM考核函数和对偶问题比较多面试笔试都喜欢问“线性不可分怎么办”答案就是引入核函数把样本映射到高维空间高斯核RBF最常用。决策树相关考点集中在信息增益、Gini系数、剪枝策略ID3用信息增益C4.5用信息增益率CART用Gini系数这三个的对应关系要记牢。树模型集成是策略算法的看家本领随机森林和GBDT的区别、XGBoost为什么快、LightGBM的直方图近似原理这些几乎是每家互联网公司的通用考点。我的理解是随机森林是Bagging思路降低方差GBDT是Boosting思路降低偏差。XGBoost在GBDT基础上引入了二阶导数、正则项和列抽样LightGBM又用直方图算法和Leaf-wise生长方式进一步加速。KNN、K-Means、PCA这些传统算法属于性价比很高的考点。K-Means需要掌握K-Means初始化、肘部法则选KPCA要知道它求的是协方差矩阵的特征向量。偶尔还会出现粒子群算法、模拟退火这类启发式优化算法美团在营销定价、配送路径优化场景下确实会用到这些备考时了解思想层面就够了不需要深入推导。深度学习基础也在考察范围内。CNN的卷积计算、池化作用RNN的梯度消失Attention机制和Transformer结构尤其是Q、K、V三个矩阵的来源都属于高频选择题目。做推荐策略的话Embedding和Word2Vec的思想也很重要Item2Vec就是Word2Vec在物品序列上的推广。2.3 搜索推荐与策略评估场景考点这是算法策略端区别于其他岗位的特色内容也是最具业务辨识度的部分。美团的核心业务场景是外卖、到店、酒旅几乎处处都是搜索和推荐外卖首页Feed流、商家排序、菜品推荐、优惠券包发放、配送调度每个方向都能出一道场景题。召回侧的考点包括协同过滤、Item2Vec、双塔模型、向量检索相关性的经典算法是TF-IDF和BM25。BM25公式本身不复杂score(D,Q)等于所有查询词IDF和词频饱和函数的加权和核心参数k1控制词频饱和度通常取1.2到2.0b控制文档长度惩罚一般取0.75。选择题如果给你一组参数和文档数据让你排序只要记得“词频越高分越高但边际递减文档越长分越低”这个直觉基本能选对。精排侧则从LR一路演进到FM、DeepFM再到Transformer排序模型。每次演进的核心逻辑都值得理解LR只能学到一阶特征交叉FM用隐向量做二阶交叉DeepFM引入深度网络建模高阶交叉。笔试不一定让你手推公式但选择题可能会问你“FM替代LR解决什么问题”答案就是特征交叉。评估体系也一样重要。离线评估看AUC、GAUC、NDCG在线评估依赖AB实验。特别是GAUC它是按用户分组的AUC加权平均权重通常取用户的曝光数或点击数。这样做是为了避免“整体AUC高是因为少数活跃用户拉高”的假象。AB实验要注意实验单元、分流方式、显著性检验这些都是场景设计题的直接素材。3. 编程题实战复盘从读题到AC的完整思路3.1 贪心加优先队列配送调度类问题第一道编程题是典型的任务调度问题场景包装成外卖配送有n个订单每个订单有准备时间和预计送达时间骑手手里有一个配送耗时问最多能完成多少个订单。一看到“最多完成”这种话通常就暗示了贪心思路。我的解法是先按截止时间从小到大排序然后维护一个大根堆来存已接订单的配送耗时。顺序遍历订单时先把当前订单的耗时加入总时间再把耗时压入堆中如果当前总时间超过了截止时间就从堆顶弹出耗时最大的订单同时把总时间减掉它。这样做的核心逻辑是在同一个截止时间点之前如果不得不放弃一个订单那肯定优先放弃耗时的那个这样能留下更多时间给其他订单。这道题让我深有体会如果只背模板而不知道堆在这里起什么作用很容易写成“按耗时从小到大排序然后直接选”结果在部分用例上挂掉。理解“替换最大耗时任务”的贪心思想才能写出正确的代码。这类题目在美团的配送调度业务里非常真实骑手有限订单爆单时如何取舍优先级本质上就是这种贪心策略。3.2 动态规划优惠券最优组合问题第二道编程题是优惠券满减问题给了若干张券每张有自己的面额和使用门槛要求凑出满足门槛X的最高优惠金额。这是一个典型的背包类DP变形既像01背包又带着“门槛”这个限制条件。我考场上的写法是用一个布尔数组dp[j]表示“能否凑出金额j”初始dp[0]true。每遍历一张券就从大到小更新dp数组避免同一张券被重复使用全部更新完后从总额度向下找第一个满足j门槛X的金额它对应的组合就是优惠最大的组合。这个题目的失分点集中在两点一是券面额可能很大数组开小了会越界二是从大到小更新和从小到大更新的区别很多人写成完全背包的更新方式导致超时或重复使用。动态规划的题就是这样状态定义对了一半剩下就是细节问题考场上一定要在纸上推一推状态转移方程再动手写代码。3.3 双指针与滑动窗口连续区间统计问题第三道编程题是统计连续子数组满足“区间最大值减最小值不超过K”的个数。看到“连续子数组”加“最大最小”两个关键词我第一反应就是滑动窗口加单调队列。维护两个单调队列一个维护窗口最大值一个维护窗口最小值。右指针不断向右扩展每加入一个新元素就更新两个队列左指针负责收缩当窗口内的最大值减最小值大于K时不断右移左指针并同步弹出队头元素直到窗口重新合法。每次右指针落地后以right结尾的合法子数组数量就是right-left1累加即可。这个算法的时间复杂度是O(n)每个元素最多入队出队各两次。如果不用单调队列而用暴力扫描维护最值复杂度会到O(n^2)甚至O(n^3)数据量一大直接超时。这道题考察的是对滑动窗口模型的熟练度策略算法日常处理用户行为序列时经常用到类似手段比如统计一段时间窗口内的行为次数非常实用。3.4 状态机模拟题流程状态流转最后一道编程题是订单状态流转模拟给定一堆操作和状态转移规则要求输出订单最终状态或某类状态的数量。这道题难点不在算法而在读题和正确建模。我的做法是先把状态转移图画在草稿纸上比如“已下单-已接单-配送中-已完成”哪些转移合法哪些非法一目了然。然后写一个状态映射函数把字符串状态转换为整数枚举再用switch或字典做转移判断。最关键的坑是输入格式题目可能说“n行操作”但每行包含的操作字段数目不同用split处理时很容易下标越界。模拟题的失分点大多数不是思路而是“读题漏条件”和“输出格式不一致”。我的建议是这类题不要急着写代码先花两分钟把题目里的输入输出样例自己手推一遍确认理解无误再动手。考场上我看到这道题时差点漏掉了“如果操作不合法则忽略”这个条件幸好多看了一眼样例说明不然又是一片红。4. 选择题与简答题的得分技巧4.1 最容易丢分的知识概念选择题看似简单实际上是最容易丢分的部分因为很多选项设置得非常“接近”。我把自己考前总结的高频易错点整理一下希望对你有用。稳定性那组口诀冒泡、插入、归并稳定快排、堆排、选择不稳定。选择题经常问“下列哪种排序算法是稳定的”如果背错口诀就是白送分。AUC等于0.5说明模型没区分能力等于随机猜测。AUC小于0.5说明模型预测方向和真实标签相反可以考虑反转输出。这个知识点考的频率极高不管是笔试还是面试。L1和L2正则化的区别L1能得到稀疏解等价于拉普拉斯先验L2让权重趋近于0但不为0等价于高斯先验。如果选择题里同时出现“L1能稀疏”和“L2能稀疏”两个选项后者是错的。Transformer里Attention的计算公式是softmax(QK^T/sqrt(d_k))V为什么要除以sqrt(d_k)因为点积结果会随维度增大而变大softmax会进入饱和区导致梯度消失。这类“为什么”选择题没有真正理解原理的人最容易选错。冷启动问题在推荐系统里必考新用户没有行为数据怎么办答案通常是基于热门推荐、基于注册信息/人口属性、基于即时反馈探索。遇到这种题要优先选“能快速获取新用户偏好的方案”。4.2 策略评估指标速查表策略评估相关指标是简答题和选择题的共同重点我整理了一个速查表考前过一遍很管用。指标含义计算要点适用场景AUCROC曲线下面积随机正样本排在负样本之前的概率等价于rank加权计算CTR预估等二分类问题GAUC按用户加权的AUC各用户AUC按曝光/点击数加权平均个性化推荐排序效果NDCG归一化折损累计增益DCG除以理想排序的IDCG位置越靠前权重越大搜索排序、推荐ListRecallK前K个结果的召回率命中相关样本数除以总相关样本数召回阶段评估PrecisionK前K个结果的精确率命中相关样本数除以K精排阶段评估MAP平均精度均值所有查询的AP取平均AP是Precision-Recall曲线下面积多查询排序任务t检验/卡方检验判定差异是否统计显著根据P值是否小于0.05判断AB实验显著性校验关于AUC的具体计算选择题可能会给你一组正负样本得分让你手工排rank算AUC。公式是AUC (Σ正样本的rank之和 - n_pos*(n_pos1)/2) / (n_pos * n_neg)这里rank从1开始得分最高的样本rank最大。考场上遇到这种题别慌按公式一步步算就行平时练习一次就不会忘。4.3 场景设计题的答题框架美团算法策略端的笔试题偶尔会带一道场景设计题比如“为外卖首页推荐设计一个AB实验评估新排序策略是否上线”。这类题没有标准答案但阅卷者基本在找你的结构化思维。我总结的答题框架是四步走。第一步明确业务目标和度量指标核心指标选订单量或转化率护栏指标选客诉率、骑手配送体验防止策略上线伤到其他环节。第二步确定实验单元是用户维度还是店铺维度尽量避免流量穿透造成实验污染。第三步算样本量和实验时长最小可检测效应越小需要的样本量越大实验至少跑一周覆盖周末和周一两个业务周期。第四步设计分析流程先做AA校验验证分流均匀性再对核心指标做显著性检验同时关注置信区间和效应量。这个框架同样适用于面试中的策略设计题。哪怕对美团的业务不熟悉只要把“目标-指标-分流-分析-决策”这个链条讲完整得分就不会低。关键是别只讲“做AB实验”三个字要把为什么这么设计、怎么判断实验结果讲清楚。5. 复盘与下一批准备建议5.1 踩坑记录与考场注意事项这次笔试我踩了几个实实在在的坑写出来给后面考试的同学避雷。第一赛码网多组数据的输入输出是个坑。第一道编程题我一开始用Scanner逐行读没处理多组测试用例结果第一组就跑挂了浪费了将近10分钟。建议提前熟悉赛码网或者牛客网的输入输出模板特别是C的读取方式直接用scanf或cin的同步关闭能省不少时间。第二Python选手一定要记得设置递归深度。遇到树相关题目如果手写递归默认递归深度1000根本不够直接在代码开头写sys.setrecursionlimit(1000000)不然递归深度大的用例直接Runtime Error。第三数据范围看仔细。题目里的数值上限到1e9甚至1e18都是常事用int存会溢出。C选手直接用long longPython选手不用太担心但要注意某些库函数对大数的处理。第四题目本身可能已经做了排序或预处理。读题时看到“订单按时间顺序给出”这种描述意味着数据本身就是有序的不需要你再排一遍。我第三题差点多此一举重新排序白白增加复杂度还好及时意识到。5.2 刷题路线与资料清单针对美团算法策略端的备考我建议按下面的优先级和资料来安排。编程题部分力扣Hot 100加剑指Offer是基础每天保持两到三道的节奏。专题上重点刷双指针、滑动窗口、单调栈、贪心加堆、背包DP、二叉树、图的最短路。这几类在美团笔试里出场率最高比冷门的数据结构实用得多。机器学习基础部分李航的《统计学习方法》至少把第5章决策树、第6章逻辑回归、第8章集成学习吃透。配合吴恩达的机器学习课程和网上的推导文章能理解公式推导最好实在推不动也要把结论和适用场景背熟。推荐搜索方向可以读美团技术团队博客重点看配送调度、推荐排序、广告投放相关文章。再配合“推荐系统实战”类的书籍把召回、精排、重排、AB实验这条链路建立起整体认知。这部分内容不一定会直接考但在简答和场景设计题里就是拉开差距的关键。5.3 考前知识回顾清单到了考前最后一周我建议不要盲目刷新题了重点做知识回顾。我自己整理的清单按优先级排列你可以直接拿走用。优先级内容复习方法P0排序稳定性、二分、二叉树、DP状态定义刷题保持手感错题重做P0LR推导、SVM核函数、决策树、集成学习手推公式做选择题错题P1Transformer Attention计算、Embedding对照图理解前向传播P1召回/排序/BM25/AUC/GAUC/NDCG结合业务场景解释公式P2粒子群、模拟退火等启发式算法了解核心思想即可我个人对“P0”的定义是不熟练掌握的话笔试及格都难。比如LR的损失函数到底长什么样、GBDT每轮拟合的是什么这类知识点必须达到“闭卷能写出来”的程度才算是真正掌握了。美团算法策略端的笔试整体给我的感觉是“难但不偏”。难在覆盖面广从数据结构到机器学习再到业务策略都有涉及不偏在每一个考点都能在常规学习资料里找到出处没有那种为了难而难的题目。如果你正在准备后续批次的笔试我建议把重点放在编程题的高频题型熟练度、机器学习基础概念的辨析能力、场景设计题的结构化表达。这三块打牢笔试通过的概率会大很多。最后分享一个小技巧笔试前一天不要刷新题了把AUC的rank计算公式、KMP的next数组手算流程、BM25的参数含义再写一遍。这些看起来是冷知识但往往就是选择题里最让人纠结的那几分。祝后面考试的同学一切顺利。