AI-job-interview

AI算法岗面试经验汇总

校招概述 校招复习攻略

极市开发者社区 用户Amusi 分享的 如何准备 2020 届 AI 算法岗秋招?

1 校招时间

2019年3月 ~ 6月: 暑期实习
2019年6月 ~ 8月: 秋招内推(神仙打架)
2019年9月 ~ 11月:秋招正式(神仙继续打架+菜鸡互啄)

1.1 暑期实习

2019年3月~6月:暑期实习。其实实习是任何时候都可以找的,但那不是公司规模化招聘,而是部分部门直聘,较为零散。针对实习生,很多公司,特别是大公司(如BAT等大厂),都会组织专项的暑期实习生招聘活动。暑期实习具有很大的意义,最直接的就是转正。从6月底左右实习入职,一般8月底会有实习答辩,转正后就可以结束秋招战斗了。但秋招一般会投递很多公司,所以即使在实习,也要多投。暑期实习另一个好处是增加可贵的实习经验,简历会好看很多。

1.2 秋招内推

2019年6月~8月:秋招内推(神仙打架)。去年据我了解,打响秋招第一枪的是大疆(DJI)科技。6月底就已经结束简历投递了,然后BAT等大厂都是7月份开始。这时候呢,大部分都是内推/提前批,而不是正式批。大家一定要珍惜这个时间点,虽然我调侃着说神仙打架,但还是要注意这时候性价比特别高。一方面是Money普遍高,最重要的是人还不是那么多,很多人没有这方面意识,想着正式批大干一场。所以秋招内推比较难,但性价比最高了,很多大佬都是这个时间点拿到的。后面我再说说如何内推。

1.3 秋招正式

2019年9月~11月:秋招正式(神仙继续打架+菜鸡互啄)。这个时间会让人很慌,有句话叫做金九银十。也就是9月份的Offer比10月份的Offer更可贵,这话其实很有道理,所以大家可以脑补到7、8月份的Offer是什么level了。这时候也很考验大家的心态,比如9月份或10月份了,还没有Offer,再看看身边人。我这里建议1.2节中秋招内推一定要把握住,如果9月份还没有收到,心态千万别崩,继续投继续干。其实大部分人都是9月、10月才陆续收到Offer的,所以你多投继续努力,收获肯定更多。而且提取批挂了,还有正式批可以再继续。

2 准备攻略

其实准备攻略,我没有具体的方案,因为这就好像是学习计划一样,每个人都要自己的习惯,我的你并不一定适用。所以我就精简一点来介绍。 刷题+背题+项目+实习(可选)+竞赛(可选)+顶会/顶刊(可选)

3 刷题指南

刷题的目的是为了学习数据结构和算法,锻炼编程能力和熟悉刷题技巧

3.1 刷题编程语言

C/C++ Python

3.2 书籍推荐

《剑指Offer》 《图解算法》 《大话数据结构》 注:其实还有很多优质的书籍,但我没有亲自看过,就不推荐了,大家也可以直接查查

3.3 在线刷题网站

LeetCode(英文) LeetCode(中文) 牛客网

3.4 刷题方法

推荐按类别来刷题,如数组类、链表类

3.5 刷题时间

现在起~2019-10-15

3.6 刷题重要性

正常校招流程都要进行在线笔试,面试中也可能会手撕代码,十分影响面试结果。

4 内推

4.1 内推的重要性

内推,真的太重要了。其实现在找实习也一样,内推的重要性就体现出来了,比如我这边的资源就可以内推到BAT、商汤、旷视等公司,一般常规操作是网上投递简历,而快速直接的就是将简历送到leader/主管那里。而且内推是建立在一种互信的基础上(虽然不大),该走的流程还是要走,但无形中增大了面试通过概率。你要知道,很多人的简历在官网或者其他第三方招聘网站上就直接卡死了。

4.2 如何内推?

内推的方式很多,比如:

强关联:直接找已经毕业的师兄师姐或朋友内推(缺点是身边朋友去的企业有限,很多人是第一批从事算法岗的,可能都没有师兄师姐搞这个)

常规操作:上牛客网论坛看企业人员发内推帖子、关注一些招聘公众号(这里我就不推荐,因为很多公众号都很有套路,内推一个企业,还要转发文章到其它群里,然后截图给他们,可是对于大多数人,为了内推,只能这么干)

各大AI公司会在极市放出内推信息,欢迎关注 → 腾讯/百度/华为/商汤等AI公司算法岗内推汇总(含校招、社招、实习生岗)

5 AI类公司名单

2018 爱分析—**人工智能创新企业榜 image

6 2019届AI算法岗薪资情况

