考过计算机视觉算法岗的都懂,笔试题这关拼的不是谁会得多,而是谁忘得少。金山办公这套2020校招笔试题(一)虽然过去几年了,但里面的考点在当前CV算法岗笔试题里依然反复出现,覆盖了图像处理、机器学习基础、深度学习原理、经典数据结构和算法四个大块。我去年带几个学弟学妹复盘这套题的时候,发现很多人卡住的点其实高度一致:不是题有多难,而是基础概念没吃透、边界情况没注意、时间空间复杂度不敏感。这篇文章我就以这套题为线索,把每类题目的出题意图、解析思路、答题陷阱完整过一遍,顺便把里面涉及的核心知识点往深里挖一挖,希望能给正在准备计算机视觉算法岗笔试的同学一些真正能落地的帮助。
1. 题目总览与考察版图
1.1 整套题的考察范围和难度判断
金山办公的CV算法工程师岗位,从产品逻辑上来看很好理解:WPS全家桶里有大量图像扫描、OCR、文档拍照优化、PDF转Word、图片转文字等场景,这些功能背后都需要计算机视觉算法支撑。所以它的笔试题目不像纯互联网大厂那样一味追求模型结构的新奇,而是更看重候选人对图像处理基本功、经典机器学习算法、深度学习基础原理的掌握程度。
这套题(一)整体来看,题型主要包括:单选题、多选题、简答题和编程题,难度梯度设置得比较合理。前面大多是基础概念题,用来筛掉基础不牢的人;中间是一些需要推导和计算的题目,考察候选人的数学功底;最后则是综合应用和代码实现题,考察解决实际问题的能力。从考点分布来看,可以分成四大类:数字图像处理与计算机视觉基础、机器学习算法、深度学习原理、数据结构和算法基础。
1.2 高频考点和命题规律分析
把热搜词里的关键词和这套题的考点放在一起看,会发现命题规律特别明显:图像处理部分必然有滤波、边缘检测(sobel算法、拉普拉斯算子)、图像锐化;机器学习部分必然有KNN、聚类、贝叶斯、粒子群算法原理这类内容;数据结构部分KMP算法、堆排序、快速幂这种经典题也是校招笔试常客。
为什么这么命题?因为计算机视觉算法工程师的日常工作,绝大多数时间不是在调参就是在前处理后处理,这些工作本质上绕不开图像处理基础。而机器学习算法和数据结构的考察,则是为了确认你有没有扎实的算法功底,能不能写出高效稳定的代码。所以这套题表面上在考知识点,实际上在模拟一个CV算法工程师的真实工作场景。
2. 数字图像处理与计算机视觉基础题深度解析
2.1 图像滤波与卷积核计算题
这套题里有一道很典型的题目:给定一个3x3的灰度图像块,用3x3的高斯滤波核进行卷积,计算中心像素的输出值。这种题每年都有无数考生栽跟头,但其实只要理解了卷积的本质,根本不需要死记硬背。
先看卷积核。常见的高斯滤波3x3核为:
1/16 * [1 2 1; 2 4 2; 1 2 1]这个核怎么来的?它是对二维高斯函数离散化并归一化的结果。二维高斯函数是G(x,y) = (1/(2πσ²))·exp(-(x²+y²)/(2σ²)),取σ=1,在x,y ∈ {-1,0,1}处采样,得到的就是上面这个核的各元素比例关系,最后除以16做归一化,保证所有元素和为1,这样图像的整体亮度不会因为滤波而改变。
计算中心像素时,把核的中心对准图像块的中心像素,然后将核的每个元素与它覆盖的图像像素逐点相乘再求和。这里有个经验之谈:卷积之前一定要确认是否有边界填充(padding)。如果题目没有特别说明,默认使用valid卷积,也就是只计算核能完全覆盖的位置。但如果图像块就是3x3,核也是3x3,valid卷积后中心像素唯一,直接计算即可。
具体计算过程无非是九个乘积相加,这类题拿分的关键是细心,尤其是核元素和像素位置的对应关系千万别搞反。
2.2 边缘检测Sobel算子与梯度计算
边缘检测的题目在视觉岗笔试里几乎必考。Sobel算子是离散微分算子,用来计算图像灰度函数的近似梯度。题目通常会给你一个3x3的图像块,让你用Sobel算子计算中心像素的梯度幅值和方向。
Sobel算子分为水平方向Gx和垂直方向Gy两组卷积核:
Gx = [-1 0 1; -2 0 2; -1 0 1] Gy = [-1 -2 -1; 0 0 0; 1 2 1]计算时分别用Gx和Gy对图像块做卷积,得到x方向梯度gx和y方向梯度gy,然后梯度幅值G = sqrt(gx² + gy²),梯度方向θ = arctan(gy / gx)。
这道题最容易被忽略的点有两个。第一,Sobel算子前面有个1/4的归一化因子,部分教材会省略,但严格定义里是要除以4的,否则算出来的梯度值偏大,这个影响在后续做阈值分割时尤其明显。第二,梯度方向的计算需要注意象限问题,gx为0时要单独处理,否则会除零或者得到错误的反正切值。如果笔试环境允许带计算器,建议直接用atan2函数,它会自动根据gx和gy的符号判断象限。
2.3 图像锐化的拉普拉斯算子与细节增强
拉普拉斯算子的题在热搜词里出现了,实际笔试题也考到了。拉普拉斯算是二阶微分算子,对噪声比一阶微分更敏感,所以实际应用中通常先做高斯平滑再去提取拉普拉斯响应,这就是高斯拉普拉斯(LoG)的思路。
常见的拉普拉斯卷积核有两种:
[0 1 0; 1 -4 1; 0 1 0] // 四邻域 [1 1 1; 1 -8 1; 1 1 1] // 八邻域锐化的公式是g(x,y) = f(x,y) - ∇²f(x,y),其中f是原始图像,∇²f是拉普拉斯响应。注意这里用的是减号,因为拉普拉斯响应在边缘处是一个过零点,减去它相当于在边缘两侧增强对比。
笔试里如果考到拉普拉斯锐化,通常是给你一个图像块,让你计算锐化后的中心像素值。除了套公式,更重要的是理解为什么拉普拉斯算子能锐化图像:图像边缘处灰度变化剧烈,二阶导数在边缘一侧为正、另一侧为负,将原始图像减去二阶导数,会使得边缘处暗的更暗、亮的更亮,视觉上就是边缘更清晰锐利了。这道理懂了,就算题目换个花样,比如问你“拉普拉斯算子为什么对噪声敏感”,也能顺理成章答出来。
3. 机器学习经典算法题解析
3.1 KNN算法与K值选择的陷阱
KNN(K近邻)在笔试里属于送分题,但送分题也有坑。典型的题目是给你一组二维坐标点和标签,让判断一个新样本的类别,K取3或者5,用欧氏距离计算。
核心步骤就是:计算待分类样本到所有已知样本的距离,按距离排序,取前K个,统计类别,多数投票确定类别。但这里有几个细节必须注意。首先是距离度量方式,题目明确说了欧氏距离就用欧氏距离,没说你就得自己判断。如果特征之间的量纲差异很大,用欧氏距离前必须先做标准化,否则量纲大的特征会完全主导距离计算。其次是K值的选择,K太小模型对噪声敏感,K太大又会让远处样本参与决策,决策边界变得过于平滑。
笔试题常考的KNN延伸考点包括:KNN的优缺点、K值的交叉验证选择方法、维数灾难问题。我建议你把KNN的时间复杂度也记清楚:暴力搜索是O(nd),n是样本数,d是特征维度,这在实际工业场景中很重要,因为WPS的图像数据量动辄百万级,暴力KNN根本跑不动,所以后来才有了KD树和球树这些加速结构。
3.2 聚类算法中K-Means的初始化与收敛判定
聚类题在笔试题里出现频率也很高,K-Means是必须掌握的。考法经常是:给定几个二维点,K取2,初始质心给定了,让你迭代一轮,计算新的质心。
这个流程本身不难:先计算每个点到两个质心的距离,分配到最近的簇;然后重新计算每个簇内点的均值作为新质心。但笔试真正想考察的,是你对K-Means局限性的理解。比如初始质心的选择会影响最终聚类结果,不同的初始点可能收敛到不同的局部最优。常见的改进方法有K-Means++,它通过让初始质心尽可能分散来改善这个问题。
还有一个高频考点是K-Means的收敛判定。常见判据有三个:质心不再变化、簇分配不再变化、目标函数(簇内平方和SSE)变化小于阈值。笔试如果出填空题或者简答题,问你“K-Means的终止条件是什么”,光答一个“质心不变”是不够的,要尽量答全。
3.3 粒子群算法原理与视觉任务中的优化应用
粒子群算法(PSO)能出现在热搜词里,大概率是因为笔试里有一道简答题考到了它。PSO是一种群体智能优化算法,灵感来自于鸟群觅食行为。它的核心公式有两个,一个是速度更新:
v_i(t+1) = w·v_i(t) + c1·r1·(pbest_i - x_i(t)) + c2·r2·(gbest - x_i(t))另一个是位置更新:
x_i(t+1) = x_i(t) + v_i(t+1)其中w是惯性权重,控制粒子保持原有运动趋势的能力;c1和c2是学习因子,分别控制向个体历史最优和全局最优学习的能力;r1和r2是[0,1]之间的随机数。
为什么把PSO放进视觉算法岗的笔试?因为很多视觉算法里的参数优化问题,比如图像分割的阈值选择、特征提取里的参数寻优,本质上都是连续优化问题,而PSO不需要目标函数可导,实现简单,收敛快,非常适合这类场景。笔试中如果让你写PSO的流程,就按这四步写:初始化粒子群、计算适应度、更新个体最优和全局最优、更新速度和位置并重复迭代。
3.4 数据结构排序算法与KMP的Next数组计算
这段话标题里带了一长串热搜词,包括KMP算法的next数组计算,排序算法C++写法,堆排序、贪心算法、Dijkstra算法等。这套脚本大概率在笔试编程题里出现了KMP算法,专门考察字符串匹配,而且要求手算next数组。
KMP算法的核心在于next数组,它记录了模式串每个位置之前的最长相等前后缀长度。题目原文给的模式串是"abacaba",计算next数组容易出错,因为不同教材对next数组的定义有差异,有的从0开始,有的从1开始。正常情况下,公共的next数组(下标从0开始,next[i]表示前i个字符的最长相等前后缀长度)计算如下:
对"abacaba":
- next[0] = -1(有时也定义为0)
- next[1],前缀"a",没有真前后缀,取0
- next[2],前缀"ab",最长相等前后缀为0
- next[3],前缀"aba",最长相等前后缀为"a",长度1
- next[4],前缀"abac",最长相等前后缀为0
- next[5],前缀"abaca",最长相等前后缀为"a",长度1
- next[6],前缀"abacab",最长相等前后缀为"ab",长度2
所以next数组是[-1, 0, 0, 1, 0, 1, 2]。
笔试里考KMP,要么是让你手算next数组,要么是让你在给定文本中完成匹配过程。这类题拿分的关键是搞清楚教材里的定义,因为它直接影响next值。我的建议是做题前先在草稿纸上写明“采用下标从0开始,next[i]表示最长相等前后缀长度”这样的约定,按自己的约定一步步推,不要中途换定义,否则全都乱套。
4. 深度学习与计算机视觉综合应用
4.1 卷积神经网络中感受野与参数量的计算
深度学习的题目在这套笔试题里通常占两三道,最常见的就是给一个卷积网络结构,让你计算某层特征图的尺寸,或者说某层的参数量。别看题目简单,错的人非常多,因为边界条件容易忘。特征图尺寸公式:
output_size = (input_size - kernel_size + 2*padding) / stride + 1如果题目给的输入是32x32,卷积核3x3,padding为1,stride为1,那输出就是(32 - 3 + 2)/1 + 1 = 32,尺寸不变。这类题要特别小心除法是不是整除,如果结果不是整数,说明参数设置不对,要么调整padding,要么考虑是否使用了空洞卷积。
还经常考感受野的计算,感受野公式是层与层递推的:
RF_i = RF_{i-1} + (kernel_size - 1) * stride_accumulated其中stride_accumulated是从当前层到最后一层所有stride的乘积。这个递推公式背后的物理意义是:最后一层每个像素对应到前一层特征图上的区域大小。笔试如果出这个,一定记得从后往前推,别从前往后算。
4.2 图像分类与目标检测中的常见网络对比
金山办公的CV算法岗对图像分类和目标检测都有需求,所以笔试中会出现一些概念对比题,比如“对比Faster R-CNN和YOLO的优缺点”。这种问题没有标准答案,但答题要有框架,最好从精度、速度、适用场景三个维度展开。
Faster R-CNN是两阶段检测器的代表,先由RPN生成候选区域,再对候选区域进行分类和回归,精度高但速度慢,适合对精度要求高的文档检测场景。YOLO是单阶段检测器,直接在特征图上回归目标框和类别,速度快但小目标检测效果弱,适合实时性要求高的场景。
这类题的答题技巧是要结合具体业务场景,比如你说“在PDF文档版面分析中,文字区域通常密集且小目标多,Faster R-CNN的区域建议机制能更好地召回密集文字区域,所以即使速度慢一些也值得”,这种结合业务的分析必然比单纯背网络结构得高分。
4.3 过拟合、正则化与数据增强的工程实践
笔试里的简答题常会出现“什么是过拟合,如何防止过拟合”这类老生常谈的问题。虽然基础,但想拿高分需要答出深度和现实场景的结合。防止过拟合的手段主要包括:增加训练数据、数据增强、正则化(L1/L2)、Dropout、早停法、Batch Normalization、模型简化等。
对于计算机视觉任务,数据增强是重中之重。WPS的文档图像处理场景里,训练数据可能来自不同光照条件、不同拍摄角度、不同分辨率的手机拍照图,如果只用原始数据集训练,泛化能力必然差。所以实际做项目时,常用的增强手段包括随机旋转、随机裁剪、色彩抖动、对比度亮度调整、加噪声等。笔试答题时如果能结合这个真实场景来谈为什么数据增对文档图像任务尤其重要,就能和其他背答案的考生拉开差距。
4.4 目标检测原始损失函数与边界框回归
另一个常见笔试考点是目标检测的损失函数。比如问你YOLO或Faster R-CNN的损失函数由哪几部分组成。这类题考察的是对检测模型每一个输出分支的理解。
以Faster R-CNN为例,损失函数分为两部分:RPN的损失和Fast R-CNN的损失。RPN损失包括二分类的交叉熵损失和边界框回归的Smooth L1损失。Fast R-CNN部分也类似,但分类更多类别的Softmax交叉熵损失加边界框回归Smooth L1损失。边界框回归通常预测的是相对偏移,形式为tx = (x - xa)/wa, ty = (y - ya)/ha, tw = log(w/wa), th = log(h/ha)。
答题时如果能说明白为什么边界框回归用Smooth L1而不是L2,得分会更高。Smooth L1在误差较小时梯度变化平缓,在误差较大时梯度不至于过大,比L2对离群点更鲁棒,训练更稳定。
还有一道题是关于非极大值抑制(NMS)的。NMS的核心思想是:将所有的检测框按置信度排序,选择置信度最高的框,然后删除与它IoU大于阈值的其他框,重复这一过程直到处理完所有框。NMS的缺点也很明显:对密集目标的抑制容易误删,所以后续出现了Soft-NMS、DIoU-NMS等改进,但笔试基础题考的还是原始NMS的流程,必须掌握。
5. 经典算法与代码实现题解析
5.1 堆排序的实现细节与复杂度分析
编程题里堆排序也是常客,这套脚本里出现了“堆排序算法”热搜词。堆排序利用堆这种数据结构进行排序,时间复杂度稳定在O(n log n),空间复杂度O(1),是不稳定的排序算法。
实现上需要注意的细节非常多。建堆有两种方式:从底向上建堆时间复杂度O(n),从顶向下逐个插入的时间复杂度O(n log n)。笔试中写代码时最好用自底向上的建堆方式。另一个坑是堆排序得到升序序列时要用大顶堆,每次把堆顶元素和堆尾交换,堆的大小减1,然后对新的堆顶做下沉调整。
我见过太多人在交换后忘记调整堆,或者写下沉操作时忘了处理左右孩子都存在的情况,导致排序出错。建议面试前把最大堆的siftDown操作写成肌肉记忆,这是代码题拿基础分的关键。
5.2 快速幂算法在图像计算中的应用
快速幂算法出现在热搜词里,是因为笔试题里有一道很经典的快速幂题目:实现pow(x, n),要求时间复杂度O(log n)。原理很简单:把指数n写成二进制形式,然后利用x^(a+b) = x^a * x^b的性质,通过不断平方底数来减少乘法次数。
递归和迭代两种写法都要会。迭代写法关键是维护一个结果res,初始为1,同时维护一个当前基数cur,初始为x,当n大于0时循环:如果n的最低位为1,res乘cur;cur自乘;n右移一位。最后记得处理n为负数的情况,需要先对x取倒数,再对n取绝对值。
那快速幂和计算机视觉有什么关系?很多图像增强算法,比如对比度调整中的gamma变换,本质就是逐像素的幂运算。如果在移动设备上处理大图,用暴力循环做百万像素的pow()调用会非常慢,而快速幂思想可以配合查表法大幅加速这类计算。能把这层应用关系说出来,笔试印象分会好很多。
5.3 贪心算法、Dijkstra和二分图HK算法的场景识别
这套热搜词里还有贪心算法、Dijkstra算法、二分图HK算法。原始笔试题里不一定都考编程,但很可能有一道“根据问题描述选择合适算法”的题目。阅题时要能快速识别题目背后的算法模型。贪心算法适合求解局部最优能推出全局最优的问题,比如区间调度、哈夫曼编码、最小生成树的Prim和Kruskal算法都是贪心思想。
Dijkstra算法是单源最短路径的经典算法,要求图中不能有负权边。它用贪心策略,每次从未访问节点中选择距离源点最近的点,松弛其邻接边。堆优化版本时间复杂度O(E log V)。如果题目给的图里有负权边,就改用Bellman-Ford或SPFA。
二分图HK算法(Hopcroft-Karp)是求二分图最大匹配的优化算法,时间复杂度O(E√V)。和匈牙利算法相比,HK算法每轮会先通过BFS构建多条不相交的最短增广路,再用DFS进行增广,效率高很多。笔试中如果要做这类题,关键是要能识别出“二分图匹配”的模型,比如任务分配问题、资源调度问题都能转化成最大匹配模型。
5.4 C++编程题中的边界条件与鲁棒性
笔者题编程部分经常给一个C++函数框架,让你补全代码。这道题往往不是考察算法本身,而是考察代码鲁棒性。比如实现一个旋转图像的函数,输入是矩阵、输出是矩阵,很多人只写了正常情况,忘了处理空矩阵、单行矩阵、单列矩阵等边界情况。而评分标准里经常明确包含“空输入返回空”这一类用例。
扎实的编程习惯会直接影响笔试成绩。我建议准备笔试前刷几道经典的二维矩阵题、字符串题和链表题,重点练习对空输入、长度极小输入、重复元素输入的处理。另外,无论题目是否要求,尽量写有意义的变量名,加上注释,即使代码有一点小Bug,阅卷人看到清晰的思路也会给部分分。
6. 备考建议与实战复盘
6.1 如何高效梳理计算机视觉核心知识树
整理核心知识树是备考计算机视觉算法岗笔试最有效的方式。建议按“图像处理—机器学习—深度学习—数据结构算法”四个分支分别建立自己的知识体系。图像处理分支至少要覆盖点运算、几何变换、滤波、边缘检测、形态学操作、图像分割经典方法。机器学习分支要掌握线性回归、逻辑回归、KNN、朴素贝叶斯、决策树、随机森林、SVM、聚类、PCA等经典算法的原理、优缺点和应用场景。深度学习分支要掌握CNN的基本组件(卷积层、池化层、全连接层、激活函数、BN层)、经典网络结构(LeNet、AlexNet、VGG、ResNet、DenseNet)、目标检测和图像分割的经典模型。数据结构算法分支要掌握常用排序算法、KMP、BFS/DFS、二分、贪心、动态规划、最短路径算法等。
每一个知识点都从“是什么—为什么这么设计—适用场景—时间空间复杂度”四个维度去理解,笔试里不管怎么出题,都能应对。
6.2 模拟笔试与错题复盘方法
光看书不刷题,笔试照样挂。我建议按真实校招节奏来做模拟:限时90分钟,全程不查资料,用A4草稿纸手写伪代码,选择题标记不确定的题目。做完后再查资料逐题复盘。复盘时不要只看答案对错,更要关注“当时为什么选错”“卡在哪个推导步骤”。把这些原因分类记录,比如“卷积尺寸公式记错”“KMP next数组定义混淆”“贪心算法误用场景”等,考前只需要翻自己的错题本,效率比刷十套新题还高。
6.3 与计算机视觉算法工程师岗位的匹配度分析
备考最终目标不是过笔试,而是通过笔试拿到面试机会。所以答题时要时刻想着岗位需求:金山办公的CV算法工程师,日常工作要和文档图像打交道,这意味着像素级操作能力、图像预处理经验、OCR管线理解都是加分项。笔试中凡是涉及图像处理场景的题,即使题目没直接问,也建议在答案中适当提一句可能的业务应用,这会直接向面试官传递出“这个候选人有真实项目思维”的信号。
7. 常见问题与排查技巧实录
7.1 图像卷积类题目反复算错的排查思路
很多同学做图像卷积计算题时容易反复算错,最常见的原因是像素位置对齐错误。最简单有效的排查方法是在草稿纸上先画一个3x3方格,标好每个位置的坐标,再把卷积核的对应位置写进去,逐项相乘时用铅笔指着,一项一项划掉,这种方法虽然慢,但能极大降低粗心错误率。另外,计算完一定要检查卷积核权重和是否为1,如果归一化权重和不是1,卷积后的像素值会整体偏移,这本身就是一道经典陷阱题。
7.2 算法编程题超时的常见原因
笔试编程题超时是很多人挂掉的主要原因,问题通常出在时间复杂度上。比如KMP题目本意是O(n+m),但你如果写了暴力匹配O(n*m),大数据量下必然超时;排序题你用冒泡O(n²)而没写堆排或快排O(n log n),也大概率超时。另外一个隐蔽问题是I/O效率,用cin/cout时没加sync_with_stdio(false)和cin.tie(nullptr),输入量一大就会拖慢程序。这些小细节在本地测试时看不出来,在线评测环境下却是致命的。
7.3 深度学习计算题求出的数字不合理怎么办
有时候算参数量或者特征图尺寸,算出来几百亿甚至几千亿,明显不合理。这时候别慌,按步骤回查:先检查卷积核计算公式里的padding和stride是否看反了,再检查通道数是否带入了上一层的输出通道数,最后检查括号运算顺序。参数量计算中,全连接层的参数是输入维度乘输出维度再加偏置,这地方经常被漏算或者乘错。有条件的话可以记住几个基准值,比如VGG16的参数量约1.38亿,ResNet50约2550万,算出结果如果比这些数量级差太多,大概率是算错了。
7.4 简答题没话说的急救方法
CV笔试简答题最怕的就是“没话说”或“不知道怎么组织答案”。我自己的方法是先给出定义,再说明原理,然后举一个实际应用例子,最后谈一个注意事项或局限。这样四层结构下来,至少能写出200字。比如考到“什么是数据增强”,先定义:数据增强是在训练时对训练样本进行一系列变换以生成更多样本;再讲原理:这能增加数据多样性,提高模型泛化能力;举例子:在文档图像识别中,对原始扫描图随机旋转、加点噪声,能让模型适应更多手机拍摄场景;最后说局限:增强方式不当可能会引入噪声,导致模型学到错误特征。这样一套组合拳下来,分数不会低。
8. 笔试之外:面试衔接与长线积累
8.1 从笔试题看面试考察方向
笔试的考点体系通常和面试是一脉相承的。通过复盘这套笔试题,你可以提前准备面试中大概率会问的问题:图像滤波那块,面试官可能会追问“高斯滤波和均值滤波的区别”“怎么选择滤波器尺寸”;机器学习那块,可能会问“KNN和K-Means的区别与联系”“K-Means怎么确定K值”;深度学习那块,则可能追问“ResNet为什么能解决梯度消失”“BN层的作用是什么”。笔试时你只写了答案,面试则要能口头讲得清楚明白,建议对每个高频笔试考点都准备一个30秒到1分钟的面试版回答,反复练习。
8.2 实际项目中计算机视觉技术的应用扩展
作为CV算法工程师,笔试题只是起点。真正到了实际项目里,你会发现除了模型训练,还有大量工程问题要处理:图像预处理和增强的pipeline、模型轻量化(剪枝、量化、蒸馏)、推理加速(TensorRT、ONNX Runtime部署)、模型评估与AB测试等。特别是文档图像类场景,摄像头角度矫正、弯曲矫正、光照不均处理这些传统图像处理技术往往比新模型更能解决实际问题,而它们恰恰是笔试前几道基础题考察的内容。所以不要觉得背基础知识没用,它们就是实际工作中每天都在用的东西。
8.3 建立个人算法知识库与刷题模板库
最后想跟大家分享一个我一直在用的备考方法:维护一个自己的算法知识库。用Markdown或者Notion都行,按“图像处理”“机器学习”“深度学习”“数据结构与算法”“编程语言细节”几个分区,记录每个知识点的核心公式、推导过程、易错点、笔试真题和公司名称。同时维护一个模板代码库,把排序、二分、KMP、快排、快速幂、Dijkstra这些经典算法全部写成标准模板,考前只过自己的笔记和模板库,不盲目刷题。
根据我个人经验,笔试短期冲刺靠的是错题复盘和模板熟练度,而长期赢在知识体系的完整性和底层思维的扎实程度。希望这篇文章能帮你少走一些弯路,如果你正在准备笔试或者刚做完某套题,欢迎在评论区聊聊你踩过的坑,一起把这些基础问题彻底捋清楚。