2018年那个秋招季我在牛客网上点开“网易2018校招计算机视觉算法工程师笔试卷”的时候心里其实是有点慌的。倒不是怕题难而是这种岗位的笔试卷子有个特点表面上考的是计算机视觉和深度学习实际上一张卷子能把数据结构、算法、机器学习原理、图像处理基础全部串起来。你以为是来考CNN的结果前面还坐着一整排字符串匹配和排序算法在等你。这份卷子对我而言意义不小它几乎是我秋招的转折点。在此之前我一直把精力放在模型结构、论文复现上对笔试要考的基础内容有些轻视。考完这份卷子我才意识到很多CV岗位的笔试其实是在用算法题筛人——深度学习可以入职后再学但代码功底和算法思维短期内补不上来。这篇文章我想把这份卷子的考察方向、核心知识点、我当时踩过的坑以及后来总结的备考路线全部拆开讲一遍。不管你是准备明年校招的在校生还是打算跳槽转岗的从业者这份复盘应该都能帮你少走一些弯路。1. 一张老试卷的含金量为什么现在还要复盘1.1 这份试卷到底考了什么先说结论2018年的网易CV算法工程师笔试卷整体难度在当年的一众大厂里属于中等偏上。题目不算偏门但覆盖面非常广对基础要求很扎实。我当时考完凭记忆把考点分成了四个板块后来跟几个一起笔试的同学对了下答案基本印证了这个判断。考察板块题目形式核心考点大致占比数据结构与算法单选、多选、编程题KMP、堆排序、TopK、DP、图论30%左右机器学习与优化理论单选、多选、简答逻辑回归、SVM、粒子群、K-Means、KNN20%左右深度学习与计算机视觉单选、多选、简答CNN结构、Sobel算子、图像分类、目标检测35%左右概率统计与逻辑推理单选、简答概率计算、随机算法、智力题15%左右注意这个“大致占比”不同年份会有浮动但核心逻辑没变。网易CV岗的笔试卷并不打算把你考成深度学习的论文机器它更想确认你这个人有没有扎实的计算机基础、能不能看懂模型背后的数学原理、有没有基本的工程代码能力。1.2 为什么这份试卷现在复盘依然有价值2018年深度学习岗位的面试风格和现在有一些区别。那时候大模型还没有席卷一切CV岗笔试的重点依然集中在经典算法、经典网络结构、图像处理基础这些范畴。但恰恰是这些内容构成了今天算法面试的“基本盘”。现在很多同学准备面试一上来就扎进Transformer、多模态、大模型微调里结果笔试遇到一个Sobel算子或者KMP匹配就懵了。说句不好听的这类基础题在笔试里出现频率极高而且往往是区分度最高的题目。你把最新的模型讲得再溜基础算法题不过关笔试这一关就直接卡住了。另外这份试卷也代表了一类典型的大厂CV岗笔试风格题目不追求标新立异但求考察的维度足够广、足够深。复盘它其实是在复盘整个算法岗笔试的底层逻辑。2. 试卷结构拆解四个板块各有各的考察逻辑2.1 数据结构与算法代码题的硬仗在这互联网公司的技术岗笔试不管你是前端后端还是算法工程师数据结构与算法永远是重头戏。网易这份卷子也不例外而且单选多选里就有不少纯考概念记忆的题目编程题更是直接考察手写代码的能力。这个板块的高频考点非常集中字符串匹配的KMP算法、快速排序和堆排序的手写、海量数据下的TopK问题、二分查找及其变体、单链表的反转和合并、二叉树的前中后序遍历与层序遍历、Dijkstra求最短路、动态规划的经典模型。这些在当年的试卷里基本都是以不同的包装出现的。我当时做题的一个感受是光会背结论没用得能手推。举个例子堆排序你如果只会用priority_queue笔试里让你手写建堆、下滤、上滤过程很多人就直接歇菜。而这种题恰恰是网易笔试的常客它考的不是你会不会调库而是你对数据结构底层原理的理解。2.2 机器学习与优化理论CV岗不能只懂深度学习这类题目在CV岗笔试里经常被低估但偏偏是很多人丢分的重灾区。网易笔试比较有意思的一点是会把一些传统机器学习算法和优化算法混在深度学习题目里一起考。比如逻辑回归的损失函数和梯度推导SVM的间隔最大化思想和核函数的作用K-Means聚类中K值怎么选KNN的三个核心应用能力再比如粒子群算法、模拟退火这类启发式优化算法它们在深度学习时代依然有很强的存在感。你要是只看深度学习相关的书这部分基本只能靠蒙。有个细节我印象很深考完之后我搜了一下当年的热搜词发现粒子群算法原理、模拟退火算法、卡尔曼滤波算法这些关键词在笔试季的搜索量突然暴涨。这说明什么说明很多人考完试就发现自己在这块有盲区考场上没答上来或者没把握下来赶紧搜。这就是典型的“考后综合征”也侧面说明这些算法在试卷里确实出现了。2.3 深度学习与计算机视觉真正的岗位题来了这一板块是拉开区分度的地方。网易作为老牌互联网公司对CV岗的要求很务实你不仅要懂模型还要懂图像处理的基础操作更要理解网络结构设计背后的动机。卷积神经网络的结构与参数计算、卷积核尺寸和感受野的计算、BatchNorm的原理和作用、Dropout为什么能缓解过拟合、常用损失函数的适用场景这些都是简答题和选择题的高频考点。图像处理层面的内容也不少比如Sobel算子检测边缘的原理、拉普拉斯算子做图像锐化的过程、图像金字塔、HOG特征这类经典手工特征。此外图像分类的经典网络演进LeNet、AlexNet、VGG、GoogLeNet、ResNet是必考内容目标检测的基本流程两阶段和单阶段也必须能说清楚。我当时还遇到了一道关于卷积输出尺寸计算的题目这种题看似简单但如果步长、填充、核大小这些参数没吃透一样容易算错。2.4 概率统计与逻辑推理题区分学霸和普通人的地方概率题在算法岗笔试中的地位一直比较微妙。它占比不算高但一旦出出来就是很多人的噩梦。网易的卷子里出现过典型的有放回/无放回取球问题、条件概率的贝叶斯计算、随机变量的期望与方差甚至还有一道类似“两个人在不同时刻到达等待时间不超过多久的概率”这种几何概型题。这类题目和前面几个板块不太一样它更多考察的是你在有限时间内的数学建模能力。我认识的一些同学代码题能AC但概率题只能空着。原因很简单平时刷题刷的是LeetCode概率论早就还给老师了。所以提醒一句备考的时候别只顾着编程题概率统计的基础公式和经典题型一定要过一遍。逻辑推理题则更接近“智力题”有些是经典的赛马问题、过桥问题、称球问题有些是结合算法场景出的新题。这类题没有太固定的解法核心思路是转化成数学问题或者已知的算法模型。考场上一时没思路很正常可以先跳过后面有时间再回来慢慢推。3. 高频核心知识点精讲与典型例题推演3.1 KMP算法一道必须拿满分的送分题KMP算法在字符串匹配类笔试题里几乎是“指定曲目”。网易当年在选择题和编程题里都涉及到了KMP而热搜词里“在 kmp 算法中对于模式串pabacaba其 next 数组”这个话题被反复搜索说明这道题当年难倒了不少人。先说KMP的核心思想传统的暴力字符串匹配在失配时只能把模式串右移一位然后再从头开始匹配复杂度是O(n*m)。KMP的改进在于失配时不回溯主串指针而是根据已经匹配成功的前缀把模式串滑动到下一个可能匹配的位置。这个“下一个位置”的信息就是通过next数组预先计算好的。next数组的计算是整个算法的核心。这里要注意不同教材对next的定义有细微差异最常见的定义是next[i]表示模式串P的前i个字符组成的子串中最长相等前后缀的长度。按这个定义P abacaba的next数组计算过程如下i1子串a没有真前后缀next[1]0。i2子串ab前缀a后缀b不相等next[2]0。i3子串aba前缀a后缀a相等前缀ab后缀ba不等。最长相等前后缀长度为1next[3]1。i4子串abac前缀a/ab/aba后缀c/ac/bac没有公共前后缀next[4]0。i5子串abaca前缀a后缀a相等。更长的前后缀不匹配。next[5]1。i6子串abacab前缀ab后缀ab相等长度为2再长的前缀aba和后缀cab不匹配。next[6]2。i7子串abacaba前缀aba后缀aba相等长度为3更长的不匹配。next[7]3。所以next数组为[0, 0, 1, 0, 1, 2, 3]。如果你的资料采用的是另一种定义next[0]-1next[i]表示失配时跳转的位置那计算出来的数组首尾会有一点点区别但核心推导逻辑是一致的。考场上看到题目先确认它采用了哪种定义再动笔别一上来就套模板。手写KMP的C代码模板大概是这样的#include iostream #include vector #include string using namespace std; vectorint getNext(const string p) { int n p.size(); vectorint next(n 1, 0); int j 0; for (int i 1; i n; i) { while (j 0 p[i] ! p[j]) j next[j - 1]; if (p[i] p[j]) j; next[i] j; } return next; } vectorint kmp(const string s, const string p) { vectorint res; vectorint next getNext(p); int m p.size(), j 0; for (int i 0; i (int)s.size(); i) { while (j 0 s[i] ! p[j]) j next[j - 1]; if (s[i] p[j]) j; if (j m) { res.push_back(i - m 1); j next[j - 1]; } } return res; }这个模板里getNext返回的next[i]表示“P[0..i]这个前缀的最长相等前后缀长度”和上面手算的保持一致。笔试手写代码时不需要纠结代码风格多漂亮但边界条件一定要清晰尤其是j0时失配的情况否则很容易写出死循环或者数组越界。3.2 排序、堆与TopK笔试里的基本盘排序算法是笔试选择题的重灾区网易也不例外。冒泡排序、快速排序、堆排序、归并排序这几种算法的平均/最坏时间复杂度、空间复杂度、稳定性必须闭着眼睛都能说出来。我整理了一张表考前一天我基本就是靠这张表扫盲的排序算法平均时间复杂度最坏时间复杂度空间复杂度稳定性冒泡排序O(n²)O(n²)O(1)稳定快速排序O(n log n)O(n²)O(log n)不稳定堆排序O(n log n)O(n log n)O(1)不稳定归并排序O(n log n)O(n log n)O(n)稳定选择题容易考这些但编程题更爱考的是基于堆的TopK问题。比如“从10万个整数里找出最大的K个数”或者“以O(n log K)的复杂度从海量数据中筛选TopK”。这类题的正解是维护一个大小为K的最小堆遍历数据如果当前元素比堆顶大就替换堆顶并下滤调整。这样堆里永远保存着当前已经遍历过的最大K个数堆顶就是第K大的数。当年很多人的第一反应是“先排序再取前K个”这在K很小、数据量很大的时候效率很差而且如果是海量数据流你根本没有办法一次性全部放进内存排序。所以笔面试里问TopK本质上就是在考察你有没有“用小根堆处理大数据”的意识。手写堆排序的话核心就是建堆和调整void heapify(vectorint arr, int n, int i) { int largest i; int l 2 * i 1, r 2 * i 2; if (l n arr[l] arr[largest]) largest l; if (r n arr[r] arr[largest]) largest r; if (largest ! i) { swap(arr[i], arr[largest]); heapify(arr, n, largest); } } void heapSort(vectorint arr) { int n arr.size(); for (int i n / 2 - 1; i 0; i--) heapify(arr, n, i); for (int i n - 1; i 0; i--) { swap(arr[0], arr[i]); heapify(arr, i, 0); } }这里有个容易犯错的地方建堆循环是从n/2-1开始的不是从0开始。因为完全二叉树的最后一个非叶子节点索引是n/2-1从下往上调整才能保证整棵堆正确。我当时笔试复习时第一次手写堆排序就是从0开始循环的结果排序结果全错排查了半天才发现是建堆起点错了。3.3 机器学习与优化算法从粒子群到SVM这一节是很多人复习时的盲区。大家都忙着看深度学习却忽略了传统机器学习算法在笔试卷里的存在感。网易这份卷子里粒子群算法、模拟退火、SVM、K-Means、KNN都有可能出现。粒子群算法PSO的原理比较直观它是模拟鸟群觅食行为的一种群体智能优化算法。算法把每个候选解看成搜索空间中的一个“粒子”每个粒子有位置和速度每一轮迭代时粒子根据个体历史最优位置和群体历史最优位置来更新自己的速度与位置。标准的速度更新公式是v(t1) w * v(t) c1 * r1 * (pbest - x(t)) c2 * r2 * (gbest - x(t))其中w是惯性权重c1是自我认知学习因子c2是社会认知学习因子r1和r2是[0,1]之间的随机数。位置更新则是x(t1) x(t) v(t1)笔试如果问PSO常见的考法有三种一是问你惯性权重w的作用w越大全局搜索能力强w越小局部搜索能力强二是给你一组公式让你判断哪个参数控制“向个体最优学习”的力度三是简答题让你描述算法流程。当年我朋友考完出来吐槽说粒子群算法原理只在本科人工智能课上听老师念过PPT结果卷子上真出了只能靠记忆写个大概。你要是备考这类公式和流程一定要背熟别觉得冷门就不看。SVM考得最多的则是间隔最大化的含义、支持向量的概念、核函数的作用、软间隔和惩罚参数C的调节。回答这类问题的套路是先说清楚SVM要找的是最大间隔超平面然后把几何间隔表达式写出来再说通过拉格朗日对偶转化为凸优化问题最后提一下核技巧可以把非线性问题映射到高维空间。这条链路答完整分基本就拿到了。K-Means和KNN也是常客。K-Means考K值选取肘部法则和算法收敛的判断条件KNN则会问它的三个核心应用能力——分类、回归、密度估计或者说缺失值填补、推荐等扩展应用。这种概念题不难但前提是你真的花时间去背过、梳理过考场上临时想是来不及的。3.4 深度学习与CV专题卷积、锐化与目标检测这个板块是CV岗笔试试卷的“主菜”。网易的题目逻辑很清晰从图像的基础处理到CNN的原理再到完整的目标检测任务一层层往上考。图像处理部分最常出现的是Sobel算子和拉普拉斯算子。Sobel算子通过两个3x3的卷积核分别计算图像在水平方向和垂直方向上的梯度近似值Gx [[-1, 0, 1], [-2, 0, 2], [-1, 0, 1]]Gy [[-1, -2, -1], [0, 0, 0], [1, 2, 1]]梯度的幅值可以用sqrt(Gx² Gy²)计算工程上为了效率也常用|Gx| |Gy|做近似。Sobel算子的特点是结合了高斯平滑和微分对噪声有一定抑制作用因此实测边缘检测时比纯差分算子要稳。拉普拉斯算子则是二阶导数的离散近似常用卷积核是[[0, -1, 0], [-1, 4, -1], [0, -1, 0]]它对噪声比较敏感所以实际用的时候一般先做高斯模糊再做拉普拉斯变换。图像锐化的做法是把原图减去拉普拉斯变换结果或者加上取决于核的中心系数符号约定这样可以让边缘处的对比度更强。问到这里很多同学会暴露出一个共性盲区只会调库不懂算子的数学形式。OpenCV里一行cv2.Laplacian()就能搞定的事考场上变成笔试题就傻眼了。所以我建议复习的时候至少要把Gx、Gy、拉普拉斯核这三种卷积核亲手推导一遍搞清楚它们分别是在提取什么方向的信息。CNN部分的考察重点更清晰卷积输出尺寸的计算公式W_out (W_in - K 2P) / S 1必须会算。ResNet为什么能训练得更深因为它引入了残差结构y F(x) x让梯度可以跨层传播缓解了深层网络的退化问题。BatchNorm为什么有效因为它对每个batch的特征做归一化再引入可学习的缩放和平移参数让每一层的输入分布保持相对稳定训练更容易收敛。Dropout为什么能防过拟合因为它训练时按概率随机丢弃神经元相当于在训练多个子网络的集成。目标检测题则偏向简答和论述两阶段方法以Faster R-CNN为代表先生成候选区域再分类回归单阶段方法以YOLO为代表直接在特征图上预测边界框和类别。答题时还要提一下NMS非极大值抑制的作用去除重叠度过高的重复检测框保留每个目标的最优结果。4. 编程题与真实场景题从手写代码到系统设计4.1 三道有代表性的编程题网易笔试的编程题数量一般控制在两到四道难度梯度明显。第一道通常是基础题考数组、字符串、简单模拟后面才逐渐加大难度。下面这道动态规划经典题当年我记不清是不是网易原题了但同类型的题我在好几家大厂笔试里都遇见过非常值得练手最长上升子序列LIS。暴力DP的做法是O(n²)int lengthOfLIS(vectorint nums) { int n nums.size(), ans 0; vectorint dp(n, 1); for (int i 0; i n; i) { for (int j 0; j i; j) { if (nums[j] nums[i]) dp[i] max(dp[i], dp[j] 1); } ans max(ans, dp[i]); } return ans; }如果数据范围到了10万级别O(n²)必超时这时候要写O(n log n)的贪心加二分版本int lengthOfLIS(vectorint nums) { vectorint tails; for (int x : nums) { auto it lower_bound(tails.begin(), tails.end(), x); if (it tails.end()) tails.push_back(x); else *it x; } return tails.size(); }tails数组的含义是长度为i1的上升子序列的末尾元素的最小可能值。这里有个容易理解错的地方—— tails并不一定是真实存在的上升子序列它只是记录了达到某个长度所需的最小尾部值。因为有了这个信息我们才能用二分快速找到当前元素x能接在哪个长度后面。另一道高频题是合并区间vectorvectorint merge(vectorvectorint intervals) { sort(intervals.begin(), intervals.end()); vectorvectorint res; for (auto inv : intervals) { if (res.empty() || inv[0] res.back()[1]) res.push_back(inv); else res.back()[1] max(res.back()[1], inv[1]); } return res; }这类题考察的其实是“先排序再贪心”的经典思路边界情况就是区间完全包含和相邻区间是否合并。笔试现场一般不会给测试样例你必须自己多考虑边界否则很容易漏掉某些case。第三类常见编程题是图论相关比如Dijkstra求最短路径。这种题代码量较大备考时要保证自己能在20分钟左右无bug地写完。邻接表和优先队列的组合要非常熟练。4.2 工程场景题的答题套路网易CV岗笔试的简答题里工程场景题是一个很有特色的存在。它不考代码考的是你遇到一个真实业务问题时会怎么设计解决方案。比如“给你一个工业质检场景要检测产品表面的划痕和污渍你会怎么做”再比如“如何在低算力设备上部署一个实时目标检测模型”。这类题的答题套路其实是可以总结的。我当时在考场上养成了一个习惯不管场景怎么变先按这个框架组织答案第一先定义问题和评估指标。是检测、分割还是分类准确率优先还是召回率优先误判的代价有多大这些直接决定了后续的模型选型和调优方向。第二梳理数据和标注方案。数据从哪里来数据量有多少正负样本是否均衡标注标准是什么。第三选型。传统图像处理能搞定就不用深度学习深度学习方案里选两阶段还是单阶段考虑运行环境的算力约束。第四模型评估和迭代。在验证集上算指标分析badcase针对性补充数据和调参。第五部署与监控。模型如何转成推理引擎、上线后准确率是否有下滑、怎么建立监控和回滚机制。按照这个框架答哪怕你对特定领域不太熟悉也能给面试官留下“这个人有完整方法论”的印象。笔试阅卷通常不看单个点对不对而是看你能不能把自己知道的东西有逻辑地串起来。4.3 从题目反推岗位需求如果你多刷几份大厂CV岗笔试卷会发现题目设计本身就在暗示这个岗位需要什么人。网易这份卷子给我的感受是它不期待你是个什么都会的天才但要求你的基础底盘足够稳。编程题考排序和DP说明日常工作里写代码、跑实验、处理数据是常态代码能力不行的人没法用图像处理考Sobel和拉普拉斯说明岗位要接触真实的图像数据预处理和特征提取不是纯调包侠机器学习考粒子群和SVM说明面试官希望你能理解不同算法体系的差异而不是只会梯度下降。所以反过来想简历上那些“精通深度学习”的表述在笔试面前都是虚的。能写出来、能推导出来、能实现出来才是真的。这条认知比任何具体题目的答案都值钱。5. 校招CV岗的备考路线与避坑手册5.1 三个月备考时间线我一直觉得笔试备考不能靠考前一周突击那是拿不到大厂offer的。比较靠谱的是给自己留出三个月左右的时间分三个阶段推进。第一个月主攻基础。数据结构与算法先把《算法导论》前几章和LeetCode算法题过一遍机器学习把《统计学习方法》里的经典模型挨个推一遍公式深度学习和CV方向可以看CS231n课程。这个阶段的目标不是做题多而是把原理搞懂。第二个月转入专项训练。算法题按照“数组/链表、栈/队列、树/图、字符串、DP、贪心”分专题刷每天两三道高频题刷完把思路记录到笔记里。CV方向把常见网络结构的参数量和输出尺寸手算一遍把卷积、BN、Dropout的公式亲手推导一遍再把自己做过的项目整理成“项目背景-方法-结果-难点”的结构化描述。第三个月是冲刺模拟。找牛客网或者公司历年笔试真题做模拟严格限时模拟真实笔试环境。同时开始背“八股文”也就是高频简答题的规范答案。这里的八股包括SVM的原理、CNN感受野计算、BatchNorm的公式、NMS的流程等等必须熟练到能快速写出来。5.2 避坑清单备考路上坑很多我挑几个最痛的和大家说。第一数学推导只看视频不动手。很多人喜欢刷各种“30天学会机器学习”的视频看到公式就划过去觉得听懂了就会了。实际上笔试里的公式推导题你不会亲自推一遍就绝对写不出来。逻辑回归的损失函数求导、SVM的对偶问题、K-Means的目标函数这些必须自己拿笔在纸上过一遍。第二刷题只刷会做的。LeetCode刷了200题但60%都是简单题这种训练量对笔试远远不够。笔试编程题一般是中等到困难平时强制自己挑战一些不会的题型尤其是动态规划和图论别总是跳过。第三简历上的项目经不起追问。有些人项目写得特别高大上但面试官一问数据量多少、准确率怎么算的、遇到过哪些问题就开始支支吾吾。笔试可以通过简历初筛但面试一定露馅。所以简历上的项目一定要是你真正做过、能复盘到细节的。第四忽略C基础。网易的笔试卷子很多代码题默认C如果你只会Python虽然也能答但有些关于内存、指针、引用的问题就会很吃亏。建议备考期间把C的STL常用容器、智能指针、虚函数这些基础内容过一遍。CV算法工程师的日常工作大量依赖C和Cuda语言基础扎实是加分项甚至可以算半个必需项。5.3 刷题平台和资料推荐工具方面算法题首选LeetCode按标签刷题效率最高。国内公司真题的首选平台是牛客网大厂笔试真题的还原度很高而且支持在线模拟。面经方面可以多看CSDN和知乎上当年的笔经面经不过要注意时效性和信息筛选。纸质资料的话《剑指Offer》适合快速建立面试题的题感《算法导论》就不用全读了挑排序、堆、图的章节看就行。《统计学习方法》是机器学习的必读书但可以优先看逻辑回归、SVM、决策树这几个重点章节。《深度学习花书》更适合打基础直接啃完后看CS231n的笔记。如果时间紧先把“训练、验证、过拟合、正则化”这四件事吃透。6. 常见问题与考场技巧实录6.1 考场上最容易踩的坑先说时间分配。网易这种大厂的在线笔试选择、简答、编程混在一张卷子里总时长一般两小时左右。我见过很多人前面选择题做太慢到最后编程题只剩15分钟连暴力解都没写完。我的经验是拿到卷子先花两三分钟从头到尾扫一遍估计每部分题量然后把时间块切好。选择题平均一分钟一道不会的先标记跳过别恋战。编程题的原则是“先暴力后优化”。有些同学一上来就想最优解想不出来就干耗着。其实你先把暴力解写好至少能拿到部分分数很多在线笔试系统是按用例分数量给分的。暴力解跑通了再去优化复杂度和边界条件这个思路在时间紧张时特别管用。还有一个小技巧处理边界条件时多想想空数组、只有一个元素、全相等元素、数组长度是奇数还是偶数。笔试编程题经常把某个case藏在边界里你要是没考虑整体正确率就会很难看。具体到CV和机器学习类的简答题最常见的坑是“只写结论不写过程”。比如问你为什么ResNet能解决梯度消失光写“因为加了残差连接”只能拿两分。你要写清楚F(x)x的结构如何保证反向传播时梯度可以无损传播到前层这样才有区分度。简答题的给分逻辑一般是先写核心概念再写公式推导或流程步骤最后给一个直观理解。三层都写到分就拿到手了。6.2 笔试之后怎么衔接面试笔试结束不等于这一轮就结束了。很多人考完就把卷子扔到脑后其实笔试内容正是面试官后续提问的素材库。我建议考完之后尽快复盘把印象中的考点、写错的题、没答出来的知识点全部整理成一张表按“考点-我的掌握程度-需要补的内容”三列来记录。这套复盘材料可以一直用到面试前。网易的面试风格通常是你笔试里暴露了什么问题面试官就追问什么。如果你笔试里KMP的next数组算错了面试官大概率会让你现场再推一遍。所以考完立刻补盲比提前预测面试题更实际。还有一个细节面试时如果你能主动提到“我笔试里有道题没想清楚后来我查了资料我的理解是……”面试官对你的印象分会直线上升。这体现的是学习能力和对待问题的态度比简历上写一百句“认真负责”都有说服力。6.3 整理一份专属的“高频考点速查表”最后分享一个我实践下来非常高效的习惯把各个笔试中反复出现的高频考点整理成一份自己专属的速查表考前只看这一份就够了。我当时是按“算法、机器学习、深度学习、CV常见算子、概率统计”五个部分整理的每个部分只挑最核心的公式和结论不写废话。比如算法部分我只留了KMP的next数组理解、快速排序和堆排序的手写模板、TopK的堆解法、LIS的O(n log n)写法。机器学习部分只留了逻辑回归和SVM的核心推导步骤、粒子群的速度更新公式、K-Means的流程。深度学习部分则包括卷积输出尺寸公式、感受野计算方式、BN公式、ResNet结构图。这份表不用面面俱到它是你知识体系的索引更重要的是在整理过程中你已经把自己的知识漏洞补了一遍。每隔一段时间更新一次考前翻一翻上考场心里就踏实很多。按我这些年带新人的经验笔试这一关筛掉的往往不是基础最差的人而是准备方式最无效的人。基础差反而知道要去补最怕的是盲目刷题、盲目背论文到最后连考什么都搞不清楚。网易这份2018年的卷子虽然过去好几年了但它反映出的考察逻辑到今天依然适用计算机视觉算法工程师先是一个工程师再是一个算法工程师最后才是一个视觉方向的研究者。把顺序搞对你离offer就不远了。
