网易2020校招CV算法工程师笔试复盘:核心考点与备考策略
2026/8/31 5:32:01 网站建设 项目流程

说实话,看到网易 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,卷积核大小 k,padding 为 p,stride 为 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 编程题实战:一道动态规划题目的完整复盘

编程题中,最让我记忆犹新的是一道"从矩阵左上角到右下角的最短路径和"的变体题。基础版本的解法是双循环 DP,dp[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]

边界条件是 k=0 时只能不改变,以及 i=0 或 j=0 时需要单独处理。使用滚动数组优化空间后,复杂度从 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。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询