系统梳理计算机视觉面试高频题,从CNN、迁移学习到YOLO、Faster R-CNN、ViT,帮你学会比较选择与追问应对,点击查看完整攻略。
准备计算机视觉面试的大多数候选人,都会把重点放在广度上,却被深度卡住。你已经把笔记里的计算机视觉面试题都过了一遍,能说出各种架构,也知道 IoU 是什么的缩写——然后面试官问你,在特定的延迟预算下,为什么会选 YOLO 而不是 Faster R-CNN,你给出的回答听起来就像维基百科摘要,而不是一个真正的判断。
这种焦虑并不荒谬。CV 的确非常宽:经典图像处理、深度学习架构、检测与分割、评估指标、部署约束,以及现在的 Vision Transformers。准备范围巨大。但面试考的不是覆盖面,而是你能不能推理出一个选择、在追问下为它辩护,并知道它会在哪里失效。这是另一种能力,而大多数备考材料都没教这一点。
这份指南就是为了解决这个缺口而组织的。每一部分都覆盖一个主题领域,解释面试官真正想测什么,并展示一个优秀答案听起来会是什么样子,以及一个平淡答案会是什么样子——这样当追问来了,你就能说出真正有内容的话。
计算机视觉面试到底是怎么评分的
面试官听到一个强有力的 CV 回答时,会是什么感觉?
一个强的回答会点出权衡,结合部署或数据集场景,并解释选择背后的原因。对比下面两个回答:问题是“什么是卷积神经网络?”
平淡版:“CNN 使用卷积层从图像中提取特征。它在输入上应用滤波器来检测边缘和形状等模式。”
强版:“CNN 利用了局部空间结构——滤波器会学习在小区域内检测特征,而这些特征会随着网络加深组合成更高层的表示。它之所以比全连接网络更适合图像,不是什么魔法,而是参数共享和位移不变性。放在招聘场景里,更有意思的问题是你什么时候会替换它——这就是 ViT 出场的地方。”
平淡回答只能证明候选人读过一些东西。强回答证明他真的思考过。采用结构化面试的面试官——《Harvard Business Review》已经记录过这种做法对工作表现的预测性显著更强——明确是在看你的推理链,而不是定义本身。
为什么追问比第一句话更重要?
第一问用来筛掉没准备的人。追问则用来筛掉只会背、不理解的人。如果你参加过任何招聘轮次,你一定见过这种模式:有人把 YOLO 的单阶段检测讲得很干净,然后被问到“为什么在低延迟移动应用里你会选 YOLO 而不是 Faster R-CNN?”时,回答瞬间塌缩成“因为 YOLO 更快”。这句话没错,但没用——它没有说明候选人是否理解它为什么更快、牺牲了什么准确率、以及当目标密集排列时会发生什么。
面试官用追问来确认你是在推理,而不是回忆。准备一个清晰的首答只是基本功。准备好对自己回答的追问,才是真正拉开差距的地方。
初级、中级和高级 CV 面试有什么不同?
初级会被问概念识别和定义:什么是卷积、dropout 有什么作用、precision 和 recall 有什么区别。中级候选人会被问如何把这些概念连成一条流水线:怎么为新数据集做迁移学习、在类别不平衡的检测任务里用哪个指标、为什么。高级候选人则需要为权衡辩护、描述失败模式,并做出生产级决策:把模型压缩到边缘设备时会坏在哪里,如果错误分析显示系统性标签噪声,你会如何重构标注流程。
深度提升是真实存在的,而且不只是懂得更多的问题——而是你对同一个问题所使用的推理粒度不同。
只懂一点点某个主题时,怎样避免说得很空泛?
当你不确定时,最自然的反应就是往抽象层面躲。其实这恰恰是最糟糕的做法。抽象回答即使在技术上正确,也会显得闪烁其词。更稳妥的方式是把回答锚定在四个具体要素上:数据、模型、指标和约束。“我不确定具体的架构细节,但在低数据场景下,我会先用预训练 backbone,监控留出集上的验证损失,并且从一开始就把延迟当作硬约束”——这听起来像一个按系统思考的工程师,而不是在掩盖知识缺口的人。
不同级别的计算机视觉面试题会问什么?
初级 CV 面试题通常先考什么?
初级 CV 面试题考的是基础,不是冷知识。面试官想知道你是否理解图像如何用数值表示、卷积到底算了什么、为什么 pooling 能缩小空间维度、训练曲线中的过拟合长什么样,以及哪些数据增强策略能帮助泛化而不扭曲任务。这些都不是陷阱题。他们是在看你是否具备继续构建的概念基础。初级候选人常犯的错,是把这些题当成简单题而讲得过少——然后在追问“为什么用最大池化而不是平均池化?”或“为什么这个数据集适合做水平翻转增强,而另一个不适合?”时失分。
中级计算机视觉面试题有什么变化?
中级 CV 面试题会从“这是什么”转向“你什么时候会用它,为什么”。迁移学习会变成判断题:你的目标域和 ImageNet 有多不同?你有多少标注数据?是只微调分类头,还是整个 backbone 都要微调?标注质量开始进入讨论。指标选择也从定义题变成设计决策题。中级候选人需要描述一个真正能工作的 pipeline,而不只是把组件罗列出来。
什么样的回答会显得像高级候选人?
高级回答会把模型看成更大系统中的一个组件。数据质量、标注一致性、类别平衡、服务延迟、内存占用、部署层面的错误分析——这些都是当下的问题,而不是事后考虑。一个被问到“你会怎么评估这个检测模型?”的高级候选人,不会只说 mAP;他们会问部署场景是什么、是否涉及小目标、类别分布如何,以及评估集是否与线上分布一致。
哪种问题模式最容易让候选人措手不及?
“比较并选择”模式。面试官给出两个选项,并要求你针对特定场景做选择。他们不是要一个中立的概述——他们要的是一个选择、一个基于约束的理由,以及对这个选择失效边界的诚实承认。那些回答“看情况”然后对两种方案对称展开的候选人,在这种题型上是失分的。正确答案应该是明确选择、解释原因,并说出边界条件。
CNN、迁移学习和数据增强是如何协同工作的?
为什么 CNN 仍然是面试官最先问的内容?
CNN 是计算机视觉里的基础概念,因为它能暴露候选人是否理解局部特征提取的重要性。把图像展平后再送入密集层,会把每个像素都当成彼此独立的,它无法利用让图像有意义的空间结构。卷积会在不同位置共享权重,这意味着同一个边缘检测器可以在图像任何地方起作用,而不需要重新学习。网络层数增加后感受野扩大,模型就能从边缘到纹理再到物体部件逐步构建表示。面试官之所以问 CNN,是因为答案能告诉他们你是否理解归纳偏置,而不仅仅是架构名称。
什么时候迁移学习比从头训练更好?
几乎总是如此,除非你有一个规模巨大的标注数据集,而且你的领域真的和任何预训练模型见过的东西都相距甚远。实际答案主要取决于三个因素:数据集大小、领域相似度和训练时间。如果你的数据集只有几千个标注样本以下,那么在 ImageNet 上预训练再微调 head,几乎总比从头训练更好。面试官常用来考判断力的追问是:“如果你的目标图像和 ImageNet 完全不像,会怎么变?”正确答案是,domain shift 会削弱预训练特征,所以你会更深地微调 backbone,或者如果存在的话,使用领域特定的预训练模型。
数据增强如何在不变成伪科学的情况下发挥作用?
数据增强通过让模型接触训练集里不会出现、但在现实中合理存在的变化来帮助泛化。问题在于,“合理”完全依赖领域。水平翻转对大多数自然图像任务是安全的,但对于方向本身携带意义的任务就不对了——比如识别车牌。在医学影像中,过强的颜色抖动或几何扭曲可能会破坏你想保留的诊断信号。数据增强真正的纪律是问:这个变换是否保留标签?如果你在检测肿瘤,而你应用的变换改变了组织的纹理特征,那你添加的是噪声,不是信号。
这里一个好的端到端 pipeline 回答应该是什么样?
答案应该像一个正在运行的系统:原始数据集 → 质量筛选和标注审查 → 预处理(resize、normalize、增强策略)→ 选择预训练 backbone → 微调策略(冻结层 vs. 全量微调)→ 使用与生产分布一致的留出集做验证 → 在合适的指标上评估 → 按失败类型做错误分析 → 在考虑延迟和内存约束的前提下部署。面试官就是在听这个链条。三个彼此无关的流行词——CNN、迁移学习、数据增强——听起来不像工程。一个连贯的 pipeline 才像。
在面试中应该如何选择目标检测模型?
YOLO 和 SSD 最清晰的比较方式是什么?
二者都是单阶段检测器,这意味着它们跳过了区域提议步骤,在一次前向传播中同时预测框和类别。这就是它们速度快的原因。YOLO 把检测当作网格上的回归问题;SSD 使用多尺度特征图和预定义的 anchor box。实际中,如果你需要实时目标检测,而且延迟是硬约束,YOLO 往往是更清晰的选择,因为它的架构更容易优化和部署。SSD 的多尺度 anchor 在某些配置下对小目标更有优势。面试官等待的追问通常是:“如果目标很小呢?”这时单阶段检测器就会开始吃力,而你的回答应该直接承认这一点。
什么时候 Faster R CNN 比更快的方案更合适?
当准确率和候选区域质量比原始吞吐量更重要时。Faster R-CNN 的两阶段设计——先区域提议网络,再逐区域分类——在复杂场景下能获得更好的定位质量。如果你是在做制造零件的离线检测、医学扫描分析,或者任何漏检或糟糕的边框都会带来真实成本的任务,那么延迟上的代价是值得的。问这个问题的面试官是在检查你是否理解,“最佳模型”永远是相对于约束而言的,而不是绝对判断。
Mask R CNN 什么时候不再是“锦上添花”,而是正确答案?
当任务需要的是像素级的物体边界,而不只是边界框时。实例分割在你需要区分重叠物体、精确测量物体面积,或者根据物体形状而不仅是位置进行操作时尤为重要。医学影像是最清晰的例子——分割病灶边界和给它画一个框是完全不同的任务。制造业里的像素级缺陷检测也是如此。追问通常是“mask head 会增加多少开销?”——答案是,它会在 RoI 特征上增加一条并行分支,从而增加计算量,但 backbone 是共享的。
如何回答那个不可避免的“为什么不直接到处都用 YOLO?”追问?
直接指出会破坏这个假设的任务约束来反驳前提。YOLO 非常适合需要实时目标检测、目标尺寸较合理、且部署端受延迟限制的场景。它在密集小目标场景、需要实例分割的任务,以及候选区域质量会影响下游决策的场景中会吃力。面试官不是想听你为 YOLO 辩护——他们是在测试你能否识别一个工具失效的边界条件。这就是高级信号。
如何在不含糊其辞的情况下解释预处理?
滤波、平滑和边缘检测到底在做什么?
每一种变换在图像预处理中都有明确任务。平滑滤波——比如高斯模糊——通过对像素邻域求平均来降低高频噪声。代价是它也会让边缘变得更柔和,所以当噪声比边界精度更成问题时,你才会用它。Sobel 或 Canny 这类边缘检测算子用于寻找强度快速变化的区域——也就是物体和背景之间的边界。面试中的实用表达方式是:这些操作不是装饰,它们是会改变模型看到内容的预处理决策,而正确选择取决于模型需要区分什么。
形态学操作在 CV pipeline 里什么时候真正重要?
形态学操作——腐蚀、膨胀、开运算、闭运算——在你处理二值掩码且输出存在结构性噪声时最有用。如果你的分割模型生成的 mask 在物体内部有小孔,或者在物体外部有散点噪声,闭运算可以填孔,开运算可以去点。在工业检测流程中,这类操作尤其常见,因为分割 mask 往往要输入下游测量步骤——带孔的 mask 会导致面积计算错误。在医学影像中,如果预测的病灶 mask 被碎成了本应连通的多个区域,这也很重要。
怎么不讲得太学术而解释直方图均衡化?
直方图均衡化会重新分配像素强度值,让整个对比度范围都得到利用。简单说:如果你的图像大多偏暗,且强度范围很窄,模型实际上是在弱对比度下工作,很多本来存在但看不见的细节也被掩盖了。均衡化会把直方图拉开,让细节显现出来。但也要诚实地加一句:它不是坏数据的修复器。如果图像本身信息量就低——曝光不足、运动模糊、被遮挡——均衡化无法恢复原本没有捕捉到的信息。它只在“对比度有问题”时有帮助,而不是在“信息缺失”时。
CV 面试官真正关心哪些指标?
为什么 accuracy 是检测任务里的错误答案?
分类准确率把所有结果压缩成一个数字,完全忽略了空间质量。一个把框画在正确类别上但位置错误的检测器,在 accuracy 上可能得分不错,但在实际任务上却失败了。检测和分割的评估指标需要同时捕捉定位质量、类别正确性,以及“尽量全找出来”和“只找你有把握的结果”之间的权衡——这就是为什么 accuracy 不是合适的起点。
怎样把 precision、recall 和 mAP 讲得像真的懂?
Precision 是你的检测结果中有多少是真的。Recall 是你找到了多少真实目标。二者的权衡由置信度阈值控制——把阈值调低,你会找到更多目标,但会接受更多假阳性。Mean Average Precision(mAP)把不同阈值、不同类别下的 precision-recall 曲线汇总起来,因此对于检测任务来说,比任何单一阈值指标都更诚实。面试官常用的追问是:“如果某个类别非常稀有,你的 mAP 会怎样?”——答案是,稀有类别会把平均值拉低,并可能掩盖常见类别上的强表现。
关于 IoU、Dice 和分割质量,你应该怎么说?
Intersection over Union 衡量预测区域与真实区域的重叠程度,是交集与并集之比。它是判断一次检测是否算正确的标准阈值。Dice coefficient 是 2 × 交集 /(两者面积之和)——它更重视重叠,在医学分割中很常见,因为真实区域通常很小,而过高的 IoU 阈值会太苛刻。追问通常围绕小目标展开:IoU 对小目标检测惩罚很重,因为哪怕一点点位置误差也会让 IoU 大幅下降。知道这一点,并且知道有些 benchmark 会用多个 IoU 阈值来解决这个问题,这类细节会显得很高级。
如何调试一个上线前看起来没问题、上线后却出故障的模型?
怎么解释过拟合,而不是只说“训练太久了”?
过拟合是数据和模型的拟合问题,不是训练时长问题。模型把训练集学得太好了,因为训练集太窄——变化不够、增强不够,或者正则化太弱,没能逼迫模型泛化。典型信号是训练损失和验证损失之间的差距越来越大。当你调试一个出现这种模式的 CV 模型时,第一个问题应该是:训练数据是否真的代表了模型在生产环境中会看到的变化?很多时候并不是,继续训练只会让过拟合更严重。
验证集很差但训练集很好时,你会怎么做?
在怪模型之前,先检查数据流水线。CV 里训练集和验证集出现差距,最常见的原因包括数据泄漏(同一场景的视频帧同时出现在两个划分中)、分布不匹配(训练是棚拍图,验证是实拍图)、验证集标注噪声,或者类别不平衡被训练指标掩盖。一个具体例子:如果你随机切分视频帧,同一秒里的帧可能同时进入训练集和验证集。模型记住的是场景,不是物体。把切分改成 clip 级或场景级,通常能修复一个原本看起来像模型问题的差距。
怎么做错误分析,而不是靠猜?
强候选人会按失败类型分组,而不只是统计数量。按类别划分的假阳性、按物体大小划分的假阴性、特定类别对之间的混淆、低照度或遮挡条件下的性能下降——这些分类会告诉你该修什么。面试官常追问:“你第一眼会看什么?”正确答案取决于失败模式,但一个合理的起点是:错误是否集中在某个特定类别、某种特定图像条件,或者某种特定物体大小上?这样就能把诊断从“模型错了”缩小到“模型在特定原因下、对特定东西判断错了”。
当面试官问你如何提升泛化时,你怎么答?
把它当成一个决策故事来说,并从具体失败模式出发。更好的数据覆盖更多变化。更聪明的数据增强会补充原始数据缺失的合理变化。类别平衡或加权损失可以解决抑制少数类表现的不平衡问题。正则化——dropout、weight decay、early stopping——会限制模型记忆的能力。当模型相对数据集来说太大时,更简单的架构有时反而是正确答案。面试官真正想看到的信号是:你先诊断失败模式,再选择修复方式,而不是反过来。
当剪枝、量化和边缘部署进入讨论时,答案会怎么变?
一旦延迟变成现实,压缩为什么更重要?
一个在 benchmark 上准确率很高、但每帧要跑 500ms 的模型,不能算实时系统。一旦你从研究转向生产——尤其是移动端、嵌入式或边缘硬件——模型计算成本就变成一级约束。剪枝、量化和蒸馏是缩小“模型能做什么”和“部署端能支持什么”之间差距的工具。
如何在一个回答里比较剪枝、量化和蒸馏?
剪枝会移除对输出贡献不大的权重或整个神经元,从而减少参数量。量化会降低数值精度——通常从 32 位浮点降到 8 位整数——从而缩小模型体积,并在支持整数运算的硬件上加速推理。知识蒸馏则训练一个更小的“student”模型去模仿更大的“teacher”模型,把学到的表示能力转移过去,而不是直接压缩原模型。这三者在精度损失上的追问是可预期的:三者都会用一些准确率换效率,而真正的选择取决于你能接受损失多少准确率,以及目标硬件是什么。
面试官问边缘端权衡时,具体是在问什么?
他们是在问你是否把内存、功耗、散热约束和硬件特定优化,与模型准确率放在同一个层面上考虑。一个在云端 GPU 上运行良好的模型,可能对嵌入式设备的 RAM 来说太大、对可用推理引擎来说太慢,或者对电池供电平台来说功耗太高。一个具体场景:在制造产线上进行本地检测,运行在 NVIDIA Jetson 模块上,意味着有严格的内存上限、固定的推理引擎(TensorRT),以及与产线速度绑定的延迟要求。当这些约束是真实存在的时,你的模型选择、输入分辨率和量化策略都会变化。
如何解释实时服务约束,而不显得泛泛而谈?
把数字说清楚。如果要求是端到端推理低于 50ms,这个预算就包括预处理、模型前向传播和后处理。在这个约束下,你的输入分辨率是受限的,模型深度是受限的,batch size 很可能是 1。你大概率会做 INT8 量化,甚至可能对 backbone 做剪枝。说“我们会优化延迟”太空泛了。说“在这块硬件上使用 INT8 量化后,50ms 预算的瓶颈是 backbone 深度”才像工程。
Vision Transformers 在面试里改变了什么?
为什么现在 CV 面试里会出现 Vision Transformers?
Vision Transformers 之所以进入了严肃的计算机视觉 benchmark,是因为 Google Brain 的 ViT 论文 表明:一种纯 Transformer 架构——没有卷积——在足够规模下可以与 CNN 持平甚至超越它们在图像分类上的表现。这个结果挑战了“视觉任务必须依赖局部卷积结构”的假设。面试官问 ViT,是在测试候选人是否跟上了领域变化,同时因为 ViT 和 CNN 之间的权衡确实值得推理。
什么时候该选 ViT 而不是 CNN?
当你有足够的数据、足够的算力,以及一个能从全局上下文中获益的任务时。ViT 会同时建模图像中所有 patch 之间的关系——这种全局 attention 在相关信息分散在整张图像而不是局部集中时特别有用。代价是:ViT 没有 CNN 那些归纳偏置(局部性、平移等变性),这意味着它们需要更多数据才能从零学会这些性质。在小数据集上,预训练的 CNN backbone 通常会胜过从头训练的 ViT。
哪个追问最能暴露你对 ViT 的浅层理解?
“如果数据不够会怎样?”浅层回答是“ViT 需要更多数据”。更深入的回答是:在大规模数据集(ImageNet-21k、JFT)上预训练后再微调的 ViT,即使在较小的目标数据集上也能表现很好——预训练范式和架构本身一样重要。面试官是在确认你是否明白,数据需求说的是预训练规模,而不是一种无法被弥补的架构固有限制。
候选人实际会遇到哪些真实面试题?
你能从原始图像到部署,带我走一遍 CV pipeline 吗?
这是综合题,设计目的就是看你能不能把各部分连成一个可运行的系统。答案应该按照这个顺序推进:数据收集与质量筛选 → 标注策略与标签复核 → 预处理(归一化、resize、增强策略)→ 根据任务类型和约束选择模型 → 训练设置(损失函数、优化器、学习率策略)→ 在与生产分布一致的留出集上验证 → 用适合任务的指标评估 → 按失败类型做错误分析 → 在考虑延迟和内存约束的前提下部署。面试官在听的是:每一步是否与下一步自然衔接,还是只是一串你孤立背下来的术语。
为什么这个产品你会选 YOLO,而不是 Faster R CNN?
答案永远取决于约束。如果产品需要对摄像头流做实时推理——比如一个以 30fps 统计顾客数量的零售分析系统——YOLO 的单阶段架构就是更合适的起点,因为它就是为吞吐量设计的。Faster R-CNN 的两阶段设计会引入直播流无法承受的延迟。面试官不是在看你是否偏爱 YOLO,而是在看你能否识别任务匹配:延迟预算、物体密度、可接受的最低准确率,以及部署目标。如果追问是“如果准确率比速度更重要呢?”——答案就是约束变了,模型选择也会变。
如果一个模型总是漏掉小目标,你会怎么改进?
这个问题测试的是你的调试过程,而不是你对小目标检测技巧的记忆。正确答案应该从诊断开始:小目标在训练集中的占比是否太低?输入分辨率是否太低,导致关键信息丢失?检测器里的 anchor 配置是否对这种物体尺度太粗?评估指标设置的 IoU 阈值是否对小目标过于严格?这些都是不同的修复方式:增加小目标样本、提高输入分辨率、使用更小的 anchor 或 feature pyramid network,或者调整评估阈值。强回答会先说出失败模式,再说修复方法,并承认具体采取哪种干预,要看错误分析揭示了哪种失败模式。
Verve AI 如何帮助你准备计算机视觉面试
这份指南一直在引向一个结构性问题:知道答案,并不等于能在真实对话中、面对追问压力时把答案讲出来。你可以读完上面的每一节,但当面试官从“解释 mAP”突然转到“为什么你把模型部署到新环境后 mAP 下降了?”时,依然会大脑空白。那个差距——知识与现场表现之间的差距——只能通过会对你实际说的话做出反应的练习来弥补,而不是靠一套固定提示。
Verve AI Interview Copilot 正是为这个差距而设计的。它会实时倾听你的回答,并根据你真正说了什么作出反应——包括你一带而过的部分、你没预料到的追问,以及你提到了却没解释清楚的权衡。它在做这些时保持隐形,因此练习环境会尽可能接近真实面试,而不用真的坐进一场面试里。针对计算机视觉准备来说,Verve AI Interview Copilot 可以对你的模型选择理由提出反驳,追问你的指标选择,并直接抛出招聘经理用来区分中级和高级候选人的那些追问。对 CV 候选人来说最改变局势的能力是:当你回答到一半才意识到自己走进了没准备好的追问时,Verve AI Interview Copilot 会实时给出建议答案——而这恰恰是大多数候选人失分的时刻。
结论
把这些部分都走一遍,并不是为了背下 25 个答案。真正的目标是让你的思路形成足够的结构,这样追问就不会把你打乱。面试官问你为什么选两阶段检测器而不是单阶段检测器时,不是在考你会不会背答案,而是在考你能不能推理出一个你从没见过的约束。
真正能建立这种能力的练习,是把答案大声说出来,听自己哪里开始变得空泛,并在面试官之前先自己追问自己。每个部分挑一个问题,大声说出答案。然后问自己:“如果他们反驳我的选择,我会怎么做?”如果你能清晰回答这个追问,你就准备好了。如果不能,那就是你需要补上的缺口——而且这个缺口,比看上去要小。
Verve AI
内容
