ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

唯品会算法岗秋招复盘:从笔试到面试的电商业务实战指南

唯品会算法岗秋招复盘:从笔试到面试的电商业务实战指南 1. 岗位定位与考察方向拆解先交代一下背景。2019年唯品会秋招算法岗和当年大多数电商公司的算法岗一样核心考察点并不只是“你会不会调参跑模型”而是你能否在真实业务约束下解决实际问题。我当时投的是广州总部的算法岗整个流程走下来最大的感受是唯品会非常看重候选人对电商业务的理解尤其是特卖模式下的推荐、搜索、定价、库存这些场景纯刷题选手和纯读论文选手都会吃亏真正能拿offer的是两者兼顾的人。当年算法岗的投递方向大概分三类推荐算法、搜索排序、数据挖掘/机器学习平台。不同方向的笔试题目其实共用一套题库只是面试侧重点不同。所以如果你现在准备类似的电商算法岗不要只盯着某一个大类数据结构和机器学习基础是共同的底盘业务场景题才是拉开差距的地方。从考察的底层逻辑来看唯品会算法岗想验证的无非三件事第一你的工程基本功是否扎实——写代码、调bug、处理数据的能力第二你的模型原理是否真的懂——不是会调库而是能推导、能解释、能trade-off第三你的业务sense是否在线——给一个特卖场景你能不能抽象成算法问题并给出可落地方案。这三点在后面笔试和面试里都会反复出现。另外很多人忽略的一点是唯品会当年秋招笔试用的是牛客网平台支持C/Java/Python选择题和编程题混合。这意味着你不仅要会写算法还要懂计算机基础比如操作系统、网络、数据库这些虽然占比没那么高但不能完全丢。2. 笔试题型与核心算法考点盘点2.1 选择题里藏着的高频知识点笔试第一部分通常是选择题大概30到40道范围很广。我印象里比较有代表性的考点包括排序算法的稳定性和时间复杂度对比、KMP算法中next数组的计算、贪心算法的适用条件、堆排序的建堆过程、二叉树遍历的还原、哈希冲突的解决办法、数据库索引的B树结构、TCP三次握手状态变化、进程和线程的区别等。这些知识点本身不难但出题方式比较刁钻。举个例子KMP的next数组题题目会给一个模式串比如abacaba要求写出next数组或者nextval数组。这种题如果你只是背过代码没有真正理解“最长相等前后缀”的递推过程很容易在边界条件上出错。我当时是直接在草稿纸上手推了一遍才敢选答案。所以建议准备笔试时经典算法一定要能手推过程而不是只记结论。还有一道我印象很深的题给出一组数据和排序过程问用的是哪种排序算法。这种题考察的是你对排序算法“每一趟结果”的熟悉程度。比如快速排序每一趟会确定一个pivot的最终位置归并排序每趟会把相邻有序段合并堆排序每趟会把堆顶元素放到末尾。如果你只是会写代码但没有观察过中间过程这种题就会比较头疼。2.2 编程题的高频类型与解题框架编程题一般是三道难度梯度比较明显一道简单题一道中等题一道偏难的题。简单题基本是数组操作、字符串处理、模拟题中等题常考动态规划和贪心难题则偏向综合应用比如结合数据结构的复杂模拟或者需要优化的搜索问题。以当年考过的题目为例有一道是“给定一个数组找出所有满足a[i]a[j]target的下标对”这题看似简单但要注意去重和时间复杂度。用哈希表一遍扫描就能做到O(n)但如果题目要求输出所有不重复的组合就需要稍微处理一下。这类题目考察的是你对“空间换时间”的理解而不是单纯背题。另一道比较有区分度的题是“最长上升子序列”的变种要求输出最长上升子序列本身而不只是长度。如果只是用动态规划做O(n^2)能过一部分测试用例但数据量一大就会超时。这时候就需要用贪心二分把时间复杂度降到O(n log n)并且额外维护一个数组来回溯路径。这类题目在刷题网站上很常见我建议备考时把这类“不只是求最优值还要还原方案”的题目专门练一练因为笔试机器判题只看结果但面试官可能会让你现场讲思路。2.3 从热词看当年出题风向我整理了一下当年热词里和笔试相关的部分发现很有意思粒子群算法、模拟退火算法、卡尔曼滤波、PID算法、强化学习这些词频繁出现。这其实反映了2019年算法岗的一个趋势——不再只考传统数据结构开始渗透一些智能优化算法和控制论的内容。虽然唯品会笔试没有直接考粒子群或模拟退火的代码实现但选择题里确实出现了“哪种算法属于启发式优化算法”这类题。我的建议是对这些算法的原理至少要有概念层面的了解知道它们的核心思想、适用场景和优缺点比较。比如模拟退火的核心是“以一定概率接受劣解”粒子群的核心是“个体最优和全局最优引导的速度更新”卡尔曼滤波的核心是“预测更新”的递推框架。这些用一两句话能说清楚就能应付选择题和应用场景判断题了。3. 机器学习与深度学习高频考点解析3.1 经典机器学习模型的原理推导面试环节里机器学习基础是最重要的部分没有之一。唯品会的面试官特别喜欢让你现场推导模型而不是只问概念。我当时被问到的最有代表性的几个问题包括逻辑回归的损失函数为什么用交叉熵而不用均方误差、SVM的拉格朗日对偶推导、决策树不同分裂指标的对比、随机森林和GBDT的区别与联系。先说逻辑回归。交叉熵和MSE的区别在于MSE对逻辑回归的损失函数是非凸的用梯度下降容易陷入局部最优而交叉熵配合sigmoid函数损失函数是凸函数梯度下降能收敛到全局最优。这个知识点看起来简单但很多候选人答不上来“为什么”只记得结论。面试官只要追问一句“你把梯度推一下”就能筛掉一大半人。SVM的推导是当年的高频考点。从函数间隔到几何间隔到最大化间隔的原始问题再到拉格朗日对偶、KKT条件、SMO算法整个过程需要能流利地写出来。这里有个小技巧先把目标函数和约束条件写清楚再引入拉格朗日乘子求偏导等于0代入回原式最后得到对偶形式。只要步骤清晰面试官一般不会太难为你。但如果你连“为什么要用对偶”都答不上来就会比较被动。决策树的分裂指标信息增益、信息增益比、基尼指数这三者要能对比。ID3用信息增益偏向取值多的特征C4.5用信息增益比对取值多的特征做了惩罚CART用基尼指数计算更简单且适用于回归。唯品会的面试官很可能会结合具体业务场景问你“有一批用户特征有的是连续值有的是离散值你选哪个指标”这时候要能结合实际数据分布来回答而不是机械地说结论。3.2 集成学习与GBDT的知识体系集成学习在电商算法岗面试里的出现频率非常高因为推荐、搜索、CTR预估这些场景里GBDT、XGBoost、LightGBM都是最常用的工具。我当时面唯品会的时候被问到了GBDT的梯度拟合细节每一棵树拟合的是前一轮损失函数的负梯度残差的近似而不是真实标签。这个问题非常关键很多人背过“GBDT拟合残差”这句话但并不知道这是针对平方损失的特殊情况对一般损失函数来说拟合的是负梯度。给一个更直观的理解方式GBDT就像是你考试后订正错题第一轮做完发现某些题错了第二轮就专攻错题但光看错题还不够因为每道题的质量不同所以需要给每道题算一个“需要加强的程度”——这就是负梯度的角色。把这类比记在心里面试时解释起来会比背定义生动得多。3.3 深度学习与NLP基础考点深度学习方面唯品会2019年秋招的考察重点还在CNN、RNN、LSTM、Attention这些基础结构上Transformer也有涉及但没有后来那么卷。选择题常考的是维度变化和参数量计算比如卷积层输出尺寸公式、LSTM的参数量怎么算、self-attention的Q/K/V维度关系。面试题方面我遇到过一个比较有代表性的问题LSTM为什么能缓解梯度消失这个问题要答到三个层面——门控机制让信息可以跨时间步直接传递、遗忘门可以控制历史信息的保留程度、sigmoid/tanh的梯度在门控开启时能维持在合理范围。如果只答“因为有两个激活函数”这种程度面试官基本不会满意。NLP相关的问题在2019年还不算太重但Word2Vec的CBOW和Skip-gram区别、负采样和层次Softmax的作用这些属于必背内容。我当时还准备了一个“Word2Vec和矩阵分解的关系”的思考题虽然在唯品会面试没被直接问到但在其他公司面试时用上了属于性价比比较高的知识储备。4. 电商业务算法场景与案例分析4.1 特卖模式下的推荐系统设计思路唯品会的核心业务是品牌特卖这带来了一个和其他电商平台很不同的推荐场景限时、限量、品牌折扣。这意味着推荐算法不能只考虑用户偏好还要考虑库存深度、销售时效、品牌调性匹配等约束。面试官会给你一个开放性问题比如“有一个品牌今天上线了1000件商品特卖你怎么做推荐”这时你要展示的不是模型有多fancy而是能不能把业务约束转化为算法目标。我的答题框架是这样组织的先明确目标——我们不是要最大化点击而是要最大化整体GMV或清仓效率然后拆解信息——用户特征历史购买、浏览、价格敏感度、商品特征品牌、折扣力度、库存、场景特征距离下线时间、当前转化率再选模型——排序阶段用GBDT或LR做CTR预估召回阶段用协同过滤或向量召回最后加约束——库存不足的商品降权、即将下线的商品加权、高价值用户优先推荐高毛利品牌。这个框架本身不复杂但面试官想听的是你有没有考虑到“特卖”这个场景的特殊性。比如品牌特卖意味着用户可能是冲着品牌来的而不是泛泛地逛所以在召回阶段要考虑品牌维度的相似度。再比如库存是动态消耗的推荐策略要能实时响应库存变化这对系统的实时性提出了要求。能说出这些细节才能证明你有真实的业务思考而不是背了一套通用推荐流程。4.2 搜索排序从相关性到商业化的平衡搜索在唯品会同样重要因为用户带着明确品牌意图来的时候搜索结果页就是最核心的转化入口。搜索排序和推荐排序最大的不同在于搜索是有明确query的因此相关性是第一道门槛而商业目标和用户体验之间的平衡是第二道门槛。面试中比较典型的题目是“用户搜索‘连衣裙’但库房里高毛利的连衣裙只有几个品牌剩下的是低毛利甚至亏本清仓的款式你怎么排”这种题没有标准答案考察的是你的权衡能力。我的回答思路是先把相关性做扎实确保所有返回结果都和“连衣裙”相关然后用多目标排序把预估CTR、预估CVR、毛利、库存周转分数做一个加权融合最后加规则兜底比如同一品牌最多展示N个商品避免一个品牌霸屏伤害用户体验。这里有一个容易踩的坑很多人一上来就说“用learning to rank用listwise损失”显得技术感很强但面试官追问你怎么定义label、怎么处理position bias时就答不上来了。所以在准备搜索相关面试时除了模型更要关注样本构造、特征工程、评估指标这些工程细节。4.3 价格与库存中的运筹优化推荐和搜索之外唯品会的特卖模式还催生了一类特殊的算法需求——定价和库存分配。热词里频繁出现的PID算法、模拟退火、粒子群算法在这里就有了用武之地。比如动态定价场景可以根据实时转化率和库存消耗速度决定是否调整折扣力度再比如多个仓的库存分配如何在满足预期销量目标的前提下最大化利润。虽然校招岗位不太可能让你直接上手做这类系统但面试官会问一些基础问题来考察你的知识边界。比如“PID算法在定价系统里怎么用”你至少要知道PID是比例-积分-微分控制器P项响应当前误差I项消除稳态误差D项抑制超调在定价场景里P可以理解为当销量低于目标时快速降价的力度I可以理解为持续滞销时的累计降价压力D可以理解为销量突然波动时的缓冲。能讲到这个程度面试官就会觉得你有工程sense。5. 面试流程与实战应对技巧5.1 面试轮次与考察侧重点唯品会2019年秋招算法岗的面试流程大致是三到四轮技术面加一轮HR面。第一轮通常是基础算法和数据结构会现场出题让你在白板或共享文档上写代码题目难度和笔试中等题相当。第二轮是机器学习基础重点考察模型原理和推导能力。第三轮是业务面或总监面侧重开放性问题考察业务理解和方案设计能力。最后一轮HR面主要聊职业规划、薪酬期望和团队匹配度。每一轮筛人的逻辑其实很清晰第一轮筛掉代码能力不达标的第二轮筛掉只会调库不懂原理的第三轮筛掉没有业务思维的工具人。所以不要在第一轮就用力过猛展示模型知识先把白板题写对、写干净再到后面轮次展示综合能力。5.2 手撕代码的注意事项手撕代码环节有几点血泪教训值得分享。首先一定要先和面试官确认题目中的边界条件比如数组是否可能为空、数值范围是多少、是否允许使用额外空间。这不是废话而是面试官考察你需求分析能力的窗口。我记得有一道“实现LRU缓存”的题目面试官特别强调了“get和put的时间复杂度都必须是O(1)”我当时很自然就答出了哈希表双向链表的方案但如果没注意这个约束直接用一个数组加哈希表去实现就会浪费很多时间。其次写代码的时候要边写边讲思路不要闷头写。面试官引导你的过程也是评分的一部分。如果你卡住了主动说出你当前的困惑和可选思路比沉默硬扛要好得多。最后写完代码后一定要主动跑一遍测试用例包括正常情况、边界情况和异常情况。很多候选人代码写完了就停下来等着这是很丢分的。主动检查边界说明你有测试意识这在做算法工程时极其重要。5.3 项目经历如何包装才加分项目经历是面试里的重头戏但也是最容易被浪费掉的部分。很多候选人把项目描述得像课程作业列了一堆技术名词但讲不清问题背景、方案对比和量化收益。唯品会的面试官在问项目时通常不会直接说你用的模型不够高级而是会连环追问你当时为什么选这个方案其他方案试过吗数据量多大特征怎么做的线上效果怎么评估的bad case有哪些。这里我给一个实用的框架STAR 量化。Situation项目背景和目标Task你具体负责的算法任务Action你做了什么包括数据清洗、特征工程、模型选型、调参、上线部署Result量化结果比如AUC提升了多少、CTR提升了百分之几、DAU增加了多少。同时准备好至少一个bad case分析讲一讲你遇到的失败或效果不好的情况以及你是如何定位和解决的。这个环节非常能体现一个人的技术深度和做事风格。5.4 HR面容易忽略的细节HR面虽然不考技术但淘汰率并不低。很多技术强的人挂在HR面往往是因为表现出“只想去大厂”“对业务没有热情”或者“薪资期望不合理”。唯品会的HR通常会问你为什么选择唯品会、对电商行业怎么看、能不能接受广州的工作地点、有没有其他offer。我的经验是HR面要传递的信息是“我认真了解过唯品会并且有明确的理由想加入”。你可以提前了解唯品会的特卖模式、会员体系、品牌定位甚至可以说说你自己或家人作为用户的体验。这些细节会让HR觉得你是真的做了功课而不是海投之后随便面的。薪资方面可以给出一个合理区间不要狮子大开口也不要贱卖自己一般参考当年校招薪资水平上下浮动10%是比较稳妥的。6. 常见问题与排查技巧实录6.1 笔试中的时间分配失误笔试时间一般是90到120分钟选择题加编程题。我身边有不少同学笔试挂掉是因为时间分配不合理在前面的选择题上花了太多时间导致后面编程题没时间写完。根据我的经验选择题每道题控制在1.5分钟以内遇到不会的先标记跳过编程题至少留出50分钟。三道编程题的策略是第一题快速AC第二题稳定AC第三题如果时间不够就写暴力解法拿部分分数。不要在一道题上死磕笔试系统是按通过用例比例给分的暴力解法也能拿不少分。6.2 面试中被问到不会的问题怎么办面试中被问到你不会的知识几乎是不可避免的。心态上不要慌咬定“我不会”并不是好的回答方式比较好的策略是先尝试用自己的知识框架去类推然后把问题拆解到你能回答的部分。举个例子面试官问“你了解BM25算法吗”如果你只是知道它是信息检索里的排序公式但记不清细节可以这样回答“BM25是信息检索领域常用的相关性打分函数核心思路是词频和逆文档频率的加权同时考虑了文档长度归一化。我平时在搜索场景接触过它的概念但没有手推过公式细节。如果您允许我可以基于TF-IDF的框架来推断它的设计思路。”这样至少展示了你的知识边界和逻辑思维能力。6.3 关于“要不要背题”的建议我的观点是经典题要熟练到条件反射但不要只背题要背思路。尤其是排序算法、二叉树遍历、动态规划经典题、图的最短路Dijkstra这些手写一遍到两遍是很必要的但关键是理解每一步为什么这样做。面试官很容易从你回答里的“细节流畅度”来判断你是真懂还是背的——理解到位的人能自如应对变种题而背题的人在题目稍微变形时就会露馅。6.4 独家避坑经验分享最后分享几个我用血泪换来的经验。第一不要忽视数学基础。面试中的逻辑题和推导题经常用到概率论、线性代数的知识。比如“如何从用户行为数据中估计点击率”这个问题表面上是工程题实际上考的是极大似然估计的贝叶斯视角。如果能把“先验、后验、共轭分布”这些概念讲清楚面试官的好感度会大增。第二要对“常见模型复现”有肌肉记忆。比如NLP里的BM25、推荐里的UserCF和ItemCF、排序里的LR和GBDT最好能在纸上写出核心公式和关键步骤。面试官经常临时让你“讲一下KNN算法的三个核心能力分类、回归、异常检测中分别怎么用”。我当时被问到KNN的应用场景就结合唯品会的业务场景说在用户冷启动阶段可以根据相似用户的购买行为做召回这属于KNN在推荐系统里的应用。面试官听了之后明显更感兴趣。第三信息检索和搜索算法是电商算法岗的隐藏加分项。很多人准备推荐算法时忽视了搜索排序里的相关性计算逻辑。好好学习TF-IDF、BM25、倒排索引、ES的评分机制能在面试中展现出更全面的知识体系也会让你在处理唯品会这种“搜索推荐特卖”复合场景时更有底气。我在整个秋招过程中踩过最大的坑就是前期太偏重模型原理复习忽略了对业务场景的深入思考。后来专门花时间研究特卖电商的推荐和搜索场景再用一套“约束条件下优化目标”的分析框架去回答问题面试顺畅了很多。希望这篇复盘也能帮你少走一些弯路。
返回列表