你们是2020届的同学,我是18年找的工作,但应该是2019届的,再次强调一下时间不要搞混了,所以我这里说说2019届AI算法岗的薪资情况。
我只以硕士及一线左右城市为例(北上广深、南京、杭州等),因为像武汉、成都,你即使找的AI算法岗,但城市不一样,薪资还是多少有区别,明显不能只看Money,不考虑城市大环境。
白菜价:25w ~ 30w
SP:30w ~ 40w
SSP:40w+
说年薪有点笼统,我再说细一点,大家也可以提取熟悉一下。
一般企业薪资构成是:
年薪=月薪 * 12+年终奖
年终奖一般是2~5个月的薪资,大概是3个月
所以年薪=月薪 * 15
如果你月薪2w,那么年薪就是30w=2 * 15(白菜的Top,SP的Down)
如果你月薪2.7w,那么年薪就是40.5w=2.7 * 15(SP的Top,SSP的Down)
这里po一张很全很全的高薪图,来自OfferShow
注:跟hr谈薪资的时候,如果她/他问你:你的希望薪资是多少?!这时候你一定要往高了要,至少比你想要的高30%。听我的,没有错,不然...
image

极市开发者社区 用户Andrew 分享的 秋招面试经验 | 计算机视觉汇总面经 分享

1.总结

1.1 复习步骤:集中复习

(1)第一次-6月下旬,大概复习了20天左右,主要了解基础知识总结大纲和常见考点,复习之前所做的项目的细节,补充理论知识
(2)第二次-7月下旬,大概复习了7天左右,温习之前没有搞懂和提前批面试过程中涉及的内容,以及查看各种面经和针对自己需求公司的要求进行复习
(3)第三次-8月上旬,大概复习了7天左右,主要是过滤计算机的基础知识,包括计算机网络和数据库什么的,结果找CV的工作很少问到,Linux和操作系统多一点。
(4)第四次-8月下旬,复习深度学习内容,集中时间看了下以前笔试面试中还没有搞懂的东西

1.2 细节复习:零碎复习

(1)每次面试之前都会花0.5~1天时间去看一下总结的考点和网上(牛客网或者其他)提供的面经上的问题
(2)有些问题一开始也不会,面试的公司多了就会了

1.3 注意事项

(1)在校未出去实习

① 没时间出去实习,一定要早点准备,尤其是撸码,大小公司都很看重coding,国企就不说了,基础复习起来很快,撸码这个需要花费时间,有些东西看到了就会,没看到就真不会

② 5月份开始刷题,一直刷到7月份,肯定很屌,无敌

③ 基础知识6月就要开始看了,最晚不超过7月初,7月初提前就开始了,早点的6月份就开始了

④ 提前批一定要多投,不投不被掠不知道努力复习,我自己算起来投了50+,面试了25+(阿里,头条,滴滴,地平线,华为,依图,图森,顺丰,锐明科技,旷视,海康,银行,英特尔等)拿到了10+,其中有三分之一的公司会因为简历不匹配给挂掉,剩下三分之一的公司绝大部分挂在coding,基础和其他面试环境印象只有2家给挂掉了,还是刷题太少了。

⑤ 投递的时候一定要分层次和时间,开始的时候可以考虑投一些中小型不是很想去的公司,积累面经和稳固自己的基础知识;然后7月份下旬和8月份上旬是提前批的黄金时期,可以大力去尝试大厂,更新一波知识然后再说想去的公司;9月份秋招面试一下提前批没有面试好的公司和大厂,捡捡漏。

⑥ 个人觉得一定不要想着秋招去找工作,还是要提前批好好搞,这样子秋招就不会很累,提前批没有offer,秋招很慌很累,更没有底气,跟HR谈offer都感觉是跪舔,有offer了,谈薪水有底气和安排,也知道行情,这样子也更不容易吃亏。

⑦ 特别特别重要一点,如果自己不是大佬,信息真的很重要,不要单操,一定要多交流,打探各种情况,收集信息,不然会很吃亏。

⑧ 简历一定要好好写,也是对自己的一种肯定,要定时更新自己的简历,写好简历找已经找工作的师兄或者博士师兄或者年长有经验的人看一下,修改一下,我自己前后简历大改了3次,很感谢实验室的大师兄和上交的师兄,帮我改得特别仔细,修改简历过程中就会明白什么样的简历公司需要或者愿意看到。

⑨ 找工作还是做个有心人,不能太佛系了,至少我自己不是,我还是觉得越努力的人越幸运。

⑩ 要有针对性找工作,比如滴滴算法业务更多是图相关的,图算法大概率会出现,头条与图像处理居多,滤波传统图像处理比较多,有些落地模型压缩和部署会涉及多一点。不能一口吃,分类整理。

(2)实习

① 去大厂实习,争取留下来,不然还是老老实实在学校复习准备找工作。

② 去公司实习,没时间准备coding和基础,既然考虑出去实习,就是想着过渡一下,平台不好就不用考虑。

2.第一次复习深度学习

(1) CNN的基本原理,公式,代码,其中设计到矩阵的乘法和优化

① 感受野 ,权值共享
② CNN具体计算的细节,Group Conv,可分离卷积之间的原理
③ 矩阵乘法原理及其优化,caffe底层实现的源码
④ 反卷积,simple baseline中提及了
⑤ 上采样方式和下采样

