基本情况
收割情况:一共投递8家,收获微软、阿里、网易游戏、地平线4家special offer,今日头条转岗offer,腾讯没给面试机会,摩根士丹利面试冲突放弃,谷歌等待offer中。
个人情况:某985硕士,常用语言C/C++、Python,研究方向为深度学习、计算机视觉,有论文,ACM等算法竞赛和数据挖掘类竞赛获奖经历,项目众多。有算法岗的都是投了算法岗,有深度学习的就投深度学习算法岗,有图像的就投图像深度学习算法岗。
阿里巴巴
实习面试过了,校招直通终面,8月16日通知我面试安排在8月17日,且面试日期不可修改,没能去参加摩根士丹利的直通车,不知道有没有上黑名单。
终面技术面
8月17日,45min
- 聊实习,聊项目。
- 算法题:2乘n的格子用1乘1和2乘1的砖块盖有多少种方法?典型DP,写了转移方程,面试官就说不用写代码了。
- 现在的搜索技术很少上深度学习或者说很深的网络,你觉得是为什么?如果要用深度学习,你觉得应该往哪些方向思考?deep learning比较吃资源,不太适合业务规模比较大的系统,比如:双十一的压力,如果一定要用,可以考虑深度模型压缩,量化,矮胖网络的并行计算等方向。
- 聊聊人生理想。
HR面
8月17日,45min
- HR先介绍了淘宝搜索这边的基本情况。
- 问了ACM和论文经历,平时都怎么训练,怎么做科研。
- 为什么拒了阿里的实习offer?
- 校招拿了几个offer?选择offer的时候你更关注什么? 成长性,相关性,还有…当然是薪水啦!
- 阿里比微软更能让人快速成长,安利一波。
结果
8月30日,拿到offer意向书。
10月17日,拿到special offer,薪资很高,但考虑其他家给出的工资,加班情况,放弃了。在得知我的动摇之后,阿里派了一位很有资历的前辈和我聊了很久个人的发展,他并没有一味的站在公司的立场上劝我加入,只是和我分享了一些自己的个人经历,并客观对比了我所纠结几家的优劣,我觉得分析的还是很有道理的,没有一味吹嘘阿里,也说了一些缺点,让人感觉很真诚。
今日头条
头条的面试时间安排灵活且集中!!!
笔试
8月12日,5道简单、中等难度的算法题,做了4.5题。
一面
8月18日,45min
- 聊实习,聊项目。
- 算法题:上n个台阶,每次一步或两步,求走法数量,简单DP。
- 算法题:上一题变形,最多只能连续走m次两步。依然DP,dp[i][j]表示到第i级台阶,前面连续走了j次两步的走法数量。写出转移方程,面试官没有让写代码。
- 写一个快速排序。一紧张,左侧大元素和右侧小元素交换没写,可能面试官也看出来我没有背过,告诉我不要紧张…
- sigmoid和softmax的区别和联系。sigmoid二分类,softmax多分类,softmax在二分类下退化成sigmoid。
- 分类一般用什么损失函数?写交叉熵的公式。
二面
8月18日,45min
- 聊实习,聊项目。推导了我在项目里用的做过改进的LSTM的公式。
- 针对实习提问题:为什么要加入reading-gate?为什么不直接把控制向量加在输入中?和具体实习做的东西有关,在面经里就不多说了。
- 深度学习里的正则方法有哪些?数据加噪,增强、范数正则、dropout、集成学习、提前终止训练、多任务联合。
- weight decay和范数正则有什么关系?这个当时我没想到,后来下来一查恍然大悟,weight decay的系数其实就是L2正则前面的lambda系数,求个导,梯度下降的时候和w合并一下就看出来了。
- Mask RCNN做了哪些改进?分割和检测任务联合;多个二分类mask,避免类间竞争;ROI对齐,但是我记得不是太清楚了,说了用求周围均值的方法填充边界,后来面试官提示了才想起来是插值。
- 算法题:最大子串和问题。DP,写完代码,面试官说,用的c++11写法太多了,他不太熟悉c++11,正好时间又不够了,是O(n)就行吧。
三面
8月18日,45min
- 聊实习,聊项目。问了和二面第二个一样的问题。这个问题确实是精髓所在。
- Mask RCNN和二面第5个问题一样。
- NLP和CV结合在头条的产品里可能有哪些应用?已经实现和未实现的都可以。必须image caption啊,虽然很难,但是在头条的新闻和抖音都有很大的用途的。然后聊了一些前沿的方向。
- 更喜欢做CV还是NLP?更喜欢做产品还是研究。
面试官说后面有可能会让CV背景的同事再面一轮。HR打电话,反馈结果不错,等通知就行了。
结果
9月3日,问我是否考虑转安卓,IOS开发?如果同意的话,不用其它面试直接发offer了。我???不转…
9月7日,又问我是否想转,承诺薪资不会比算法低。可是我实在不懂安卓和IOS开发啊,怎么转?没有下文…
网易游戏
猪场食堂还不错。
笔试
8月12日,线下笔试,综合性较高,考察了传统机器学习,深度学习,强化学习,分布式计算,编程基础,数学基础。做完一脸懵逼,听说均分只有30多分?
一面
8月22日,45min
- 聊实习,聊项目。
- 讲讲LSTM和实习项目中做的改进?
- 有一个多行的超大文件,内存装不下,如何中找出相同的行?我想了一会儿,用哈希,面试官点头,应该是对的吧。
- python中,线程,进程,协程区别。线程,进程好说,协程我没怎么用过啊,python写写实验代码差不多了,老实回答:不太清楚协程。
- 我看你本科是学的信息安全,你能跟我讲讲SSL吗?差不多都忘了,讲了一些基本原理和中间人攻击的东西。
- 计算机网络怎么样?学过,忘了很多。然后就没有问了。
这充分说明不会就是不会,不要硬扯。
二面
8月22日,45min,面试官是个研究员
- 聊实习,聊项目。
- 推一遍LSTM,用公式写出实习项目中做的改进并说说怎么用tensorflow实现的。推了一遍公式,实现是继承了RNNCell魔改,大致写了一下类的设计。
- 聊我的论文。
- 说说DC-GAN。
- 说说Faster-RCNN。
- 说说BN和LN。我把LN听成LRN了,后来想再说的时候,面试官说不用了。
- skip connection作用。防止梯度消失。
- 说说决策树。信息增益那几个公式我混淆了,就说了一个决策树的大致思想。
- tensorflow有哪些缺点?速度慢,频繁更新,修改API,结构混乱,同样的功能可以在多个地方找到不同的实现。
三面
8月22日,20min
- 聊我的论文。
- 说说Faster-RCNN,YOLO,SSD,FPN。
- 算法题,简单DP,最长上升子序列,对话很有趣:
Q:“写个堆排序。”
A:“我忘记堆怎么维护的了”
Q:“那如果告诉你怎么维护的你可以写么?”
A:“可以。”
Q:“那我们来写个最长上升子串吧!”
A:“是子串,不是子序列,是吧?”
Q:“你就写子串吧,子序列更难一些”
A:“子串太简单了,我还是写子序列吧!”
2分钟后,写好了
Q:“lower_bound(), 我还以为你这么快写完了呢?”
A:“那我再手写一个二分?”
Q:“不用了,可以了,可以了。”
开始安利网易游戏。
HR面
8月22日,30min
- 这些项目是自己接的私活儿还是老板给的?老板。
- 你最有成就感的项目是哪个,你担任什么样的角色?XXX项目,核心开发者。
- 这个项目遇到的最大问题是什么?你是怎么解决的,用了多久?原来的算法效果完全不能用啊,我干了XXX,马上提升了XX指标XX点。
- 近期比较大的挫折是什么?很久以前,本科ACM打过铁。
- 如何看待微软的工作氛围?没有网易这么充实(轻松惬意)。
- 有哪些offer,如果我们开出相同的价格,你会怎么选择?有balabala。优先考虑,a.成长性,我是希望加班的(别不给钱就行) b.薪水。在工作比较对口,能让人快速成长,不是天天写业务的情况下,优先考虑巨硬啊,毕竟生活成本比较低,而且第一年惯例有package,薪水不会差太多。当然,如果有公司的base能多10w,可以考虑。
- 家在哪里,家人反对来杭州吗?如果过来会干几年,会不会跳槽?
- 你问了之前面试官哪些问题。
- 玩过哪些游戏?可多了,一一列举。
- 研发比较辛苦,安利网易游戏算法岗还是挺轻松的。
结果
9月7日收到offer意向书。
10月18日收到special offer,薪资比其他几家差一点,考虑到加班和游戏行业的局限性,放弃了。
地平线机器人
没有内推,但是简历被捞起来参加提前批了。
一面
9月3日,45min,全程聊论文和项目。
- 重点探讨了小目标检测的trick和类别不均衡问题。应该是把自己踩过的坑都问了我一遍,好在我踩得坑也不少!
- 讲讲RCNN系列的演变过程。
- 讲讲YOLO,SSD。
- 讲讲RFCN,重点阐述position sensitive score map。
- 讲讲FPN。
二面
9月5日,45min
- 聊实习,聊项目
- 有一条历史时间线,上面有很多人,每个人有出生和死亡日期,设计一个结构,能快速查询和某一个人同时出现的所有人,比如:查询曹操,那么结果应该是夏侯惇,曹仁等…。先说了线段树,分析了时间和空间复杂度,空间复杂度让我推了一个级数和。
- 看起来空间复杂度是可以接受的,那么如果共同出现不是精确到天要精确到秒呢?可以在叶子节点上排序。
- 有没有更优的策略?我没想出来,面试官提示了哈希,我就顺着他的想法说了,以日期为key,value是这天活着的人的有序集合。ok,面试官很满意,然而我觉得这样的做法并没有比我的线段树更优,因为对于查询的人,他活着的每一天我都要查hash表,这样复杂度其实是O(n),n是这个人活着的天数,大约是1e5这个数量级的,而线段树支持区间查询,只需要O(logm),m是有文字可考的历史线上天数,按中华上下五千年算,m大约是5000*356的级别,加上log,远远小于1e5。嗯嗯,所以我的答案应该是比他的标准答案还要好。
- 打开百度图片搜索,可以看到虽然同一行所有图片的高度是一样的,但他们的原始高度肯定是不一样的,这个后面可能是怎么实现的?以每一行的第一张图片高度为基准,random一个偏差,以基准加偏差作为这一行的高度,所有图片resize到这个高度,然后往固定的行宽里填充,如果变形太多,就取一个放到下一行。
- 手撕代码,自定义结构,实现这个自动调整图片排列的功能。时间不多,撸了个大概。
三面
9月19日,60min
- 聊项目,聊实习,推公式。
- 有一个图像分类的问题,类别有2000万类,不考虑计算资源和网络结构合理性的问题,暴力地在最后做2000万的全连接。只看对前900万类的分类,效果很好,如果加上后面的1100万类,网络无法收敛,可能是什么原因?既然不考虑网络结构和计算资源,那么只可能是数据的问题,有可能是类别不均衡导致的,可以用重采样或者部分类别做数据增广的方式解决。
- 如果数据确保没有问题,依然出现这样的情况呢?没想出来,好在他提示了。
- 面试官提示,我做了一个实验如果把后面1100万的类标从0开始标记,问题就消失了,即label = 11000000的变成0,11000001的变成1,以此类推。这个问题确实不好想,但是我踩过坑啊,类标是转成浮点数计算的,所以位数上去以后会损失精度。
- 说一下浮点数在计算机里的表示,为什么会损失精度?具体表示是本科学的记不清了,大概是由符号位,有效数字位和幂次位组成,所以超过有效数字位的精度会被忽略掉。
- 怎么解决这个精度问题?
手写高精度的loss;级联分类器,前几个分抽象类,最后一个分到具体类。 - Re-id的东西问了一点。
结果
9月19日收到offer意向书,当天发,真赞!
10月22日收到special offer,在南京的企业里真的算非常高了。
微软
实习生转正面
印度大佬英文面。
- 聊了实习做的东西和team里其它人做的一些东西。
- 算法题:丑陋数变体。手撕代码,推出了int型的丑陋数上限并分析复杂度。
- 愉快地聊人生理想。
结果
10月9日收到offer意向书。
10月23日收到special offer。
谷歌
基本情况
七月底和八月底有两场,校招必须通过至少一场。
面试总共五轮,一轮视频面,四轮onsite面试,其中包括两轮中文技术面,一轮英文技术面,一轮英文非技术面。
因为邮件里特意强调了不要泄露面试题,所以尊重一下,还是不说具体题目了。就说说面试感受吧。
面试安排真的是所有公司里最奢华的了,陆家嘴五星级酒店江景房,报销路费伙食费。定时有邮件通知面试进度,不会像有的公司十天半个月没有消息,所以虽然时间拖得很长,但并没有很焦虑的感觉。
结果
战线拖得很长,还在焦急地等待结果中。
摩根士丹利
大摩直通车
就等参加呢,和阿里面试冲突,两边时间都不可调整,遂放弃。
腾讯
简历未被捞起来。
感受
- 实习和项目,对于找工作太重要了,如果实习单位足够好,几乎所有面试官都会问,基本上一聊实习和项目20-30min就过去了。
- 算法题不用刷太难的吧,面下来感觉大部分都是easy级别的,重点在于bug free和手撕代码的能力。
- 以我面的情况看,算法岗基本是一轮工程面,考察coding和思维,一轮算法面,考察对领域的认知情况,一轮boss面,把把关。
- 会就是会,不会就是不会,千万别说会一点。
- 面试的过程不仅是公司考察面试者的过程,也是面试者考察公司的过程,千万不要妄自菲薄。
- 七八月份还雄心壮志想要收割十几二十个offer,后来觉得还是太累了,能把自己真正想去的公司offer拿到手就可以了。