秋招面验 | 计算机视觉汇总面经分享
同时提供每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流。关注 极市平台 公众号 ,回复 加群,立刻申请入群~
本文为极市原创,如需转载,请联系小助手( 微信:cv-mart)
总结
复习步骤:集中复习
(1)第一次-6月下旬,大概复习了20天左右,主要了解基础知识总结大纲和常见考点,复习之前所做的项目的细节,补充理论知识;
(2)第二次-7月下旬,大概复习了7天左右,温习之前没有搞懂和提前批面试过程中涉及的内容,以及查看各种面经和针对自己需求公司的要求进行复习;
(3)第三次-8月上旬,大概复习了7天左右,主要是过滤计算机的基础知识,包括计算机网络和数据库什么的,结果找CV的工作很少问到,Linux和操作系统多一点;
(4)第四次-8月下旬,复习深度学习内容,集中时间看了下以前笔试面试中还没有搞懂的东西。
细节复习:零碎复习
(1)每次面试之前都会花0.5~1天时间去看一下总结的考点和网上(牛客网或者其他)提供的面经上的问题;
(2)有些问题一开始也不会,面试的公司多了就会了。
注意事项
(1)在校未出去实习
① 没时间出去实习,一定要早点准备,尤其是撸码,大小公司都很看重coding,国企就不说了,基础复习起来很快,撸码这个需要花费时间,有些东西看到了就会,没看到就真不会
② 5月份开始刷题,一直刷到7月份,肯定很屌,无敌
③ 基础知识6月就要开始看了,最晚不超过7月初,7月初提前就开始了,早点的6月份就开始了
④ 提前批一定要多投,不投不被掠不知道努力复习,我自己算起来投了50+,面试了25+(阿里,头条,滴滴,地平线,华为,依图,图森,顺丰,锐明科技,旷视,海康,银行,英特尔等)拿到了10+,其中有三分之一的公司会因为简历不匹配给挂掉,剩下三分之一的公司绝大部分挂在coding,基础和其他面试环境印象只有2家给挂掉了,还是刷题太少了。
⑤ 投递的时候一定要分层次和时间,开始的时候可以考虑投一些中小型不是很想去的公司,积累面经和稳固自己的基础知识;然后7月份下旬和8月份上旬是提前批的黄金时期,可以大力去尝试大厂,更新一波知识然后再说想去的公司;9月份秋招面试一下提前批没有面试好的公司和大厂,捡捡漏。
⑥ 个人觉得一定不要想着秋招去找工作,还是要提前批好好搞,这样子秋招就不会很累,提前批没有offer,秋招很慌很累,更没有底气,跟HR谈offer都感觉是跪舔,有offer了,谈薪水有底气和安排,也知道行情,这样子也更不容易吃亏。
⑦ 特别特别重要一点,如果自己不是大佬,信息真的很重要,不要单操,一定要多交流,打探各种情况,收集信息,不然会很吃亏。
⑧ 简历一定要好好写,也是对自己的一种肯定,要定时更新自己的简历,写好简历找已经找工作的师兄或者博士师兄或者年长有经验的人看一下,修改一下,我自己前后简历大改了3次,很感谢实验室的大师兄和上交的师兄,帮我改得特别仔细,修改简历过程中就会明白什么样的简历公司需要或者愿意看到。
⑨ 找工作还是做个有心人,不能太佛系了,至少我自己不是,我还是觉得越努力的人越幸运。
⑩ 要有针对性找工作,比如滴滴算法业务更多是图相关的,图算法大概率会出现,头条与图像处理居多,滤波传统图像处理比较多,有些落地模型压缩和部署会涉及多一点。不能一口吃,分类整理。
(2)实习
① 去大厂实习,争取留下来,不然还是老老实实在学校复习准备找工作。
② 去公司实习,没时间准备coding和基础,既然考虑出去实习,就是想着过渡一下,平台不好就不用考虑。
第一次复习深度学习
CNN的基本原理,公式,代码,其中设计到矩阵的乘法和优化
① 感受野 ,权值共享
② CNN具体计算的细节,Group Conv,可分离卷积之间的原理
③ 矩阵乘法原理及其优化,caffe底层实现的源码
④ 反卷积,simple baseline中提及了
⑤ 上采样方式和下采样
神经网络初期存在的问题,梯度爆炸和梯度消失的原因及其解决方法,以及原理
① 梯度不稳定,梯度消失,梯度保障->resnet->v1,v2
② 参数初始化
③ Normalization操作:BN,IN,GN,LN,SN
④ Dropout
⑤ 常见的激活函数及其原理
⑥ 正则化
参数的量化操作
① 参数的计算和量化
② 常用模型压缩方法
③ 常用轻量型网络及其设计思想,以及代码
④ 知识蒸馏的原理及其思路
⑤ 常用的移动框架了解及其对比
深度学习常用的梯度函数
① 常用的优化函数
② tf和pytorch构建网络的差异
③ 常用的训练策略,warming up,step learing
常用的loss function及其原理
① 分类的loss function及其原理
② pose的常用loss function及其原理
常用的网络结构及其源码
hourglass
fpn:
cpn:
fpn:
mobilenet:
inception:
resnet
常用的数据预处理方式
① opencv的基本操作
② 常用的数据增强方式
③ mix up
常有数据后处理方法
① 极大值法
② 翻转测试
③ 多线程和多尺度测试
python的常见问题
① 线程和进程,GIL
② 内存管理
③ 元组与list,set的区别
④ os与sys区别
pytorch
① nn.module和functional的区别
② pytorch 分布式原理
RingAllReduce原理
分布式使用
③ pytorch如何构建动态图原理
④ 梯度计算,反传,更新
常见的优化器
其他整理的链接:包括了机器学习,数学
(1) https://github.com/scutan90/DeepLearning-500-questions
(2) http://www.huaxiaozhuan.com/
额外补充的知识:
(1) 概率论
(2) 线性代数,神经网络的推导
第二次复习深度学习
Caffe源码熟悉程度
(1) 底层设计模型
(2) 数据流怎么流
(3) 添加新层
(4) cuda代码的细节
(5) im2col的具体实现
如何训练模型,调优
HRNET跑代码
为什么要用深层和浅层feature Map concat和多尺度融合
skip connection的好处,反向传播公式,链式法则
为什么mobilenet理论上速度很快,工程上并没有特别大的提升
(1) 应该从内存上去考虑,申请空间等
(2) 参数量和计算量
凸优化,牛顿法,SGD,最小二乘法,具体的原理和各自的优势
工程上对卷积操作如何进行优化的?
(1) 傅里叶模拟卷积
(2) 矩阵优化
NCHW如何操作索引实现通道转化,如NCHW->CNHW等操作
操作系统的内存管理,Linux的内部原理
第三次复习整理高频笔试题(大部分都是手撕到的,括号是次数)
链表
(1) 链表反转(3)
(2) 有序链表合并(2)
a+b+c = 0 (2)
lru置换算法(1)
排序
(1) 桶排序和计数排序(2):字符串排序,含有大小写字母的,小写在前,大写在后
(2) 快速排序(1)
(3) 堆排序(2)
矩阵中从左上角到有下角的和的最小(大)值dp (3)
二分法(3): 递归和非递归版
连通域(2)
图算法
(1)最短路径算法(2)
(2)判断线段经过了多少个矩阵(滴滴)
中值滤波器(1)
kmeans算法(1):这个算法真的很重要,头条喜欢考
topK问题(很多次>5)
2个人轮流拿石子,每个人能拿一到两个石子,然后先拿的人有没有必胜策略(1)
求二值矩阵中最大的面积(>2)
BFS和DFS(>2)
找一个数组中4个和最大的数,但和不大于M(1)
树的前中后遍历(>2)
一个是判断是否完全二叉树(1)
一个是判断是否满二叉树(1)
还有就是leetcode上的题目记不住了
字符串处理的常见题目
第四次整理深度学习内容
机器学习基础
(1) SVM & LR 异同点,原理
(2) kmeans & kmeans++原理,手撸
(3) ROC AUC曲线含义
(4) 最小二乘法的解析解用Gaussian分布以及最大似然估计得到
(5) 最大似然和损失函数
(6) xgboost(必考题)
(7) MAE和MSE对比
图像基础
(1) HOG和SIFT特征提取算法,原理
(2) 常用滤波器原理,最好自己会手写一些就简单的
(3) 图像的仿射变换
深度学习
(1) 过拟合和欠拟合,解释,方法
(2) batch normailization
原理
参数更新
梯度反传
优缺点
应用
改进
(3) 激活函数的设计
梯度爆炸
梯度消失
常见解决办法
激活函数的设计规则
relu和sigmoid的区别
(4) batch size大小的影响力
大影响
小影响
(5) 如何衡量模型的参数和大小
参数量
模型大小
如何用传统方法评估参数
(6) mobilenet以及shufflenet几个版本的网络结构
(7) 单阶段,双阶段,free-anchor的代表检测器
(8) 池化作用
max min mean pool的区别
如
(9) 不同的优化器以及牛顿法
(10) 正则化
(11) 感受野的计算
(12) dropout
(13) resnet的设计,原因,改进升级
(14) 初始化方式
计算机基础
(1) 查找树和红黑树
(2) 基本数据结:堆,栈,队列,链表,树
(3) tcp三次握手
(4) 页面置换算法
(5) 常用的linux命令
(6) 常用的工具, git, github, ssh等
(7) 时间复杂度和空间复杂度分析
-End-