(2)神经网络初期存在的问题,梯度爆炸和梯度消失的原因及其解决方法,以及原理

① 梯度不稳定,梯度消失,梯度保障->resnet->v1,v2
② 参数初始化
③ Normalization操作:BN,IN,GN,LN,SN
④ Dropout
⑤ 常见的激活函数及其原理
⑥ 正则化

(3)参数的量化操作

① 参数的计算和量化
② 常用模型压缩方法
③ 常用轻量型网络及其设计**,以及代码
④ 知识蒸馏的原理及其思路
⑤ 常用的移动框架了解及其对比

(4) 深度学习常用的梯度函数

① 常用的优化函数
② tf和pytorch构建网络的差异
③ 常用的训练策略,warming up,step learing

(5) 常用的loss function及其原理

① 分类的loss function及其原理
② pose的常用loss function及其原理

(6) 常用的网络结构及其源码

hourglass
fpn:
cpn:
fpn:
mobilenet:
inception:
resnet

(7) 常用的数据预处理方式

① opencv的基本操作
② 常用的数据增强方式
③ mix up

(8) 常有数据后处理方法

① 极大值法 ② 翻转测试 ③ 多线程和多尺度测试

(9) python的常见问题

① 线程和进程,GIL ② 内存管理 ③ 元组与list,set的区别 ④ os与sys区别

(10) pytorch

① nn.module和functional的区别 ② pytorch 分布式原理 RingAllReduce原理

分布式使用

③ pytorch如何构建动态图原理 ④ 梯度计算,反传,更新

(11) 常见的优化器

其他整理的链接:包括了机器学习,数学

(1) https://github.com/scutan90/DeepLearning-500-questions (2) http://www.huaxiaozhuan.com/

额外补充的知识:

(1) 概率论 (2) 线性代数,神经网络的推导

3.第二次复习深度学习

1.Caffe源码熟悉程度

(1) 底层设计模型 (2) 数据流怎么流 (3) 添加新层 (4) cuda代码的细节 (5) im2col的具体实现

2.如何训练模型,调优

HRNET跑代码

3.为什么要用深层和浅层feature Map concat和多尺度融合
4.skip connection的好处,反向传播公式,链式法则

5.为什么mobilenet理论上速度很快,工程上并没有特别大的提升

(1) 应该从内存上去考虑,申请空间等 (2) 参数量和计算量

6.凸优化,牛顿法,SGD,最小二乘法,具体的原理和各自的优势

7.工程上对卷积操作如何进行优化的?

(1) 傅里叶模拟卷积 (2) 矩阵优化

8.NCHW如何操作索引实现通道转化,如NCHW->CNHW等操作
9.操作系统的内存管理,Linux的内部原理

4.第三次复习整理高频笔试题(大部分都是手撕到的,括号是次数)

1.链表

(1) 链表反转(3) (2) 有序链表合并(2)

2.a+b+c = 0 (2)

3.lru置换算法(1)

4.排序

(1) 桶排序和计数排序(2):字符串排序,含有大小写字母的,小写在前,大写在后 (2) 快速排序(1) (3) 堆排序(2)

4.矩阵中从左上角到有下角的和的最小(大)值dp (3)

5.二分法(3): 递归和非递归版

6.连通域(2)

7.图算法

(1)最短路径算法(2) (2)判断线段经过了多少个矩阵(滴滴)

8.中值滤波器(1)

9.kmeans算法(1):这个算法真的很重要,头条喜欢考

10.topK问题(很多次>5)

11.2个人轮流拿石子,每个人能拿一到两个石子,然后先拿的人有没有必胜策略(1)

12.求二值矩阵中最大的面积(>2)

13.BFS和DFS(>2)

14.找一个数组中4个和最大的数,但和不大于M(1)

15.树的前中后遍历(>2)

17.一个是判断是否完全二叉树(1)

18.一个是判断是否满二叉树(1)

还有就是leetcode上的题目记不住了

20.字符串处理的常见题目

5.第四次整理深度学习内容

1.机器学习基础

(1) SVM & LR 异同点,原理

(2) kmeans & kmeans++原理,手撸

(3) ROC AUC曲线含义

(4) 最小二乘法的解析解用Gaussian分布以及最大似然估计得到

(5) 最大似然和损失函数

(6) xgboost(必考题)

(7) MAE和MSE对比

2.图像基础

(1) HOG和SIFT特征提取算法,原理

(2) 常用滤波器原理,最好自己会手写一些就简单的

(3) 图像的仿射变换

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) 初始化方式

4.计算机基础

(1) 查找树和红黑树

(2) 基本数据结:堆,栈,队列,链表,树

(3) tcp三次握手

(4) 页面置换算法

(5) 常用的linux命令

(6) 常用的工具, git, github, ssh等

(7) 时间复杂度和空间复杂度分析