一名985小硕的CV算法面经总结
科大讯飞
内推电话面
1. 自我介绍
2. 介绍FashionAI项目(做了什么重要工作,有无对模型进行改进)
3. 问更熟悉C++还是Python(答Python)
4. 针对Python问了一系列的知识点:
复制代码1234- Python字典采用的是什么数据结构?(没答对。正解:使用的是key-value匹配的哈希结构)
- Python的列表和元组的区别?(可变 vs 不可变)
- Python的多线程能否用来做并行计算?(不能,它有GIL锁,但可以用多进程实现并行)
- 口答编程题:如何用Python统计大型单词文件的词频并返回最多的前100个单词?(想到用字典统计词频,但后面除了想到用排序没有想到其他的。
散列处理(用Hash散列把大文件拆分成许多小文件使内存可以处理)+词频统计(可以使用字典进行hash-map或使用字典树Trie来统计词频)+频数排序(可用含100个结点的最小堆,每当新读取的元素比堆顶元素大,就替换堆顶元素并调整堆)+合并处理(可使用归并排序))
5. 针对深度学习问了一系列知识点:
复制代码12345- 缓解过拟合的方法?(数据增强、L1/L2正则化、dropout、早期停止)
- dropout的原理?
- Batch Normalization的原理?可学习的参数有哪些?
- 自适应优化算法有哪些?(Adagrad(累积梯度平方)、RMSProp(累积梯度平方的滑动平均)、Adam(带动量的RMSProp,即同时使用梯度的一、二阶矩))
- Batch size对模型训练有什么影响?其大小是怎么选取的?(会影响训练的稳定性,Batch size过小会使Loss曲线振荡的比较大,大小一般按照2的次幂规律选择,至于为什么?没有答出来,面试官后面解释是为了硬件计算效率考虑的,海哥后来也说GPU训练的时候开的线程是2的次幂个)
6. 感想:感觉表现的不是很好,多半没戏了。但通过此次面试被问到的一些问题,尤其是Python相关的知识点,暴露出对Python知识的一些盲点,算法和数据结构也要抓紧复习。把每一次面试都要当成是一次学习和检验的过程,不断总结提升。
7. 后面9月下旬的时候意外接到了科大讯飞的面试通知,二面没有再问什么很难的技术问题,除了自我介绍和项目介绍,剩下就是问了些个人学习、家庭情况,最后也拿到了科大讯飞华南研究院的offer。
CVTE
提前批电话面
1. 自我介绍
2. 介绍目标检测的项目(做了哪些重要的改进工作,取得的效果怎样,工作中面临的挑战或难点有哪些)
复制代码123
- 主要对二阶目标检测器的特征提取网络做了改进
- 在Pascal VOC数据集上的mAP达到了80%,与基于ResNet-FPN的faster R-CNN效果相当,但模型大小减小了三成;在红外图像的电力设备检测中mAP达到了85.4%比改进前提升了5.6个百分点。
- 红外图像视觉质量低、目标尺寸差异大、某些目标类间差异小
3. 是否了解EM算法(只说了下大概的原理,用于含有隐变量的概率模型极大似然估计或最大后验概率估计的迭代算法,其它不是很了解)
4. 传统的图像算法熟悉吗?有哪些常用的特征?SIFT特征是如何保持旋转不变性的?(常用的图像特征HoG、SIFT等;sift特征通过将坐标轴旋转至关键点的主方向来保持旋转不变性,关键点的主方向是通过统计关键点局部邻域内像素梯度的方向分布直方图的最大值得到的)
5. 情景题:如何让计算机通过老师讲课的视频分析他在讲什么课 复制代码123- 答的不好,只是笼统地说先用目标检测和图像识别对一帧图像进行分析,必要的话还需要结合时序对多帧图像进行分析,没有根据不同的情况进行深入地思考。事后和实验室同学交流时,同学分析地更深入一些:首先会判断视频中老师讲课有没有使用黑板,如有会通过识别黑板上不同类型的信息进行初步的分析判断(如比较多的数学公式很可能是在讲数学课、比较多的英文可能是在讲外语课等),如果没有或是需要更精确的判断,会再对老师讲的话等信息进行时序分析,综合判断。
6. 感想:面完立马就在招聘官网的个人中心查到“面试未通过”,有些失落和沮丧,可能主要是在那个情景题上没有答好,还有回答一些问题的时候表述不太清楚,需要花时间去练习一下如何尽可能清晰地把自己的想法表述清楚(感觉主要原因还是没有想清楚或知识掌握不牢)
多益网络一面
1. 自我介绍
2. 最好的项目介绍(讲了基于深度学习的目标检测项目,有问到模型的效果、模型大小、实时性如何以及后续进一步提升模型检测精度的想法)
3. 机器学习相关问题
常用正则化方法有哪些?(参数范数惩罚、Dropout)
梯度消失/爆炸是什么?(反向传播中由于链式求导法则的连乘,如果乘数都比较小趋于0,最终传递到网络输入层的梯度会变得很小(梯度消失),如果乘数都很大,最终的梯度也会变得很大(梯度爆炸),其实二者都是因为网络太深导致权值更新不稳定,本质上是因为梯度反向传播中的连乘效应)
LR与线性回归的区别(LR通常用于二分类,使用的是交叉熵损失函数;线性回归用于回归,使用的是均方误差损失函数)
SVM的原理?如何解决线性不可分问题?(间隔最大化,通过引入软间隔、核函数解决线性不可分问题)
4. 数学概率题:一副扑克牌,随机均分成三份,问大小王被分到同一份的概率是多少?(一时没答上来,后面问了海哥,应该是从52个里面取16个的组合数/从54个里面取18个的组合数,按基本的计算概率的思路去算, 概率统计要加强)
5. 算法题:找出2000万条记录中出现次数最多的前十条记录 (一种思路是通过哈希散列将大文件拆分成小文件,然后对每个小文件的记录进行频数统计,取各文件频数前十的记录进行归并排序,再取最终结果的前十;更简单快捷的方法是在频数统计后依次遍历每个小文件,直接维护一个10个节点的最小堆)
6. 问了一些非技术问题:
对于互联网加班怎么看?
学习成绩怎么样?
期望薪资是多少?
目前有拿到offer吗?
7. 最后是一道编程题:5分钟内写出冒泡排序(因为时间短有些紧张,没完全写对,面试时紧张和焦虑很影响发挥,需要想办法调整)
总结:多益网络的概率题和编程题没答好,多半也没戏了,从中暴露出的概率统计分析能力不足和抗压调节能力较差要重视起来。对概率统计进行专项训练,学习一些克服紧张、缓解焦虑的方法,比如改变认知(降低心理预期,小事多用心、正事用点心、大事放宽心)、注意转移(分心/专注)、合理表情(微笑)、心理暗示(面试前准备幸运物,紧张时摸一摸)、生理放松(深呼吸、平时多运动、面试前休息好)、熟能生巧(多参加面试)等,详见知乎 另外面试前准备的时候,可以多思考一下,准备一些回答问题的要点,尽量不要准备充分的稿子,防止背不过卡壳,才是面试成功的终极方法。