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

资讯详情

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

网易2020校招CV算法工程师笔试复盘:核心考点与备考策略

网易2020校招CV算法工程师笔试复盘:核心考点与备考策略 说实话看到网易 2020 校招计算机视觉算法工程师正式批这套笔试题的时候我的第一反应是这不像是一场单纯考你会不会调参的笔试更像是一场对计算机视觉基本功 算法底子 工程思维的综合体检。如果你正准备投大厂 CV 岗或者正在刷题阶段这篇文章值得你花几分钟看完。我去年参加了这场笔试顺利拿到了面试机会后来也陆续接触了其他几家大厂的 CV 岗笔试。回头复盘网易这套题在难度和风格上都很有代表性。它考察的东西恰恰是很多人在准备时容易忽略的除了深度学习模型结构、损失函数这些显知识还有大量数据结构与算法、数学推理、图像处理基础的内容。这篇文章我会从整体思路、核心考点、实战题目、备考避坑四个维度来拆解。无论你是刚入门的 CV 求职者还是正在冲刺校招的应届生相信都能从中找到对自己有用的信息。1. 笔试整体复盘网易 CV 算法岗到底在考什么1.1 题型分布与考察逻辑先给大家还原一下我印象中的笔试现场。网易这套 CV 算法工程师正式批笔试题整体分为三个部分第一部分是单选题和多选题覆盖范围非常广第二部分是编程题需要在线 coding第三部分是简答题考察对模型原理的理解深度。选择题部分大概有 20 到 25 道涵盖的内容包括图像处理基础、机器学习经典算法、深度学习理论、概率统计和线性代数、C/Python 语言基础。多选题的干扰项设置得很有水平很多选项看起来都对实际上暗藏陷阱。我记得有一道关于 Batch Normalization 的多选题选项里混入了BN 在训练和推理时使用相同的统计量这个错误表述如果不清楚 BN 在训练时用 batch 统计量、推理时用全局滑动平均统计量很容易选错。编程题一般是 2 到 3 道难度递进。第一道通常是比较常规的字符串处理或者简单动态规划第二道开始上强度涉及贪心策略、复杂状态设计第三道往往需要结合数据结构优化比如线段树、优先队列、并查集。整个笔试时长在 120 分钟左右时间分配很关键。简答题部分一般是 2 道左右考察目标检测原理、模型加速方法、损失函数设计这类问题需要你能够清晰地写出自己的理解包括公式推导、优缺点对比。1.2 和提前批、其他大厂笔试的横向对比如果你同时准备了其他大厂的笔试会发现网易这套题有几个鲜明特点。第一个特点是广而深。对比字节跳动和腾讯的笔试网易在机器学习经典算法上花的心思明显更多。KMP 算法、排序算法复杂度对比、贪心算法证明这类纯算法题出现的频率很高这和热词里出现的 KMP、贪心、模拟退火、粒子群等高频考点完全吻合。我当时就遇到了一道关于 KMP 算法 next 数组的填空题虽然不要求写出完整代码但要求根据给定模式串手算出 next 数组这个基本功不扎实的话现场会很懵。第二个特点是重基础。对比阿里更偏工程实现、头条更偏论文复现的题目风格网易的题目更接近教科书知识的变体。比如数据结构排序算法的稳定性比较、二分图 HK 算法的适用场景、Dijkstra 算法的堆优化复杂度分析这些在牛客网刷题时经常会遇到属于你认真复习了就能做对但如果不重视基础就很容易翻车的题目。第三个特点是图形图像浓度高。毕竟是 CV 岗图像处理相关的题目占比明显高于通用算法岗。直方图均衡化、Sobel 算子边缘检测、图像金字塔、仿射变换、卷积输出尺寸计算这些知识点在选择题和简答题中反复出现。这提示我们投 CV 岗就不能只准备深度学习传统图像处理的基础同样重要。1.3 难度定位为什么说它笔试筛人面试筛神整体来看网易这套笔试题的难度定位是笔试筛人面试筛神。什么意思呢笔试阶段它不会故意出偏题怪题难为你而是用大量的中等难度题目考察你的知识覆盖面是否完整、做题速度是否够快、心态是否稳定。能通过笔试的人不一定是深度最强的但一定是体系比较完整、基本功比较扎实的。这套题中的坑更多体现在选择题的干扰项设计、编程题的时间和空间复杂度限制、简答题的表述严谨性上。比如编程题如果只是想出暴力解法数据范围一大就容易超时必须优化到 O(n log n) 甚至 O(n)。这种考察方式其实是为了筛选出真正有工程思维和优化意识的候选人。2. 核心考点拆解CV 岗笔试的高频知识点地图2.1 计算机视觉基础传统图像处理不能丢很多准备 CV 岗的同学把大量时间花在深度学习上但对传统图像处理重视不够。网易笔试告诉我这是一个严重的误区。在选择题里图像处理相关的考点集中在这几个方向。直方图均衡化的计算过程是必须掌握的题目可能会给出一个灰度图像的直方图让你计算均衡化后的灰度映射关系这需要理解累积分布函数CDF的归一化公式新灰度 round((L-1) × CDF(原灰度))其中 L 是灰度级数。还有一个高频考点是图像滤波高斯滤波的核怎么生成、中值滤波对椒盐噪声的效果为什么好、均值滤波为什么会模糊边缘这些基础概念会被反复考到。边缘检测方面Sobel 算子的卷积核以及它如何计算梯度的幅值和方向、Canny 边缘检测的完整流程高斯平滑、梯度计算、非极大值抑制、双阈值处理、滞后连接这些内容不仅要记住步骤还要理解每一步的作用。我记得有一道多选题考察 Canny 检测中哪个步骤用于细化边缘正确答案是非极大值抑制如果你没理解这一步的原理很容易被其他选项带偏。特征提取方面SIFT、HOG、LBP 这些经典特征描述子的特性对比也出现过。比如 SIFT 为什么具有尺度不变性和旋转不变性、HOG 主要用在行人检测中的原因、LBP 的旋转不变模式是怎么实现的。这些问题虽然不会要求你手推公式但考察的是你是否真正理解这些特征的设计思想。图像变换同样是重点。仿射变换矩阵的表示、平移旋转缩放的组合方式、透视变换和仿射变换的区别这些内容在选择题中占了不少分值。我当时还遇到了一道关于图像金字塔的题目问高斯金字塔和拉普拉斯金字塔的差异如果平时只关注深度学习中的多尺度特征融合这种偏传统的细节问题很容易丢分。2.2 深度学习理论从卷积推导到训练 Trick深度学习部分的题目不会是简单的输入输出维度是多少而是会深入考察原理性的内容。卷积操作的计算是最基础的。输入特征图 H×W×C卷积核大小 kpadding 为 pstride 为 s输出尺寸的计算公式 (H 2p - k) / s 1 必须滚瓜烂熟。在此基础上题目会升级到感受野的计算层叠多个小卷积核与使用一个大卷积核的等价感受野对比这也是 VGGNet 用 3×3 卷积堆叠替代大卷积核的理论依据。我当时遇到了一道计算题要求算一个 3 层 3×3 卷积堆叠后的感受野是否等于 1 层 7×7 卷积除了计算还要解释参数量上的差异这题考察的其实就是对小卷积核堆叠减少参数、增加非线性这个知识点的理解。Batch Normalization 是必考的。它的计算流程要能完整写出来先算 batch 均值、方差再归一化最后进行缩放和平移γ 和 β。关键考点是训练和推理阶段的差异训练时用当前 batch 的统计量推理时用训练阶段滑动平均得到的全局统计量。这一点的考察频率极高说明出题人希望候选人不仅会调包还知道底层是怎么运作的。损失函数方面交叉熵、Focal Loss、Dice Loss、IoU Loss 的适用场景和公式都是高频考点。Focal Loss 提出用来解决类别不平衡问题它通过调制因子 (1-p_t)^γ 降低易分类样本的损失权重这个公式的推导和 γ 的作用会被反复考察。目标检测中正负样本不平衡的问题也是简答题的常见素材。目标检测模型的发展脉络需要梳理清楚两阶段Faster R-CNN、Mask R-CNN、Cascade R-CNN和单阶段YOLO 系列、SSD、RetinaNet的代表模型、优缺点、mAP 和 FPS 的权衡。我笔试时遇到一道简答题要求对比 Faster R-CNN 和 YOLO 在检测小目标时的性能差异及原因这种题没有标准答案关键在于你的分析是否有条理、能不能涉及多尺度特征、锚框设计、感受野匹配这些问题。模型加速和轻量化也是容易出现的考点。深度可分离卷积MobileNet 的核心思想、1×1 卷积的作用通道变换、降维、增加非线性、模型剪枝和量化。题目会问某种加速方法的原理和适用场景这部分如果你只停留在听说过的层面是很难写清楚的。2.3 机器学习与数学基础那些送分题和送命题机器学习算法部分网易的题目风格比较像考研数学和机器学习课程的结合体。K-Means 聚类是常客它的算法步骤、初始中心点选择的影响、K 值怎么确定肘部法则、轮廓系数、收敛性和局部最优。有一道选择题给出了一个二维数据集的分布让你判断 K-Means 聚类的结果实质上考察的是对聚类假设凸形簇的理解。还有一道题问 DBSCAN 和 K-Means 的区别考察密度聚类如何解决非凸簇和噪声点问题。SVM 虽然现在在 CV 领域用得不多但在笔试中依然占据一席之地。支持向量的概念、硬间隔和软间隔的区别、核函数线性核、多项式核、RBF 核的选择依据、KKT 条件。我记得有一道题考察 RBF 核中的 γ 参数对模型复杂度的影响γ 越大模型越复杂、越容易过拟合这个结论要和 SVM 的理论结合起来记忆。概率统计和线性代数更是笔试的基础工具。条件概率、贝叶斯公式、朴素贝叶斯的独立性假设、高斯分布的性质这些在选择题里会以不同的形式出现。有一道题给出了一个分类任务的条件概率表要求用最大后验估计MAP做决策其实很简单但现场紧张的时候容易算错。线性代数方面矩阵的特征值分解、正定矩阵的判断、向量正交性、PCA 的降维原理为什么取最大特征值对应的特征向量这些都是高频考点。数学基础部分还考察过凸优化和最小二乘法。二维线性回归的闭式解推导、梯度下降的收敛性分析、L1 和 L2 正则化的区别L1 产生稀疏解、L2 防止过拟合这些知识不能只背结论要能理解推导过程因为题目可能会换个形式来考。2.4 数据结构与算法编程题的地基网易笔试的编程题部分数据结构与算法的考察几乎是必考的。我回忆了一下编程题第一题往往是字符串处理或简单模拟第二题是动态规划或贪心第三题的难度就上来了通常需要综合运用多种数据结构。热搜词里反复出现的 KMP 算法就是这类笔试考察重点的一个缩影。KMP 的核心思想是当模式串与文本串匹配失败时利用已经匹配的部分信息让模式串尽量多地向后移动而不是从头开始匹配。next 数组的求解是 KMP 的关键next[i] 表示模式串前 i 个字符组成的子串中最长相同前后缀的长度。笔试中会直接给出一个模式串让你手动计算 next 数组热词里提到的模式串 abacaba 就是一个经典练习例子它的前缀 ab 和 aba 的关系、next[7] 的值计算能够检验你是否真正理解这个算法的推导过程。除了 KMP字符串匹配相关的问题还可能出现 Sunday 算法、BM 算法等但 KMP 是考察频率最高的。数据结构方面优先队列堆、并查集、线段树是编程题常用的优化工具。有一道类似最短路径变体的题目可以用 Dijkstra 算法配合优先队列实现 O(E log V) 的复杂度如果不知道堆优化很容易超时。贪心算法和动态规划是编程题的主战场。区间调度问题按结束时间排序贪心、背包问题01 背包、完全背包、编辑距离、最长上升子序列LIS、最长公共子序列LCS这些经典题型的解题模板要烂熟于心。网易还喜欢在动态规划中加一些条件变化比如最多只能进行两次买卖的股票问题需要设计三维 DP 状态考察的就是状态转移方程的推导能力。排序算法的基础知识同样不能忽视。快速排序的复杂度为什么是 O(n log n)、什么情况下退化到 O(n²)、归并排序的稳定性和空间复杂度、堆排序如何建堆、计数排序和基数排序适合什么场景。有一道选择题问下列哪个排序算法是稳定的这个考点看似简单但如果没记住具体实现细节比如快速排序的交换过程会破坏稳定性很容易丢分。3. 实战题目解析那些年我踩过的坑3.1 选择题现场实录细节决定成败选择题部分我印象最深的一道题是关于卷积输出尺寸的题目给出输入尺寸和卷积核参数要求计算输出尺寸看上去很简单但选项里特意设置了一个没有考虑 padding 为 valid 还是 same的陷阱。如果你只是机械地套公式而忽略了 padding 类型的判断就非常容易踩坑。这类题出的不是计算能力而是读题的细心程度。除了计算题概念辨析题也是重灾区。有一道多选题考察经典的机器学习算法和深度学习算法的区别四个选项分别是关于特征工程依赖程度、数据量需求、模型可解释性、训练时间。前三个选项都容易判断但训练时间这个选项表述是深度学习算法一定比机器学习算法训练时间更长这种绝对化表述实际上是错误的因为训练时间取决于模型大小、数据量、优化器选择等多种因素并非算法类别决定。这种绝对化表述大概率错误的思路在做选择题时非常有用。关于 KMP 和字符串匹配的选择题也值得记录。题目给了一个模式串要求判断使用 KMP 和暴力匹配在某个特定文本上的比较次数差异。这种题本质上考察的是对 KMP 优化效果的理解而不仅仅是背 next 数组的计算方法。我的经验是遇到这类题先手动模拟一遍匹配过程再对比暴力匹配不要直接凭印象选择。3.2 编程题实战一道动态规划题目的完整复盘编程题中最让我记忆犹新的是一道从矩阵左上角到右下角的最短路径和的变体题。基础版本的解法是双循环 DPdp[i][j] min(dp[i-1][j], dp[i][j-1]) grid[i][j]这个相信大家都写过。但网易的题加了两个条件一是矩阵规模很大不能开 O(mn) 的辅助数组只能用滚动数组二是允许最多 K 次改变某个格子的值为相反数的操作这就把问题从简单 DP 升级成了带状态的 DP。这道题的解题思路是关键设计三维 DP 状态 dp[i][j][k] 表示走到 (i,j) 位置时使用了 k 次改变机会的最小路径和。转移方程需要对每个格子考虑改变和不改变两种情况不改变该格子的值dp[i][j][k] min(dp[i-1][j][k], dp[i][j-1][k]) grid[i][j]改变该格子的值dp[i][j][k] min(dp[i-1][j][k-1], dp[i][j-1][k-1]) - grid[i][j]边界条件是 k0 时只能不改变以及 i0 或 j0 时需要单独处理。使用滚动数组优化空间后复杂度从 O(mnk) 的时间、O(mnk) 的空间降到了 O(mnk) 的时间、O(nk) 的空间。这道题的高明之处在于它既有传统 DP 的框架又加入了新的状态维度考察的是你会不会从二维路径问题泛化到带约束的路径问题。如果平时只是机械刷题而没有真正理解状态设计的原则遇到新题就容易蒙圈。我当时的解题过程是怎样的呢第一遍我先写出朴素的三维 DP 版本验证核心逻辑是否正确然后逐步优化。这是我一直推荐的答题策略先保证正确性再考虑性能而不是一上来就想一次性写出最优解。在笔试环境里时间和心态都紧张先写一个能通过的版本比追求完美解法更实际。3.3 简答题的回答框架面试官到底想看什么简答题部分网易的风格是看似开放实则考察结构化思维。我记得有几道题是这样问的请比较 Focal Loss 和 OHEM在线困难样本挖掘在解决目标检测中正负样本不平衡问题上的异同。这道题的核心考点其实不只是 Focal Loss 的公式而是你对困难样本处理策略的理解深度。我的回答逻辑分三层第一层说明问题背景即一阶段检测器中正负样本比例严重失衡大量易分类负样本主导了损失第二层分别介绍 Focal Loss 的调制因子机制和 OHEM 按损失排序选择困难样本的机制第三层做对比分析——Focal Loss 是软性的、连续的样本权重调整OHEM 是硬性的、离散的样本选择策略Focal Loss 不需要额外的超参选择样本比例而 OHEM 需要设定保留比例。答题时我会注意先把核心概念和公式写清楚再展开分析最后给出对比结论。这种金字塔结构的回答方式在限时环境下效率最高也最容易让阅卷人get到你的思路。还有一道简答题问在嵌入式设备上部署一个实时目标检测模型你会从哪些方面进行优化这道题考察的是模型加速的工程能力。我的回答结构是模型结构层面轻量化骨干网络、深度可分离卷积、通道剪枝、推理框架层面TensorRT 的 FP16/INT8 量化、层融合、内存复用、硬件层面NPU 算子选择、多线程异步推理。除了列举方法我还重点说明了量化感知训练的重要性——如果直接对训练好的模型做 INT8 量化精度损失往往较大需要在训练阶段模拟量化过程这也是实践中最容易被忽视的细节。这类题没有标准答案但有没有工程实践经验、有没有踩过部署的坑在回答中会暴露得很明显。所以我的建议是平时多关注模型部署相关的技术方案哪怕只是复现一个 TensorRT 量化的教程都能在答这类题目时加分不少。4. 备考路线与避坑经验4.1 时间线规划三个月如何系统性准备如果你的目标是暑期实习或者秋招正式批至少提前三个月开始准备是比较稳妥的。我自己的备考节奏是这样的第一个月明确知识体系框架。先做一次自测把容易遗漏的知识点列出来然后按传统图像处理 → 机器学习基础 → 深度学习理论 → 数据结构与算法的顺序过一遍。这个阶段不要贪多求快核心目标是建立完整的知识地图。我当时用到的资料是冈萨雷斯的《数字图像处理》重点看直方图处理、边缘检测、特征提取章节和李航的《统计学习方法》重点看感知机、KNN、朴素贝叶斯、决策树、SVM、聚类这两本书虽然经典但内容量大建议配合网上的考点整理一起看比从头啃到尾效率高很多。第二个月集中刷题和代码练习。LeetCode 上把高频题刷两遍第一遍按类型刷数组、字符串、链表、树、图、DP、贪心第二遍按难度和频率刷。同时用牛客网的历年真题进行计时模拟尤其是网易、字节、腾讯近三年的笔试题目。这个阶段的重点不是刷题数量而是培养看到题就能快速定位考点的能力。编程题限时训练很重要我每次模拟都严格控制时间做完后认真分析复杂度是否可以优化。第三个月针对性地查漏补缺。把前面做错的题和薄弱知识点重新整理一遍重点突破高频考点比如 KMP 算法的 next 数组计算、卷积输出尺寸和感受野计算、损失函数公式推导、常见排序算法的稳定性对比。这个阶段也要开始准备简答题的答题模板把目标检测、模型加速、图像分割这几个方向的常见问题写成自己的知识卡片方便快速回忆。4.2 复习资料与工具清单关于复习资料我按使用频率和优先级给你列一份清单第一梯队是官方文档和经典教材。PyTorch 官方文档是理解深度学习实现细节的第一手资料BatchNorm、卷积、损失函数的实际行为都能在这里找到答案。李航的《统计学习方法》涵盖机器学习核心算法公式推导完整建议和《机器学习》周志华配合使用前者偏理论推导后者偏概念直觉。第二梯队是刷题平台和真题资源。LeetCode 是算法能力训练的主战场牛客网是大厂笔试真题的聚集地GitHub 上还有人整理了大厂面试题解可以搜索2020 网易笔试等关键词找到当年的真题和讨论帖。第三梯队是论文和技术博客。这里的重点不是让每个人去精读顶会论文而是要学会阅读综述性博客快速理解不同技术方案的核心思想。对于目标检测我个人很推荐从 Faster R-CNN、YOLO、RetinaNet 这几篇经典论文的解读入手配合 PyTorch 官方教程理解实现细节。特别是 Focal Loss 的原论文公式推导和实验对比部分值得细读。4.3 考场上的时间分配与心态调整网易这套笔试的时间分配真的需要提前规划。我个人建议选择题控制在 45 到 50 分钟以内编程题每道题预留 20 到 25 分钟简答题留出 20 到 30 分钟。不要在一道选择题上纠结超过 3 分钟如果拿不准就标记出来先往下走做完所有题目后有剩余时间再回头检查。编程题的答题顺序也有技巧。先花 1 分钟通读所有编程题评估难度优先做最有把握的那道。如果第一道编程题超出了预期难度不要死磕先跳过做后面的题。有些同学习惯按顺序答题结果在第一道题上卡了 40 分钟导致后面能拿分的题目没时间做这是最可惜的。心态调整方面我的经验是笔试不是要求你拿满分而是要求在限定时间内展示你会的东西足够多。所以遇到不会的题果断放弃比死磕到底更有价值。我笔试时有一道简答是关于粒子群算法的原理和改进我虽然知道它是群体智能优化算法但具体细节的把握不够深入。我当时的策略是清楚地写下了算法的大致框架和核心思想同时坦诚地说明具体参数调优和实践经验有待加强并补充了它和模拟退火、遗传算法在共性上的对比这反而显得思路清晰最终也顺利进入了面试环节。关于心态我自己的一个小技巧是进笔试前先做几道力扣简单题热身让大脑进入算法思维状态同时给自己一个积极的心理暗示——这套题我已经认真准备了该会的都会。听起来有点玄学但确实能帮助缓解紧张情绪。写在最后几个必须记住的经验回过头看这场网易 CV 算法岗笔试虽然已经过去了很长一段时间但它对我的影响很大。尤其让我印象深刻的是它提醒了我计算机视觉不只是深度学习模型的堆叠更是数学、传统图像处理、算法设计和工程实现的全方位融合。我自己在准备时最大的教训是不要因为岗位叫计算机视觉就只盯论文和模型数据结构与算法的基本功在这个岗位的筛选中权重很高。如果你正在准备类似的笔试我的建议是先花两周时间把知识框架搭好再花一个月集中刷题和模拟笔试最后留出两周做针对性的查漏补缺。最后再分享一个小技巧做完笔试之后一定要对自己的答题情况进行复盘。我每次模拟笔试后都会整理一个错题本记录知识点盲区和粗心犯错的地方这比单纯刷题有效得多。坚持下来到真正笔试的时候你会发现很多题都眼熟很多坑都能轻松避开。祝各位求职顺利早日拿到心仪的 offer。
返回列表