ARTICLE DETAIL

资讯详情

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

网易CV岗校招笔试全解析:从图像处理到KMP的考点与冲刺策略

网易CV岗校招笔试全解析:从图像处理到KMP的考点与冲刺策略 网易2023校招笔试的计算机视觉算法工程师岗我印象里是分了好几批的正式第二批的题但凡做过的人应该都有同感不偏不怪但覆盖面极广想靠临时抱佛脚蒙混过关基本没戏。很多同学以为投了CV岗笔试就只考深度学习结果上手才知道数据结构与算法才是硬骨头图像处理、机器学习、数学基础一个不落。这篇我把这套笔试的考点、编程题思路、时间分配和踩过的坑都梳理一遍给接下来要冲网易或者其他大厂CV岗的同学一个比较完整的参考。1. 笔试整体情况与岗位定位1.1 计算机视觉岗位在考什么网易校招笔试题型一般分两种纯编程题或者“选择题编程题”混合卷。计算机视觉算法工程师正式第二批这套卷我根据往年回忆和同学反馈大概率是90到120分钟题型大致包括单选题约10-15道多选题约5-10道编程题2-4道。选择题覆盖面非常杂包括计算机视觉基础、机器学习原理、深度学习模型、概率统计、线性代数甚至还会掺一两道数据结构、操作系统、计算机网络相关的题。别觉得奇怪大厂校招笔试题本来就喜欢把通用CS基础混进来毕竟筛的是一线工程师不是纯研究员。CV岗位特有的考点主要集中在图像处理滤波、边缘检测、特征点、图像分类/检测/分割的经典模型、损失函数与优化器原理、模型训练技巧以及经典论文的核心思想。选择题通常会考一些很细的点比如“Sobel算子计算的是图像的什么信息”“BN层在训练和推理时的行为差异”“感受野怎么计算”这类。这些题有个共同特点如果你只看过论文标题或者只在框架里调过API基本很难答对。一定要能自己手推、手算。1.2 “正式第二批”这个标签意味着什么很多大厂校招会分多个批次在线笔试第一批往往是简历投递高峰第二批就是补漏加高门槛筛选。正式第二批最大的特点是笔试题跟第一批不同而且第一批的题目会流到网上但第二批通常会换题。所以如果你拿着第一批的真题去死记硬背很容易翻车。正确做法是拿第一批的题练手把里面涉及的知识点彻底搞懂因为换汤不换药。另外“正式第二批”通常意味着你的简历已经过了初筛只要笔试成绩达标就能进面试。笔试不是用来拉开差距的而是及格线。但这条及格线不低网易笔试的通过率大概在20%到30%左右具体每年不同。也就是说一套卷子下来四五个候选人里只能进一个。这种淘汰率下靠猜和蒙走不远必须系统复习。2. 高频考点拆解从基础到前沿2.1 计算机视觉基础图像处理与特征提取这一块是CV岗笔试的重头戏也是很多从深度学习直接入门、没系统学过图像处理的同学的软肋。我建议不要跳过因为选择题里至少有3到5题是从这里出的。图像滤波高斯滤波、中值滤波、均值滤波的区别。高斯滤波是加权平均权重服从高斯分布中值滤波是取邻域中值擅长去椒盐噪声均值滤波是简单平均容易模糊边缘。笔试常考的一个点是哪一种滤波对椒盐噪声效果最好答案是中值滤波。原因是椒盐噪声是极端的离群点中值能直接把离群点去掉而均值会把噪声平滑到邻域里效果很差。边缘检测Sobel算子本质是离散微分算子计算的是图像梯度幅值和方向属于一阶导数。Canny边缘检测的完整流程是高斯平滑、计算梯度幅值方向、非极大值抑制、双阈值处理和边缘连接。笔试如果考“Canny为什么用双阈值”要能答出来单阈值容易导致边缘断裂低阈值用于连接弱边缘高阈值用于确定强边缘。特征点SIFT、ORB、FAST。SIFT具有尺度不变性和旋转不变性因为它使用了高斯金字塔和方向直方图ORB基于FAST加BRIEF计算速度快适合实时场景。笔试常考“谁对尺度变化更鲁棒”这类题答案一般是SIFT。图像金字塔高斯金字塔是降采样加高斯模糊拉普拉斯金字塔保存高频残差用于多尺度检测。光流法假设亮度恒定、小运动、空间一致LK光流法基于这些假设做视频跟踪。这些知识不一定每次笔试都考但一旦出现就是基础分不能丢。2.2 机器学习与深度学习原理这部分出题范围很广从传统机器学习到深度学习都会涉及。传统机器学习方面逻辑回归、SVM、决策树、随机森林、K-Means、PCA、朴素贝叶斯、EM算法都是常见考点。常考的点包括逻辑回归的损失函数是交叉熵SVM的核函数作用是把低维非线性问题映射到高维线性可分K-Means的缺点是需要预设K值、对初始中心敏感、对非凸簇效果差PCA是线性降维不是非线性。另外优化算法里偶尔会冒出来粒子群算法、模拟退火这种不常见的名字大概率是让你判断它属于哪一种优化框架知道大概思想就行。深度学习基础方面CNN的卷积、池化、全连接是必考。卷子上常见的问题是感受野计算简单版本是逐层往回推初始感受野为1每经过一个卷积核大小为K、步长为S的层感受野按公式 R R_prev (K - 1) × 步长累积值 扩大。如果步长都是1那就直接累加K-1。还有参数量计算一个3×3卷积输入通道C_in输出通道C_out参数量是C_in × C_out × 3 × 3如果有偏置就再加C_out。目标检测是CV岗的重头戏两阶段代表Faster R-CNN核心是RPN加Fast R-CNN单阶段代表YOLO和SSD核心是锚框加回归。边界框回归损失常用L1/L2或Smooth L1分类损失用交叉熵。NMS的原理要能说清楚按置信度排序抑制与高置信度框IoU过大的低置信度框。分割网络里U-Net的编码器解码器结构、用skip connection融合浅层细节和深层语义也是常见考点。注意力机制和Transformer现在已经是标配Self-Attention的计算过程一定要能默写Q、K、V三个向量attention分数 softmax(QK^T / sqrt(d))V。这块很容易出选择题比如问注意力复杂度的量级答案是O(n^2 d)。2.3 数据结构与经典算法很多人忽略这个以为CV岗不考其实编程题大量集中在这里。网易作为互联网公司算法功底是硬指标。笔试常见算法题型包括链表反转合并、栈与表达式求值、二叉树层序遍历与非递归遍历、堆与TopK、排序算法、二分查找及其变种、动态规划、贪心、回溯、字符串匹配、图的BFS/DFS、最短路、拓扑排序、并查集。有一个让我印象深刻的题也是网上热门讨论过的“在KMP算法中对于模式串pabacaba其next数组……”这种题就是典型的细节题考的是你把KMP的next数组从头到尾推一遍的能力而不是背代码。为什么大厂爱考KMP因为KMP考察的不仅是字符串匹配更是对前缀函数这一抽象概念的理解。next数组本质是当前前缀的最长相等真前后缀长度理解了这一点任何变形都能应付。排序算法也是高频考点笔试不会只让你写代码还会问复杂度、稳定性、最坏情况。快排平均O(n log n)最坏O(n^2)归并排序稳定空间O(n)堆排序不稳定空间O(1)。这些数字要背熟而且要能解释为什么。2.4 数学基础与概率统计CV算法工程师离不了数学选择题里会有线性代数的矩阵运算、特征值、特征向量、SVD概率论的贝叶斯公式、最大似然估计、高斯分布性质信息论的熵、交叉熵、KL散度。常考的一道概率题是已知先验P(y1)0.1分类器整体准确率0.9问某个预测为1的样本真实为正类的概率。这要用贝叶斯公式P(y1|x) P(x|1)P(1) / P(x)其中P(x)需要根据类别条件概率和准确率展开。这类题不能凭感觉一定要把每个概率写清楚再算。矩阵题常见结论是矩阵的迹等于所有特征值之和行列式等于所有特征值之积。如果给了特征值这两项可以秒答。信息论题常考判断题KL散度不对称KL(P||Q)不一定等于KL(Q||P)这是很多人容易记错的地方。3. 编程题实战解题思路与代码模板3.1 KMP的next数组推导以“abacaba”为例我直接拿网上热词里的“abacaba”当案例把推导过程完整走一遍。先约定我这里的next[i]表示模式串p[0..i]的最长相等真前后缀长度真前后缀就是不能取整个子串本身的相等前后缀。比如“aba”的前缀有“a”“ab”后缀有“a”“ba”相等的是“a”长度1。i0字符a没有真前后缀next[0]0i1子串ab前缀{a}后缀{b}没有相等next[1]0i2子串aba最长相等前后缀是anext[2]1i3子串abac前缀{a,ab,aba}后缀{c,ac,bac}无相等next[3]0i4子串abaca最长相等前后缀是anext[4]1i5子串abacab最长相等前后缀是abnext[5]2i6子串abacaba最长相等前后缀是abanext[6]3所以按这个约定next数组是[0,0,1,0,1,2,3]。不过有的教材把next[0]定义为-1其他位置表示p[0..i-1]的最长相等真前后缀长度也就是整体右移一位结果是[-1,0,0,1,0,1,2]。考试时题目会说明采用哪种定义别背错。如果实在忘了怎么推就用暴力法对于每个位置把前缀集合和后缀集合都列出来看最大公共长度虽然慢但保证正确。3.2 图像处理模拟题实现3x3均值滤波编程题有时会直接出图像处理相关的给定一个M×N的灰度图矩阵和一个3×3的卷积核输出滤波后的结果。这类题看着简单但边界处理是个坑。标准做法是对边缘做填充pad1。填充方式常见的有零填充、复制边缘、镜像填充。如果题目没说明默认零填充。但更严谨的是判断当前像素是否在边界内只对有效邻域求和并计数。代码可以这样写vectorvectordouble meanFilter(const vectorvectorint img) { int m img.size(), n img[0].size(); vectorvectordouble res(m, vectordouble(n, 0)); for (int i 0; i m; i) { for (int j 0; j n; j) { double sum 0; int cnt 0; for (int di -1; di 1; di) { for (int dj -1; dj 1; dj) { int ni i di, nj j dj; if (ni 0 ni m nj 0 nj n) { sum img[ni][nj]; cnt; } } } res[i][j] sum / cnt; } } return res; }注意如果题目要求四舍五入到整数可以用(int)(res 0.5)。有的题目会直接给一个拉普拉斯核或者高斯核让你计算某个位置的新值你要会手动做卷积固定核中心与当前像素对齐然后加权求和。3.3 快速幂与其他高频模板快速幂是笔试高频因为很多数论和组合问题会用到。给出C模板long long quickPow(long long a, long long b, long long mod) { long long res 1 % mod; while (b 0) { if (b 1) res res * a % mod; a a * a % mod; b 1; } return res; }为什么快速幂快因为把指数b看成二进制每次对a做平方根据当前二进制位决定要不要乘进结果复杂度O(log b)。注意乘法溢出中间结果用long longmod取模也要在乘法每一步都做。动态规划是编程题大头最长上升子序列、最长公共子序列、背包问题、编辑距离都是老面孔。核心是定义状态、找转移方程、初始化、确定遍历顺序。建议做题时先把dp[i][j]的含义写在注释里再写转移能减少大量低级错误。3.4 代码风格与输入输出细节在线笔试平台对输入输出要求很严格很多同学不是算法不会而是输入输出格式没写对导致0分。读入方面如果题目给了一行整数用cin或scanf读注意缓冲区如果字符串可能包含空格用getline。输出方面要求保留几位小数时用printf(%.2f, x)或cout加上fixed和setprecision(2)。溢出方面看到模数1000000007基本就要用long long。边界方面数组为空、链表为null这些情况一定要处理隐藏测试用例最喜欢卡这里。有的题目是多组输入要用while(cin n)这种写法不然只过第一组。还有一个易错点题目要求返回int但中间结果可能远超int范围。快速幂里统一用long long最稳妥不要在最后一步才强转类型。4. 答题策略与时间管理4.1 选择题的取舍与排除技巧网易笔试的选择题题量不小而且多选题是否倒扣分每年规则可能不同。开考前一定要先读清楚说明。我个人的原则是单选题30秒内没思路就先标记最后有时间再回来看多选题宁缺毋滥除非十分肯定不然不要选太多但如果明确写了“少选不得分”那就另当别论。很多选择题可以通过排除法解决。比如问“以下哪个不是CNN的组成部分”看到PCA混在里面直接秒排。对于计算题比如卷积输出尺寸、感受野计算套公式输出尺寸 (H 2P - K) / stride 1。这类公式必须练到条件反射。4.2 编程题优先级和暴力解策略编程题一般是2到4道难度通常递增第一题偏基础第三题可能直接上困难动态规划。我建议把所有编程题先都读一遍然后按“有把握程度”排序先拿分再说不要卡在一道题上耗光所有时间。如果真的没思路不要空着。暴力解也能拿部分分很多平台的测试点是分档次的n小于等于1000的测试点允许O(n^2)n小于等于100000的测试点需要O(n log n)。所以先写一个能过的暴力版本再考虑优化时间充裕再改。万一感觉完全没思路用“打表”或“随机化”去骗个样例分是最后的兜底手段但不要依赖。这类方法只能作为考场突围手段平时刷题还是老老实实练算法。4.3 时间节奏与检查顺序如果总共120分钟我的分配建议是前10分钟浏览全卷标记会与不会中间40分钟做选择题剩下70分钟全部给编程题每道题先写框架再填细节。编程题做完一道就立刻跑一遍样例确保输出格式正确别等全部写完再统一测试。最后留5到10分钟检查有没有题目漏答尤其是多选题有没有代码忘记提交有没有输出格式错误。另外笔试过程中绝对不能切屏。我见过有同学因为切出去看计算器被系统警告严重时直接判作弊。平台自带计算器或者你在草稿纸上手算不要冒险。5. 常见问题与避坑实录5.1 在线笔试环境的坑网易校招笔试用的在线平台不同批次可能不一样有的用牛客有的用赛码还有自研系统。开考前一定要提前一天进入系统测试摄像头、麦克风、浏览器兼容性。我见过最惨的情况是考试当天浏览器插件拦截导致代码编辑器无法输入最后只能重启白白浪费10分钟。建议用Chrome或Edge关掉所有翻译插件、广告拦截插件提前关闭微信、钉钉这类会弹窗的软件。如果出现断网重连、摄像头无法启动等问题第一时间截图联系客服不要自己乱点。有的考试系统如果没有摄像头启动成功会直接判定违规。5.2 复习中的典型误区误区一只看论文不手推。有些同学把CV笔试当成面试觉得能聊出Transformer结构就行。但笔试考的是选择题和编程题你必须在30秒内写出感受野公式必须能手动算出KMP的next数组这些不看手推根本做不到。误区二只刷hard题不刷基础题。校招笔试的编程题中档偏多LeetCode Easy和Medium才是主导。花5小时做出一道Hard题性价比远不如把10道Medium题练熟。网易这类公司笔试考的不是炫技是稳。误区三忽略数学和概率。CV岗笔试经常出现概率题、矩阵题很多人一看到就蒙。建议把概率论和线性代数的核心章节翻一遍重点看条件概率、贝叶斯、矩阵特征值、SVD。误区四不刷往年真题。网上每年都有网易校招笔试真题的帖子这些是宝贵素材。真题的作用不是押题而是让你了解出题风格和难度。至少把近三年的真题做一遍体会一下选择题的细度和编程题的平均难度。5.3 考后复盘笔试结束后趁记忆还清晰把题目和你的作答记录下来。很多人考完就放飞两周后收到面试通知才开始回忆发现自己连考了什么题都不记得复盘效率极低。复盘要点选择题里不会的概念题全部查资料弄懂编程题没过的重新在本地跑一遍找出bug记录每道题的时间花费看自己哪种题容易卡壳把错题整理到错题本面试前再翻一遍。考场上如果遇到题目和自己刷过的很像但条件不同要特别注意审题。比如“最长上升子序列”变成“最长不下降子序列”条件一改老答案就不对了。6. 30天冲刺建议6.1 分阶段计划如果你离笔试还有一个月可以参考这个节奏。第1周把计算机视觉核心基础过一遍。图像处理部分复习滤波、边缘检测、特征点深度学习部分复习经典网络结构和目标检测流程配合手推感受野和卷积输出尺寸。第2周数据结构与算法专题。每天至少2道LeetCode Medium优先数组、链表、字符串、树、贪心、动态规划。遇到KMP、快速幂、排序这些高频模板必须能手写出来。第3周针对CV岗补数学和机器学习。条件概率、贝叶斯、最大似然、信息熵、KL散度、SVM、K-Means、PCA每天做一套往年真题或模拟题掐时间。第4周模拟笔试。用牛客网的模拟系统练全流程包括摄像头、切屏提醒。每周挑1到2次完整模拟一次2小时模拟后复盘。为什么一个月比较合适因为校招笔试考察范围广但深度有限一个月刚好够建立知识框架和刷题手感。如果时间更短就优先保证选择题正确率和简单编程题拿分难题直接放弃。6.2 我最后想说的经验网易2023校招笔试的计算机视觉算法工程师岗考的不只是临场反应更是你过去积累的底子。方向对了战术对了剩下的交给平常心。我个人的体会是笔试结束那一刻胜负有七成已经定了。真正能让你排到前面去的不是某道hard题做没做出来而是基础题有没有全部拿到分代码有没有一遍写对时间分配是否合理。刷题量不是目的稳定输出才是。最后分享一个小技巧考前把KMP的next数组、快速幂、快排和二分模板抄在A4纸上不是为了作弊而是为了考前最后2小时快速过一遍“肌肉记忆”。进了考场看到类似的题手不抖。这个方法对我自己很管用也推荐给你。
返回列表