ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

迅雷校招计算机视觉笔试B卷考点复盘与备考思路

迅雷校招计算机视觉笔试B卷考点复盘与备考思路 我把这份2018年迅雷校招计算机视觉方向在线笔试B卷的相关内容、考点复盘和备考思路整理出来了。文章里没有照搬原题而是结合笔试题型规律、CV岗位核心知识体系和踩坑经验做了一份可以直接参考的复习攻略。这几年笔试形式变了但考察的知识内核基本没变值得仔细过一遍。1. 迅雷校招CV岗在线笔试到底在考什么先说说为什么专门聊迅雷这套笔试。很多人一看到“迅雷”两个字第一反应是下载工具觉得它跟计算机视觉关系不大。实际上迅雷那边的AI团队一直有做视频内容理解、图像识别、画质增强这类业务所以校招笔试里CV方向的内容并不水覆盖面也比较典型。2018校招的在线笔试B卷整体题目量和难度搭配在当年大厂校招笔试题里算是比较有代表性的基础题占了大部分深度学习、图像处理、机器学习、数学推导都有涉及最后一两道则是综合性的算法设计题。这套题对后来几年准备CV岗位笔试的同学来说参考价值一直很高核心考点到现在还在反复出现。这套笔试主要适合三类人看即将参加校招、正在刷题阶段的计算机视觉方向学生想转行做CV算法工程师、需要系统补基础的同学还有已经工作几年、想跳槽前快速复习一遍基础知识的从业者。我当时的体感是题量不小两个小时要做完选择题、填空题和代码题时间并不宽裕。很多题单独拿出来都不算难但放在一起就考验知识熟练度和做题节奏。那这套B卷的整体结构是什么样的呢我当时做完之后复盘感觉题目基本可以分成四个模块模块主要考察内容大概占比机器学习基础逻辑回归、SVM、损失函数、评估指标约25%深度学习基础CNN结构、卷积计算、激活函数、批归一化约30%图像处理与特征滤波、边缘检测、颜色空间、SIFT/HOG约20%数学基础与编程题矩阵求导、概率论、动态规划/数组操作约25%这个比例其实反映了当年CV岗位笔试的主流出题逻辑机器学习基础是地基深度学习基础是重点图像处理是专业区分度数学和编程则是筛人利器。接下来我按模块拆开讲每个模块都会把考点对应的知识细节、我当时踩过的坑、还有复习建议一起说清楚。2. 深度学习与CNN考点重点到让人意外如果让我说这套B卷里最不能丢分的部分那肯定是深度学习基础尤其是CNN这块。选择题和填空题里出现频率很高的知识点包括卷积输出尺寸计算、感受野计算、池化层作用、激活函数对比、反向传播的梯度流等。这些知识点本身不难但出题形式的灵活度很高会绕弯。2.1 卷积输出尺寸与参数计算别只背公式卷积输出尺寸是必考内容公式本身很简单output_size (input_size - kernel_size 2 * padding) / stride 1但笔试里一般不会直接给你四个数字让你代公式而是喜欢混合考察比如输入是224x224经过一层5x5卷积padding2stride2再经过一层3x3卷积padding1stride1问你中间特征图的尺寸。这种题就是一层一层算第一层算完的结果是下一层的输入容易出错的地方是忘记整除处理。我当时做这类题的一个经验是先把每层的参数列成一个表输入尺寸、kernel、padding、stride写清楚再逐层计算最后再验算一遍。简单公式不背熟、不用熟上了考场会有一种“好像会做但算不对”的挫败感。另外还有一个高频衍生考点就是感受野。计算感受野时不要死记公式理解它是怎么叠出来的更重要。每经过一层感受野的变化由kernel_size和前面的stride共同决定。从后往前推比从前往后推省事。2.2 感受野、所有权共享和参数量计算参数量的计算也是高频题。比如问一个3通道输入、输出64个通道的3x3卷积层有多少参数很多人会漏掉偏置项。正确计算方式是参数总量 输入通道数 × 输出通道数 × kernel_h × kernel_w 输出通道数偏置代入就是3×64×3×3641792。这种题如果漏了偏置项就会算出1728跟正确答案差一截。考场上发现选项里没有自己算出的数字时第一反应应该是检查是不是漏了偏置或者搞错了输入输出通道的顺序。感受野这个知识点笔试里喜欢出选择题给一个多层小卷积堆叠的网络问最后的感受野。这里有个常见套路两层3x3卷积堆叠感受野等价于一层5x5卷积但参数量更少、非线性更强这就是VGG系列的核心思想。我当时复习的时候是把3x3、5x5、7x7之间通过堆叠小卷积核进行等效替换的对应关系都推了一遍考试时遇到这类题基本就是秒答。2.3 激活函数和BatchNorm的对比题激活函数考察集中在ReLU系列和sigmoid/tanh上。常见考法是给一个函数表达式和一个场景问是否适合。核心要记住的几个结论sigmoid存在梯度饱和和输出非零中心的问题ReLU在负数区域完全死掉会产生Dead ReLU问题Leaky ReLU和PReLU就是为了缓解这个问题出现的。有一次题目问的是“当网络层数较深时使用sigmoid作为激活函数容易出现什么问题”答案就是梯度消失因为sigmoid导数最大值只有0.25链式法则连乘之后梯度会指数级衰减。BatchNorm的考察点集中在它的计算流程先对batch内数据求均值和方差做归一化再用可学习参数gamma和beta做缩放和平移。笔试里常给一个具体batch数据让你算归一化后的某一个值。这种题不难但要特别注意方差用的是不是无偏估计训练时用的是batch内的统计量推理时用的是训练过程中累积的全局统计量。3. 目标检测和图像处理区分度最高的部分这部分是整套B卷里最能拉开差距的题目因为它直接考察你对CV领域常见任务的理解。目标检测相关的NMS、候选框生成、经典网络结构对比以及图像处理基础的滤波和特征都是高频内容。3.1 NMS和候选框理解比调包重要NMS非极大值抑制几乎是目标检测方向笔试必考。选择题会给你几个框让你手工推一遍NMS的保留顺序。这里主要考的是流程按置信度排序选最高分框删掉与其IoU超过阈值的框重复操作。要熟练计算两个框之间的IoU尤其是坐标有交集的情况下。当年我做这类题时容易犯的错是IoU的分母理解偏差。分母应该是两个框面积的并集也就是总面积减去交集面积。如果两个框不相交IoU为0。另外还有一个出题角度就是问NMS的阈值设得过大或过小会产生什么影响。阈值过大会导致多个重叠框被同时保留出现重复检测阈值过小则容易把该保留的检测框也删掉导致漏检。候选框生成也是一个重要考点。我复习的时候特意看了Faster R-CNN的RPN区域建议网络和传统Selective Search的区别。RPN是在特征图上用锚点框回归候选区域速度快且能和检测网络联合训练Selective Search靠颜色、纹理、尺寸、形状等特征合并区域速度慢但早期的Faster R-CNN文章里为了做对比实验还有用到。笔试一般不会考太深但选择题里让你判断哪种方法属于基于深度学习的候选框生成方式这种是送分题。3.2 Faster R-CNN、YOLO和SSD的对比目标检测经典网络的结构对比也是常考内容。这里我整理了一个对比表笔试复习足够了网络类型核心思路速度与精度特点Faster R-CNN两阶段RPN生成候选框 分类回归精度高、速度慢YOLO单阶段将检测视为回归问题直接预测边界框和类别速度快、小目标精度相对低SSD单阶段多尺度特征图上预测速度与精度平衡较好这类题考察的通常不只是“哪个快哪个慢”而是会问某个结构细节。比如“YOLO将图像划分成S×S的网格每个网格负责预测几个边界框最终输出张量的维度是多少”这种。我当时复习时是直接把YOLOv1的7×7×30输出结构背下来的因为网格数7×7、每个网格预测2个框、20个类别、每个框5个值x、y、w、h、confidence最后加在一起就是2×52030。遇到这种题有备而来的感觉会非常明显。3.3 边缘检测与特征描述符容易丢分的细节题图像处理基础的考察点相对分散但高频方向集中在滤波、边缘检测、颜色空间和特征描述符上。Sobel算子、Canny边缘检测、高斯滤波这三类题目几乎每年都会出现。Sobel算子的核心是一个3x3的卷积核分别计算x和y方向的梯度近似值。Canny的流程要记清楚高斯滤波降噪、计算梯度幅值和方向、非极大值抑制、双阈值检测和边缘连接。这道题经常以多选题形式出现让你选择Canny包含哪些步骤。我见过有些同学只记得高斯滤波和双阈值把非极大值抑制漏掉了一旦是多选题就会扣分。颜色空间方面RGB跟HSV的转换是高频考点。出题方式通常是给一个RGB值让你大体判断HSV的Hue范围或者问哪个通道对应色相。其实不用精确计算记住HSV中H代表色相、S代表饱和度、V代表明度再看具体数值对应的颜色区间就行。SIFT和HOG这类特征描述符在笔试题里一般不会让手推复杂公式更多是考概念。比如SIFT特征具有尺度不变性和旋转不变性HOG常用于行人检测。这里有一个容易混淆的点SIFT的构建过程包括尺度空间极值检测、关键点定位、方向分配、关键点描述四步HOG则是计算梯度方向直方图。我当时把这两个特征的名称和适应场景分别整理成几组卡片反复记忆考试的时候就能快速选出来。4. 机器学习基础与数学推导不能临时抱佛脚这套B卷里机器学习基础的占比不比深度学习低考察方式更多是一些概念辨析和简单推导但是难度不低。逻辑回归、SVM、损失函数、模型评估、正则化这些高频考点一个都没落下。数学推导题则主要围绕矩阵求导、概率分布和贝叶斯公式展开说实话如果平时没有自己动手推过考场上很容易卡壳。4.1 逻辑回归损失函数与梯度下降推导逻辑回归在笔试题里的出现方式一般是给损失函数让你求梯度更新公式。交叉熵损失函数长这样L -[y * log(p) (1 - y) * log(1 - p)]其中p是sigmoid输出p 1 / (1 exp(-z))z w·x b。对w求梯度的结果非常简洁是x乘以预测误差(p - y)。我在复习时把这个推导完整走了一遍发现关键点在于sigmoid函数求导的性质σ(z) σ(z)(1 - σ(z))正是这个性质让梯度表达式变得那么干净。笔试题如果让写梯度更新公式你直接写w w - learning_rate * (p - y) * x就行。有一个容易踩坑的点是逻辑回归损失函数里是否包含正则项。有些题目会把L1或L2正则直接加到公式里一起求导。L2正则加进去之后梯度项要多加一个λwL1正则则是加λsign(w)。做题的时候一定要先看清楚题目给的是哪个损失形式。4.2 SVM的基本思想与核函数选择SVM的出现频率也高但考察深度通常浅一些集中在线性可分支持向量机的最大间隔思想、支持向量的定义、核函数的作用。选择题喜欢问“以下哪个核函数可以将线性不可分的数据映射到高维空间实现分类”这就是在考核技巧的基本概念。这里要注意SVM只关注支持向量也就是距离决策边界最近的那几个样本点。损失函数用的是合页损失跟逻辑回归的交叉熵不同。另一个常考概念是软间隔当数据不是完全线性可分时允许一部分样本违反间隔约束通过惩罚系数C来控制容错程度。C越大对误分类的惩罚越大模型越趋向于过拟合C越小模型越平滑。这个规律要记清楚选择题考过很多次。4.3 评估指标里的陷阱题精确率、召回率、F1、ROC和AUC是每次笔试必考的。最容易出错的是当类别不平衡时如何选择评估指标。比如“100个样本里只有5个正样本模型把所有样本都预测为负样本准确率是多少”答案是95%看起来挺高但实际上这个模型一点用都没有这时候应该看召回率0%或者AUC。这类题就是考察对指标适用场景的理解单纯背公式不够要理解指标背后的含义。还有一个小考点是PR曲线和ROC曲线的区别。当正负样本比例变化很大时ROC曲线基本保持不变而PR曲线会变化明显。所以在类别不平衡问题中PR曲线比ROC曲线更能反映模型性能。这个细节在选择题里出现过我之前复习时把这个对比单独记过一遍考试时碰到就没犹豫。4.4 矩阵求导与概率题平时多动手推数学基础题往往出现在填空题和简答题里。矩阵求导的常见考法是让对二次型x^T·A·x求梯度如果A是对称矩阵梯度为2Ax。如果不确定我建议复习时把矩阵求导的几个基本公式抄下来包括线性函数、二次型、Frobenius范数的梯度配合链式法则套用笔试题基本都能处理。概率论部分常考贝叶斯公式出题方式通常是一个具体的场景应用题。比如某类疾病在人群中的发病率为1%检测准确率为99%如果一个人检测结果为阳性他真正患病的概率是多少。这就是标准的贝叶斯公式计算答案是50%左右不是99%。很多同学第一次做都容易掉坑。复习时把贝叶斯公式的条件概率推导练熟就能应付。5. 编程题目与考试策略直接决定你能不能过编程题在这套B卷里占比不小考的内容以数组操作、字符串处理和简单的算法设计为主不会太偏太怪但要求代码清晰、边界条件处理完整。再一个在线笔试的作答策略也非常重要时间分配、答题顺序、代码规范性都会直接影响最终结果。5.1 高频编程题类型与解题思路从当年B卷反馈来看编程题主要出现在这几个方向数组去重和排序要求手写实现而不是调用现成库函数链表相关的操作比如反转链表、判断是否有环动态规划入门题比如斐波那契数列的优化写法、爬楼梯问题图像相关的简化模拟题比如二值图像连通域标记这些题目单独看难度都不算大但有一个共同特点极其注重边界条件。比如二值图像连通域标记输入可能是0和1组成的二维数组要求统计1的连通分量个数。这道题本质上就是深度优先搜索或广度优先搜索但很多人写的时候没有考虑边界访问越界的问题或者没有标记已访问节点导致死循环或者计数错误。我当时写的连通域解法大概是这样def count_connected(grid): if not grid or not grid[0]: return 0 rows, cols len(grid), len(grid[0]) visited [[False] * cols for _ in range(rows)] count 0 def dfs(r, c): if r 0 or r rows or c 0 or c cols: return if visited[r][c] or grid[r][c] 0: return visited[r][c] True dfs(r 1, c) dfs(r - 1, c) dfs(r, c 1) dfs(r, c - 1) for i in range(rows): for j in range(cols): if grid[i][j] 1 and not visited[i][j]: count 1 dfs(i, j) return count代码本身不算长但递归深度很大时要注意栈溢出问题所以用显式栈的迭代写法更稳。如果担心Python递归深度可以直接用collections.deque做BFS。写题的时候养成“先判断输入是否为空、再处理逻辑”的习惯能避免很多无谓扣分。5.2 在线笔试的时间分配策略两个小时的笔试时间看起来很长但实际做题时你会发现根本不够。我的建议是拿到卷子先花一两分钟浏览全部题目心里有个优先级。具体时间分配可以参考这个模块建议时间策略选择题/填空题50-60分钟先做会的标记不确定的最后再回来纠结简答/推导题25-30分钟能写多少写多少过程分也很重要编程题30-40分钟先审题、想边界条件再动手写代码尤其注意编程题不要一上来就写代码先想清楚算法思路和边界条件再动手。我看到太多人拿到题目就开始敲中途发现思路不对全部推翻反而浪费时间。如果题目要求输出代码建议写成完整可运行的函数不要只写核心片段在线评测系统对代码完整性要求一般比较高。5.3 考试中的常见失误与应对方法这里分享几个我在做笔试题时踩过的坑希望对你有帮助第一个是无视填空题的格式要求。有些填空题要求“保留两位小数”或者“答案填整数”你算了小数上去直接算错。考试时一定要仔细读题尤其是填空题和简答题格式要求比结果本身更关键。第二个是选择题不定项当成单选题做。CV笔试里有多选题而且评分规则可能是“多选、少选、错选都不得分”。如果你不确定某个选项是否该选宁可少选一个也别冒险选错。但前提是要看清题目明确写了“不定项选择”不是所有选择题都是单选。第三个是遇到不会的题死磕。在线的笔试系统一般允许跳题而且跳过去还能回来改答案不用按顺序做。我的习惯是先做有把握的题把基础分先拿到手再回头处理不确定的题目。这样即使最后时间不够也不至于大面积空题。第四个是编程题不写注释和结构清晰的函数名。在线笔试的编程题尽管是机器判题但如果有面试官人工查看代码清晰的注释和命名会留下好印象。笔试只是第一关后面通常还有面试环节代码质量不高的印象一旦形成想扳回来很难。6. 备考这套题如何高效刷重点前面把考点和题目类型拆完了最后集中聊一下备考阶段怎么安排复习重点这可能是这套题拿高分最关键的环节。首先基础一定要系统过一遍不能指望靠运气。我建议花两周左右时间把机器学习、深度学习、图像处理、数学四个方向的核心笔记各整理一份尤其是公式推导部分不要只看结论要动手推一遍。逻辑回归的梯度推导、反向传播的链式法则、卷积输出尺寸计算、SVM的合页损失这些都是高频公式不推一遍考场上手生。其次编程题每天保持2到3题的训练量。不需要刷太难的LeetCode简单到中等难度即可但要注意题目覆盖面要广。数组、字符串、链表、树、动态规划、DFS/BFS都要练到因为笔试题型会变但编程题考察的核心能力就是这些。做题时养成先写思路、再写代码的习惯每道题写完检查一遍边界条件数组为空、只有一个元素、全部相同、全部不同这些情况都要过一遍。再一次多刷几套真题保持手感。如果能在网上找到其他公司或者年份的CV笔试题目都可以拿来做限时模拟。模拟时不要只做自己会做的要一整套完整做完顺便训练时间分配。我当年复习时把几套知名互联网公司的CV方向笔试题都限时做了一遍发现时间紧的情况下平时掌握得再好的知识点也可能因为紧张而出错。提前模拟几次能有效缓解考场上的焦虑感。最后说一个很多攻略里不会提到的点笔试考完之后建议立刻把不会的题记下来回头查资料弄明白。因为笔试考察的方向往往跟公司实际业务和技术栈有关系不会的题基本是下一步面试会被追问的地方。我当年就对一道图像特征匹配的选择题印象特别深笔试后专门去查了特征匹配的流程和RANSAC的原理结果面试时真的被问到了。所以笔试不只是笔试它其实是面试官给你划的复习重点。
返回列表