面经总目录——持续更新中
说明
-
本面经总结了校招时我面试各个公司的面试题目,每场面试后我都及时进行了总结,同时后期补充扩展了同类型的相近面试题,校招时从两个方向进行投递,视觉算法工程师和软件开发工程师(C++方向),所以我都整理了两个岗位的相关面试题,大家可以根据需要所取。
-
面经目前包含:C++语言面试题、Python语言面试题、Qt、YOLO算法、OpenCV、K-means、Dropout、BN、NMS、IOU、数据增强、模型优化、计算机网络和通讯协议相关面试题、CV基础等等技术面试题,同时还包含非技术面中一些常见的面试题。
-
因为大部分面经都是校招时候记录的,工作以后也陆陆续续增加了一些,后续我将增加社招方面的面经,同时持续更新并维护。
-
由于本人技术有限,面经中如有错误,欢迎指正!
专栏地址
视觉算法开发 | 软件开发—面经
面经总目录
小节 | 目录 |
---|---|
面试问题总结——关于YOLO系列(一) | YOLOv1 1.背景介绍 2.YOLOv1的算法思想 3.关于NMS 4.YOLOv1的网络结构图 5.YOLOv1的激活函数 6.YOLOv1的损失函数 7.YOLOv1总结 |
面试问题总结——关于YOLO系列(二) | YOLOv2 1.关于anchor box和bounding box的区别 2.关于anchor box和bounding box的区别 Batch Normalization(批规范化BN层应用) High Resolution Classifier(高分辨率) Convolutional With Anchor Boxes Dimension Clusters(维度聚类) Direct location prediction(直接位置预测) Fine-Grained Features(细粒度特征) Multi-Scale Training(多尺度训练) 3. YOLOv2损失函数 4.YOLOv2中BackBone:Darknet-19 5. YOLOv2模型框架 6.关于Darknet的分类模型和检测模型 |
面试问题总结——关于YOLO系列(三) | YOLOv3 1.YOLOv3主干网络BackBone——Darknet-53网络结构 Top-1 Accuracy和Top-5 Accuracy是指什么呢?区别在哪呢? 为什么Darknet-53相比于同时期更深层的网络ResNet-101、ResNet-152效果更好些呢? 为什么Darknet-53运行速度快呢? 关于残差网络 2.YOLOv3网络模型 3.关于YOLOv3网络的训练细节:正负样本的匹配 4.YOLOv3损失函数 5.YOLOv3网络图 为什么YOLOv3对小目标的检测会比YOLOv1好很多? YOLOv1/v2中使用IoU作为置信度标签有何不好? YOLOv3对于小目标/密集目标的改进 YOLOv4 1.Bag of freebies(BOF) 2.Bag of specials(BOS) 3.YOLOv4采用的模型结构 4. YOLOv4相比于YOLOv3作了哪些改进 YOLOv5 1.Focus结构 2.自适应锚框计算 3.YOLOv5网络模型 |
面试问题总结——关于OpenCV | 1.OpenCV中cv::Mat的深拷贝和浅拷贝问题 2.OpenCV中RGB2GRAY是怎么实现的 3.连续图像转化为数字图像需要进行哪些操作? 4.数字图像中有哪些基本特征? 5.图像边缘检测中常用的边缘检测算子有哪些? 6.对霍夫变换的理解 7.对HOG特征的理解 8.图像的插值方法有哪些? 9.Grabcut的基本原理和应用 10.SIFT/SURF的特征提取方法,是如何保持尺度不变性的? 11.关于FLANN算法 12.Canny边缘检测的流程 13.图像锐化 14.图像对比度 15.图像滤波 16.OpenCV中图像加法(cv2.add())与图像融合(cv2.addWeighted())有何区别? 17.如何检测图片中的汽车,并识别车型,如果有遮挡怎么办? 18.常用图像增强算法 19.数字图像处理中常用图像分割算法有哪些? |
面试问题总结——编程题关于IOU、NMS | 1.关于IOU 1.1 IOU定义 1.2 IOU的优缺点 1.3 IOU的实现代码 2.关于NMS 2.1 NMS的原理 2.2 NMS的实现代码 |
面试问题总结——关于C++(一) | 1.面向对象的三大特性:继承、封装、多态 2.野指针、内存泄漏、指针悬挂、内存溢出如何理解? 3.如何避免内存泄漏? 4.C++中关于智能指针 什么是智能指针? C++11 中的智能指针及其用法 使用智能指针会出现什么问题?怎么解决? 5.关于引用和指针 引用的定义 引用的语法规则 指针的定义 引用与指针有什么区别? 6.C++程序编译过程(C++源文件从文本到可执行文件经历的过程) 关于链接阶段的知识(动态封装、静态封装) 7.include头文件的顺序以及双引号”“和尖括号<>的区别? Include头文件的顺序 双引号和尖括号的区别 8.不同类型的变量与“零“作比较 9.C和C++的区别 10.深与浅拷贝 11.C++11的特性用过哪些? 12.C++中关于Lambda表达式(匿名函数) 13.C、C++如何交错使用? 14.一些常用的STL头文件 15.C++中四种cast转换 16.C++中static的作用 17.C++中const的作用 18.C++中extern的作用 19.C++中private protect public 20.C++中struct和class的区别 |
面试问题总结——关于C++(二) | 21.内联函数类 inline 函数有两种方法 22.函数重载为什么函数名字可以一样,函数入口地址是按照函数名给的,那这样岂不是地址完全一样,如何实现重载的呢? 23.Qt信号槽实现原理 24.void* 转换 25.为什么要用基类指针(引用)指向子类对象 26.C++ 中的内存管理、内存分配 27.栈和堆的区别 28.malloc/free 和new/delete 区别 29.全局变量定义在头文件中有什么问题? 30.函数重载(overload)和函数重写(override) 31.关于虚函数和纯虚函数 32.关于多态 33.什么是函数模板?函数模板算多态吗?函数模板底层如何实现?模板实例化在程序的哪个时期? 34.为什么析构函数必须是虚函数?为什么C++默认的析构函数不是虚函数? 35.构造函数为什么不是虚函数? 36.构造函数和析构函数的作用与特性 37.进程、线程、协程 38.并发和并行 39.vector set map list内部实现,复杂度 40.关于红黑树 41.map与unordered_map区别及使用 42.对象创建限制在堆或栈:如何限制类的对象只能在堆上创建?如何限制对象只能在栈上创建? 43.关于内存对齐:什么是内存对齐?内存对齐的原则?为什么要进行内存对齐,有什么优点? |
面试问题总结——关于C/C++(三) | 44.变量的声明和定义有什么区别 45.sizeof 和 strlen 的区别 46.简述 strcpy、sprintf 与 memcpy 的区别 47.链表和数组有什么区别 48.typedef 和 define 有什么区别 49.局部变量能否和全局变量重名 50.如何引用一个已经定义过的全局变量 51.全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么 52.const与#define相比有何优点 53.几种内存分配方式以及它们的区别 54.有哪几种情况只能用初始化列表而不能使用赋值 55.堆栈溢出一般是由什么原因导致的 56.C++中的空类,默认产生的类成员函数 57.进程间 58.数组和链表的区别? 59.关于windows程序 |
面试问题总结——关于面试中可能提问的问题及解答(一) | 1.YOLOv4相比于YOLOv3,做了哪些改进,能讲讲吗? 2.你在模型训练的过程中,对于loss值若没有收敛,该有哪些操作呢?该使用什么办法? 3.在数字图像处理中,腐蚀和膨胀的原理是什么? 4.关于NMS,简单讲讲? 5.关于K-means算法的相关知识 K-means算法思想: K-means算法的处理流程: 在yolo中anchor的选取—K-means算法 K-means算法的优缺点 K值怎么确定,有什么方法吗? 6.你项目中用的拍照相机分辨率是3072×2048的,而YOLOv4网络的输入尺寸是608×608×3,这么做的话,图像的尺寸会被压缩,小的目标可能会被忽略,那如果要识别小的目标你怎么办?既要保证识别的速度,如何做? 7.SPP,YOLO了解吗? 8.目标检测正负样本不均衡怎么解决? 9.one-stage与two-stage都有哪些?具体各自优势在哪里?one-stage和two-stage两者有什么特点? 10.简单介绍下残差层 残差块的结构(Residual block) 残差结构有效的原理 解决问题的数学原理 ResNet解决网络退化的机理 11.YOLOv1的网格为什么是7×7? 12.YOLOv3优点/缺点 13.张量、向量和矩阵 14.准确率和召回率 |
面试问题总结——关于面试中可能提问的问题及解答(二) | 14.关于Dropout的内容 1.什么是dropout及其具体工作流程? 2.数学原理 3.dropout的训练与预测 4.为什么dropout可以解决过拟合问题? 5.dropout的缺点? 6.CNN中能否用dropout,为什么? 15.anchor聚类的具体实现与原理 16.正则化,L1正则与L2正则,L1、L2正则化的作用和区别是什么?分别服从什么分布? 17.感受野 18.YOLOv3和v2、v1的改进 smoothL1 loss的好处 YOLO里面是向上取整还是向下取整 19.关于Batch Normalization(批归一化,BN) 1.BN层的主要思想 2.BN层的作用 3.结合YOLO问了BN 4.BN的公式,BN是怎么更新的 5.为什么加了BN之后,就不用再使用dropout? 6.Pytorch中BN层在训练和测试中有什么不同,怎么实现的? 7.用代码实现BN层 20.对比SSD,为何YOLOv3小物体的检测效果这么好? YOLO是怎么克服小目标检测缺陷的?(YOLO做小目标检测的思考) 深度学习中检测小目标常用的方法? 21.如何解决目标检测两个物体重叠问题 22.YOLOv3中416x416的输入有多少个anchor,为什么要sigmoid? 23.1×1卷积的作用 |
面试问题总结——关于面试中可能提问的问题及解答(三) | 24.关于softmax函数的公式、作用、注意点即改进实现代码 实现softmax函数时的注意事项 softmax的作用? 25.YOLO SSD Faster-RCNN对比 YOLOv3为什么占的内存大,和 SSD差别在哪里? 26.如何解决目标遮挡问题,密集问题 27.NMS及其变种(包括具体的代码实现)/编程题NMS 28.如果需要你压缩这个模型的参数量你会怎么做 29.Pytorch定义一个dataset需要写那几个方法 30.给一个input size、kernel size、stride、padding,算一下output size,没有办法整除怎么办,为什么向下取整而不是向上取整? 31.如果检测对象是细长条你怎么检测?如果对象细且倾斜你怎么办? 32.如果两个数据集 一个80类一个20类,两个数据中都包含另一个数据集的目标,但未进行标注,你怎么训练?例如:A中的车在B中有 但未标注而是作为标签。 33.解决过拟合的办法? 34.深度学习中的数据增强方法都有哪些? 35.卷积计算过程中减少计算量的优化方式 36.卷积层和池化层有什么区别? 37.关于Anchor-based与Anchor-free Anchor-based与Anchor-free的相同点和不同点: Anchor-based与Anchor-free的优劣: 38.关于roi pooling层 39.mean pooling和max pooling的前向和反向传播 40.方差和协方差的理解 41.Python的数据类型有哪些? 42.Python中is和==有什么区别? 43.Python中可变对象和不可变对象有哪些? 44.Python中删除的三种方法有什么区别?remove()、pop()、del |
面试问题总结——计算机网络和通讯协议 | 1.TCP和UDP有什么区别 2.TCP和UDP的应用场景 3.UDP可不可以实现安全传输 4.关于TCP的三次握手与四次挥手 三次握手理解 四次挥手理解 5.为什么连接的时候是三次握手,关闭的时候却是四次握手 6.为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态 7.为什么不能用两次握手进行连接 8.如果已经建立了连接,但是客户端突然出现故障了怎么办 9.解释一下为什么TCP可靠一些 10.请简单解释一下,arp协议和arp攻击 11.什么是icmp协议,它的作用是什么 12.OSI七层和TCP/IP五层以及对应网络设备对比示例图 13.Get与POST的区别 14.DNS的寻址过程 15.从输入网址到获得页面的过程 |
面试问题总结——CV基础 | 1.为什么需要做特征归一化、标准化? 2.常用的归一化和标准化的方法有哪些? 3.介绍一下空洞卷积的原理和作用 4.怎么判断模型是否过拟合,有哪些防止过拟合的策略? 5.除了SGD和 Adam之外,你还知道哪些优化算法? 6.上采样的原理和常用方式 7.下采样的作用是什么?通常有哪些方式? 8.模型的参数量指的是什么?怎么计算? 9.深度可分离卷积的概念和作用 10.神经网络中Addition / Concatenate区别是什么? 11.激活函数是什么?你知道哪些常用的激活函数? 12.随机梯度下降相比全局梯度下降好处是什么? 13.如果在网络初始化时给网络赋予0的权重,这个网络能正常训练吗? 14.为什么要对网络进行初始化,有哪些初始化的方法? 15.梯度消失和梯度爆炸的原因是什么? 16.深度学习中的 batch 的大小对学习效果有何影响? 17.PyTorch 和 TensorFlow 的特点分别是什么? 18.数据不平衡的解决方法 19.为什么 max pooling 要更常用?什么场景下 average 20.为什么在模型训练开始会有 warm up? 21.训练过程中,若一个模型不收敛,那么是否说明这个模型无效?导致模型不收敛的原因有哪些? 22.GAN 网络的思想 23.Attention 机制的作用 24.怎么提升网络的泛化能力 25.mAP值 |
关于面试找工作、工作中注意点的个人总结(一) | 1.面试找工作的总结 1.1 投递岗位的建议 1.2 谈薪资阶段的话术 1.3 找工作时要有自己的规划 1.4 面试阶段中的注意点 示例 1.5 对于offer的抉择 1.6 各类排序算法的时间、空间复杂度 2.职场中打工人的总结 2.1 提升自己的工作能力 2.2 如何鉴定何时跳槽 2.3 职场中的注意点 2.4 入职后担心代码能力跟不上 |
关于面试找工作、工作中注意点的个人总结(二) | 1. 请你自我介绍一下你自己 2. 你最擅长的技术方向是什么 3. 你怎么理解你应聘的职位 4. 对工作的期望与目标何在 5. 就你申请的这个职位,你认为你还欠缺什么 6. 你做过的哪件事最令自己感到骄傲 7. 如果我录用你,你将怎样开展工作 8. 你工作经验欠缺,如何能胜任这项工作 9. 如果你在这次面试中没有被录用,你怎么打算 10. 如果通过这次面试我们单位录用了你,但工作一段时间却发现你根本不适合这个职位,你怎么办 11. 谈谈你过去做过的成功案例 12. 谈谈你过去的工作经验中,最令你挫折的事情 13. 如何安排自己的时间?会不会排斥加班 14. 对这个职务的期许 15. 最能概括你自己的三个词是什么 16. 你经历太单纯,而我们需要的是社会经验丰富的人 17. 你性格过于内向,这恐怕与我们的职业不合适? |
关于面试找工作、工作中注意点的个人总结(三) | 1.请你自我介绍一下你自己 2.说说你最大的缺点 3.你对加班的看法 4.在五年的时间内,你的职业规划? 5.你朋友对你的评价 6.你还有什么问题要问吗 7.如果通过这次面试我们单位录用了你,但工作一段时间却发现你根本不适合这个职位 8.在完成某项工作时,你认为领导要求的方式不是最好的,自己还有更好的方法,你应该怎么做 9.如果你的工作出现失误,给本公司造成经济损失,你认为该怎么办 10.如果你做的一项工作受到上级领导的表扬,但你主管领导却说是他做的,你该怎样 11.谈谈你对跳槽的看法 12.工作中你难以和同事、上司相处,你该怎么办 13.假设你在某单位工作,成绩比较突出,得到领导的肯定。但同时你发现同事们越来越孤立你,如何看待 14.请说出你选择这份工作的动机 15.最能概括你自己的三个词是什么 16.你的业余爱好是什么 17.喜欢这份工作的哪一点 18.为什么要离职 19.说说你对行业、技术发展趋势的看法 20.对工作的期望与目标何在 21.就你申请的这个职位,你认为你还欠缺什么 22.你通常如何处理別人的批评? 23.你为什么愿意到我们公司来工作 24.你和别人发生过争执吗?你是怎样解决的 25.如果我录用你,你将怎样开展工作 26.你希望与什么样的上级共事 27.在完成某项工作时,你认为领导要求的方式不是最好的,自己还有更好的方法,你应该怎么做 28.与上级意见不一致怎么办 29.你工作经验欠缺,如何能胜任这项工作 30.为了做好你工作份外之事,你该怎样获得他人的支持和帮助 31.谈谈你过去做过的成功案例 32.谈谈你过去的工作经验中,最令你挫折的事情 33.何时可以到职 |