尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

腾讯机器学习暑期实习面经:从简历投递到三轮面试全流程复盘

腾讯机器学习暑期实习面经:从简历投递到三轮面试全流程复盘 每年三月底到四月初是暑期实习面试最密集的时候。我作为机器学习方向的学生今年完整走了一遍鹅厂的暑期实习招聘流程从简历投递、线上笔试到三轮面试前后持续了大概一个月。现在把这段经历整理成文字给准备投机器学习方向暑期实习的同学一个参考。面经这东西看十篇不如自己完整走一遍流程但提前了解面试官会问什么、考察什么确实能少踩很多坑。我投递的岗位是机器学习算法工程师base在深圳。整个流程时间线大概是3月中旬投递简历、3月下旬收到笔试通知、4月初面试从一面到HR面一共三轮技术面加一轮HR面中间间隔基本在一周左右。整体感受是鹅厂对于机器学习岗候选人的考察偏重基础理论和项目落地能力不会为了难为人而出偏题但基础概念会问得非常细细到让你怀疑自己是不是真的会。1. 投递与笔试环节别让简历和笔试卡住你1.1 简历筛选阶段容易被忽略的细节机器学习方向的简历HR筛选的时候其实看的是技术匹配度和项目经验的可用性。简历初筛阶段我最想提醒的是把你做过的项目写“实”不要只写“我用了BERT做情感分析”要写清楚数据集规模、任务类型、用了什么预训练模型、如何微调、最终指标多少、对比基线是谁。面试官在简历筛选阶段最反感的写法是“熟悉机器学习算法”这种没有任何信息量的话因为这句话在鹅厂的简历池里大概能捞出来几千份。我自己的简历重点突出了两个项目一个是基于图神经网络的风控反欺诈识别另一个是多模态内容的标签自动生成系统。简历上每个项目都写了“任务背景-方案设计-核心指标-个人职责”四个部分点到为止但信息密度高。后来面试官反馈说这样的简历他扫一眼就知道这个学生做过什么、深度够不够不会浪费时间让候选人花十分钟描述项目背景。简历里还有一个容易被忽略的点把编程能力写清楚。机器学习岗面试会手撕代码简历里你写“熟练使用Python”面试官就会按熟练的标准考你。我的建议是写清楚常用的框架和库PyTorch、NumPy、pandas、sklearn以及是否写过C或Java因为部分推荐系统和推理优化场景会用到C。1.2 线上笔试复习的侧重点鹅厂的暑期实习笔试是牛客网平台题型以选择题加编程题为主。选择题覆盖的题目范围大致包括概率统计、线性代数、数据结构、机器学习基础、深度学习方法。这些题目难度与期末考试相当但范围更广需要在短时间内做判断复习时会有种“什么都考一点”的感觉。编程题一共三道难度梯度明显。第一题是简单的数组和哈希表操作第二题是贪心或动态规划第三题是图论或复杂动态规划。我这个方向强烈建议刷一刷LeetCode中热题Hot 100重点关注动态规划、双指针、二叉树遍历和回溯这些题目出现频率极高。笔试前我专门花了一周时间把动态规划和回溯的经典题型过了一遍结果笔试里第二题就是一道区间动态规划虽然不完全相同但状态转移的思路完全一致。笔试不要求你考满分但编程题至少AC一道最好能AC两道。另外注意牛客的输入输出格式很多人在准备笔试时用本地编译器写得顺手一上牛客就因为输入输出解析的问题卡住这个坑真的不要踩。2. 面试全流程回顾每一轮都在考察什么2.1 技术一面基础知识与项目细节的叠加考察一面面试官是组内的技术骨干整个面试时间大约50分钟节奏是这样的前10分钟过项目中间30分钟问机器学习基础最后10分钟手写一道算法题。项目部分会问得比较细比如我在介绍风控项目时说到了GNN的采样策略面试官立刻追问了GraphSAGE的邻居采样怎么做的、为什么要用采样而不是全图计算、采样数量k的选取依据是什么。这些问题如果不深入读源码很难答得流畅所以如果你简历上写了某个模型一定要清楚模型内部的细节包括输入输出、损失函数、训练技巧和复杂度分析。机器学习基础部分一面问的核心问题比较经典包括但不限于介绍决策树分裂时信息增益和信息增益比的差异、L1和L2正则化的区别与各自优缺点、SVM的核函数怎么选、随机森林和GBDT的方差偏差差异、如何解决正负样本不平衡问题。这些知识点我在下面的章节专门展开讲这里先不展开。不过建议准备面试时把每个问题的回答控制在两分钟左右先给结论再展开面试官听得清晰也不容易被追问打断。算法题环节一面给了一道二叉树的层序遍历变种要求按“之字形”顺序输出在LeetCode上是原题级别。面试官要求先讲思路再写代码代码需要使用Python在本地编辑器写写完后面试官会追问你的时间和空间复杂度。这一关本质是筛掉没有编程手感的人难度并不高但要求思路清晰、边界条件考虑完整。2.2 技术二面场景设计题主导的深水区二面通常是一面通过后一到两周进行面试官是更高层级的正式员工或组长。这一轮风格明显不同于一面面试官不会再问你“XGBoost和LightGBM有什么区别”这种标准答案型问题而是会给你一个业务场景问你怎么从零到一搭建一个机器学习解决方案。我二面时被问到的场景大意是假设我们要给短视频做推荐冷启动阶段没有用户行为数据你会怎么设计整个推荐链路。当时我按照“召回-粗排-精排-重排”的链路去回答分别说了冷启动阶段如何用内容属性做召回、如何利用有限的曝光反馈快速更新精排模型、多臂老虎机这类探索策略的适用性。面试官的追问集中在“如果曝光只有100次哪个信号最值得利用”和“如果不依赖用户行为还有哪些信号可以做个性化”这两个问题考的是对特征工程和数据来源的理解。技术二面还会考察你对行业前沿的了解程度。面试官问了我对Transformer在非自然语言处理领域应用的理解我用推荐系统领域的行为序列建模举例提到了可以利用Transformer的自注意力机制对用户交互序列做编码。这个问题能答得好的前提是平时看过一些跨领域的论文和博客光背课本知识在这里很容易露馅。二面最后没有写代码但面试官扔了一个概率题假设一个用户会在时间段内随机登录你观察到他在时间段的前半段登录了问他的期望登录时刻是多少。这道题考的是条件概率答案是能在紧张状态下快速算对这类题需要平时对条件期望的条件有肌肉记忆般的敏感度。2.3 技术三面主管面和压力面的混合体三面是算法方向的总监级别面试官这一轮的主要目标是判断你的综合能力、学习潜力与团队匹配度。提问内容看似很发散但背后还是有逻辑的。面试官先让我介绍一个自己最有成就感的项目然后围绕这个项目的业务价值、落地效果与失败尝试不断发问。他问了一个我记忆非常深刻的问题“如果让你重新做这个项目你会改动哪个环节让它效果更好”这个问题看起来简单实际上考察的是你的复盘能力和对系统全局的理解。我当时提到项目最大的问题在于特征线上实时性与离线不一致如果重新做我会在特征平台上搭建统一的实时特征计算链路。这个答案在技术上不算新颖但用“我踩过这个坑并且知道根因”的讲法会比干巴巴地说“我会用Flink做实时特征”更打动人。三面常见的追问还包括“你怎么理解机器学习模型的偏差和方差”“你平时怎么追踪前沿论文”“如果团队里的同事和你的技术方案不一致你怎么处理”。最后这个问题考的是协作能力我当时回答的是“先对齐目标然后用小规模实验数据说话”这个答案比较稳妥面试官也比较认可。三面结束时面试官会问你是否还有其他问题要提问。我的建议是准备一到两个有质量的问题比如“团队目前业务上最棘手的模型问题是什么”或“实习生入职后的成长路径通常是怎样的”这会给面试官留下“这个学生是真的认真考虑过加入我们团队”的印象。3. 机器学习核心考点详解面试官为什么要这么问3.1 高频基础问题从公式到直觉的完整回答机器学习基础部分是面试的基本盘鹅厂面试官对这部分的要求是“不仅能说出结论还要能推导公式、说清直觉”。这和学校考试不同面试官要的不是背答案而是看你在一个概念上的理解深度。我整理了几个被高频追问的核心问题这些是准备面试时的必背内容。第一个是L1和L2正则化的区别。面试官期望的回答不是“L1产生稀疏解L2防止过拟合”这么简单而是需要从优化目标层面解释L1正则化项是权重绝对值的和在零点处存在不可导点因此基于次梯度的优化过程中会将某些权重精确推向零达到特征选择的效果L2正则化项是权重平方和梯度方向始终指向零点但由于是等比缩放权重会被压缩到很小但不会精确为零。然后最好补一个直觉解释——L1对应的约束区域是菱形凸优化解更容易落在坐标轴上L2对应的约束区域是圆形最优解通常不在坐标轴附近。第二个是GBDT和XGBoost的区别。这题在很多面经里都被列为高频题但回答时不能只罗列“XGBoost加入了二阶导、正则项、列采样”这些点最好能串成故事GBDT是一步步用决策树去拟合负梯度的加法模型XGBoost在此基础上把目标函数做了二阶泰勒展开可以更快收敛同时把树的复杂度作为正则项加入目标函数控制了模型复杂度。此外XGBoost还支持列采样和并行化近似分割查找这些工程优化让它在效果和速度上都更胜一筹。回答时将“数学原理”和“工程实现”两条线分开讲面试官会觉得你有系统思考的能力。第三个是模型评估指标的选择。这个问题的标准答案是“分类任务看准确率不一定靠谱要结合精确率、召回率、F1和AUC来看”但面试官真正想听的是你在实际场景中怎么选。比如在风控场景里正样本极少你更关心的是在高精确率的前提下尽量提升召回率所以可以看精确率-召回率曲线下的面积而不是AUC。在推荐场景里用户是否点击是高度不平衡的AUC本身容易虚高还常结合GAUC看用户分组后的排序效果。一个能把评估指标的适用边界说清楚的候选人一定是在实际数据上吃过亏的。3.2 深度学习与模型细节的追问方向深度学习部分在一面和二面中都会出现。面试官提问的深度取决于你所展示的项目经历。如果项目里用了CNN他会从卷积核的感受野、参数量计算一直追问到为什么卷积层后面要加非线性激活函数、BN层在训练和推理时行为有何不同。如果项目里用了Transformer他会问你self-attention的计算复杂度是O(n²)怎么来的、为什么用多头注意力、位置编码的作用是什么。我印象最深的追问是关于BatchNorm的。面试官先问“BN层解决了什么问题”我答了缓解内部协变量偏移、允许更大的学习率、有轻微正则化效果。然后他追问“训练时BN使用的是每个batch的均值和方差推理时用的是什么”这个问题很多人会忽略答案是推理时使用训练阶段统计的全局均值和方差。他继续追问“如果训练和推理这里不一致会造成什么问题”这个问题就考到领域知识了。我当时从分布不一致的角度解释如果推理所用统计量与当前输入的分布差异过大模型输出的概率分布会出现漂移。这个问题让我意识到面经里写的“BN原理”不只是两层概念一定要把训练与推理差异背后的细节想透。在深度学习部分优化器也是一个容易被追问的点。面试官会问Adam为什么比SGD在工程上更常用以及Adam有哪些已知缺陷。这个问题最好能从动量、自适应学习率的角度解释并补充近年对Adam泛化能力不足的讨论以及AdamW和带权重衰减的Adam之间的区别。回答时如果能提到LAMB或LARS在大规模batch训练中的应用会显得你有工程视野。3.3 项目经历深挖简历上每一句话都要能撑住项目深挖是整个面试过程中最无法“临时抱佛脚”的部分。面试官会基于你简历上的描述从项目背景到技术方案再到最终效果一步步追问。我的复盘经验是准备项目时用“一句话简介-技术架构-三个核心细节-两个失败复盘”四个层次准备。举个例子我简历上写了“基于GNN的风控模型”这句话背后我需要准备的内容包括图的节点和边分别代表什么特征维度是多少、是否归一化采用的GNN变体是GCN还是GraphSAGE为什么选它邻居采样参数怎么设置训练时的正负样本比是多少评估指标选的是什么最终比基线模型提升了多少模型线上推理的延迟能否满足要求。如果其中任何一个环节没有想过面试官追问时很容易卡壳。另外建议准备一个“失败项目”的故事。面试官非常喜欢问“你做过什么效果不好的方案”这个问题的潜台词是看你的迭代能力和对失败的态度。我准备的是一个旧版特征交叉方案虽然设计了非常复杂的二阶特征组合但离线评估反而低于简单模型后来排查发现是数据稀疏导致参数估计方差过大。讲这个故事时我重点讲的是“如何定位到问题根源”和“如何调整方案”而不是停留在失败本身。4. 手撕代码与场景设计实战从思路到代码的完整链路4.1 算法题做题策略先讲思路再写代码面试的手撕代码环节最忌讳的是拿到题目就闷头写。鹅厂面试官通常希望你先说思路确认思路正确后再动手。我的做题流程是四步走先确认题目限制条件和输入规模然后给出暴力解法并分析复杂度接着优化到最优解法并讲清楚为什么这个解法是可行的最后再写代码。这样做的好处是哪怕最优解法没写出来面试官也能看到你的思维过程部分情况下还会给提示引导你完成。代码书写方面有几点实战建议使用Python时注意处理空输入的边界情况写循环时用while或for都要想清楚终止条件变量命名尽量含义明确不要写a、b、c这种无意义名字。面试官看代码同时也是在看你的工程习惯代码风格好不好在面试考核里是有分的。面试结束后还会有时间反问这时候可以问面试官“这道题在生产环境里会怎么变体”一来显得你主动思考二来也能学到知识。我在一面结束后问了一个关于海量数据场景下如何维护TopK的问题面试官很耐心地给我讲了大数据量下的堆方案和近似方案这个小收获是面试中额外得到的。4.2 场景设计题的答题框架从哪里切入才不会乱场景设计题是机器学习岗面试的“压轴大题”通常出现在二面和三面。很多同学遇到这类题会紧张因为题干本身就很开放。我的经验是答题要有一个稳定的框架按“明确目标-数据-特征-模型-评估-上线”六步展开逐步推进。这六步不是让你把每个环节都废话一遍而是让你在不知道从哪里入手时能顺着这条线往下想不会漏掉关键环节。以推荐冷启动为例我的切入路径是先明确业务目标是提高新用户次日留存或点击率再考虑有哪些数据可以用包括内容属性图文标签、视频类目、用户侧信息设备、地理位置、注册渠道以及极小规模的行为数据。特征层面冷启动阶段不能依赖用户历史行为所以重点放在内容侧特征和上下文特征比如当前时间是否适合推荐某个类型的内容。模型层可以先从简单的多臂老虎机和内容热度兜底待积累一定行为数据后切换为CTR模型。评估方面除了离线指标还要设计线上AB实验指标。这个框架可以让面试官感受到你是有方法论的人而不是想到哪说到哪。回答场景设计题时我还学到一个小技巧可以在回答中主动说出“如果是我我会先做最简单的版本再逐步迭代”。这句话的价值在于表明你懂工程中的渐进式思维面试官会认为你上线后会是一个脚踏实地的实习生而不是一上来就想构建复杂系统的人。5. 信息收集与内推策略机会是留给有准备的人5.1 暑期实习信息从哪里获取暑期实习的投递窗口通常在2月底到4月中旬这个窗口期不算特别长所以提前做好信息收集非常重要。我自己的信息渠道主要有三个第一个是鹅厂官方招聘网站和公众号这里投递会进入官方流程信息更新及时第二个是牛客网的话题社区进去搜“暑期实习内推”会找到大量内推帖子第三个是师兄师姐和实验室的人脉内推这往往是最快也最有“人味”的一种方式。内推在鹅厂的暑期实习流程里意味着简历优先筛选。很多内推帖子会说“简历直达面试官”实际上并不是所有内推都能保证面试但内推至少能让你的简历更早被看到在批量筛选简历时有一定优势。我在内推系统的留言里附上了自己的一段简短自我介绍和项目亮点后来HR反馈说这条留言本身就很加分因为比自己干巴巴地投递简历更能留下印象。5.2 面试流程时间线与我踩过的坑从我的实际经历看鹅厂暑期实习的流程大致是投递简历后一周内收到笔试链接笔试后一到两周内收到一面邀约一面到二面的间隔通常是3到7天二面到三面也是类似的节奏三面通过后HR面通常安排在三面后一周内。整个流程如果顺利大概在一个月内走完。如果某个环节超过两周没有消息建议通过内推人询问进度但不要太频繁。我在整个流程中踩过最大的坑是第一次面试时网络不稳定导致面试过程中出现了一次断线虽然面试官很理解但确实中断了思路。所以如果你是线上面试一定提前测试网络和设备准备好备用热点或备用线路。还有一个坑是在面试开始时没有确认面试官的名字和部门后来HR面时问我对哪个部门更感兴趣我才发现自己连一面面试官的部门都没记住这种细节虽然不影响结果但会让人觉得准备不充分。6. 心态调整与面试反思走到最后靠的是稳6.1 面试中的压力管理技巧暑期实习面试是一个压力密集、连续输出的过程心态上的管理和技术准备同样重要。我在三轮技术面中都有过卡壳的时刻但最终都稳住了。分享两个对我有效的技巧。第一个是遇到不会的问题时先复述一遍问题确认自己是否正确理解如果不确定答案就基于已有知识给出一个推测性的回答并明确说明“我目前的理解是这样但这里可能存在不完善之处”。面试官更看重的是你面对不确定性问题时的镇定程度和思维逻辑而不是你能否每道题都秒答。第二个技巧是学会在回答完一个大问题后主动做小结。面试官问的很多问题都有多个维度回答完后用一句话总结核心要点例如“所以我的方案是先做内容侧召回再通过小流量的多臂老虎机探索积累行为数据后切换成个性化模型”。这样面试官很容易记录和评价也会觉得你是一个结构清晰的人。6.2 面试后如何复盘归纳每轮面试结束后我都建议尽快写下自己回忆出来的问题清单并标注回答得顺畅和卡壳的部分。这样做的原因有两个一是为下一轮面试做准备因为鹅厂多轮面试经常会问相似高频问题尤其是项目经历部分几乎会被每一轮面试官以不同角度问到二是等到最终总结时这些记录可以帮助你发现自己的知识短板。我个人的复盘习惯是每场面试后花半小时到一个小时做记录包括面试官问了哪些问题、我的回答要点是什么、哪些问题没答好、原因是什么、下次遇到类似问题应该如何回答。三轮面完我积累了大概四页A4纸的记录这些记录刚好成了我现在给你们写这篇面经的素材。所以如果你也准备参加面试建议认真记录这些都会成为你可以复用的经验。6.3 关于“匹配度”的一些个人体会在整个面试流程走完后我最大的体会是面试并不只是一场考试而是一次双向匹配的过程。面试官通过多轮面试不只是在验证你的技术能力还在判断你是否适合团队的业务节奏和协作方式。面试到后期技术问题比例会下降性格、沟通风格、对业务的理解和热情所占的比重会明显提升。比如二面和三面中面试官都问了我“你对哪个业务方向最感兴趣”“你平时关注哪些领域的AI进展”。这些问题没有标准答案他们通过你的回答来判断你的真实兴趣是不是在这个方向、你是否愿意长期做下去。所以准备面试时不要只抱着八股文猛刷也要对行业现状和团队业务有一些真实的关注和理解。面试官都经验丰富你是不是“对这个方向真的有热情”几句话就能听出来。6.4 给下一届同学的最后几条建议最后整理几条我认为最实用也最容易忽略的建议。第一尽早投递不要拖到截止日期。暑期实习的面试批次和HC数量是动态的前面批次通过的人会直接占掉名额后面的筛选标准会越来越严所以“投得越早”是一个隐藏优势。第二准备面试时以“讲给同事听”的标准来准备基础知识的回答而不是“背给老师听”的标准。面试官希望在短时间内知道你如何思考一个问题而不是听你把课本念一遍。第三除非特别有把握尽量避免在面试中提及不熟悉的技术名词。一旦你提到某个名词面试官会默认你了解它并持续追问如果你只是听说过很容易被问到露馅。我身边有同学在面试中说自己用过某个模型结果面试官追问了模型源码里一个很细节的设计他直接愣住场面很尴尬。所以技术栈宁可少写、写精也不要为了“好看”写一堆自己只了解皮毛的东西。第四心态上把面试当作一次学习机会。哪怕最终没有拿到offer每轮面试的问答都会暴露出你的知识盲区这些盲区在后续准备中补上对秋招或者其他公司的面试都有很大帮助。我自己在面试中暴露出来的几个知识盲区比如训练推理阶段BN行为差异、大batch训练中Adam的适用性都是回来认真补课过的。6.5 面试结束后的等待期怎么办面试全部结束后到最终offer或感谢信之间通常会有一到两周的等待期。这段等待期很多人会焦虑到反复刷邮箱和招聘官网我的建议是不要在等待期里无所事事。如果还有别的公司在流程中可以继续准备其他面试如果没有就把这次面试中被问到感觉没答好的问题整理出来重新学一遍。我就是在等待期里把推荐系统从召回到重排的链路又系统看了一遍后来HR面时聊起这个正好成为一次加分展示。等待期还有一件事值得做就是复盘自己是否是“真心想去这个岗位”。很多人在准备面试时完全站在“怎么通过面试”的角度但很少认真想“这个岗位和团队是不是真的适合自己”。如果能想清楚自己为什么会选择这个方向、未来一年的实习希望获得什么HR面谈期望时也会从容很多。我在拿到offer后回想起整个面试过程最深的感受是面试通过最核心的因素并不在于某一个瞬间的完美发挥而在于准备期的持续积累和面试时的稳定输出。基础扎实、项目真实、表达清晰、心态平稳这四样做到任何公司的面试都有很大概率能走通。希望这篇面经能对接下来准备鹅厂机器学习岗暑期实习的同学有一些实实在在的帮助。
返回列表