[字节跳动/头条] 算法提前批三轮面经,前来回馈广大牛油们~
楼主是C9末流渣硕一枚,上周五刚刚面完了三面,问HR状态说面试结果正在定档review中,也不知道到底能不能拿到宇宙条offer ToT。跪求offer!跪求offer!跪求offer!
当时为了准备面试几乎把牛客网头条的面经翻了个底朝天,确实很有收获,现在来发个面经攒攒人品,希望对正式批投头条的小伙伴们有帮助~
先说情况:楼主报的应该是算法工程师,好像就是一个大类没有细分。当然楼主想找的方向是现在一抓一大把的地狱难度的CV岗。
[面试通知] -- 7月初
接到面试通知的我完全是懵逼的。虽然我很早就知道头条开始了提前批,不过楼主当时还在忙着实习,压根就没时间准备秋招呀,所以也没投。后来一个上海的电话打过来了,说我被实习投递的人才库(没错,实习面试一轮游就凉了。。。)里捞出来了,想给我来个提前批的面试,时间就定在下周一。
这等邀请怎么能不答应啊!宇宙条诶!但是留给我准备的时间只有一个周末了,楼主也不敢想别的,赶紧趁周末打开我的leetcode把top100过了一遍,各种深度学习、机器学习的基础知识也不在话下。
[一面] -- 7.8,周一下午
按照约定时间,一面准时开始了,面试官是个年轻的帅小伙。问的问题主要都是深度学习、CV方面的基础:
- 没有自我介绍,上来就介绍实习的项目
- 因为我实习中有用过GAN生成人脸,所以问我:GAN的损失函数形式是什么样的?(楼主写出来了,不过忘了写前面的min、max目标,面试官表示没关系,知道我是懂的就行了)
- 介绍一下什么是GAN?
- 有木有试过StarGAN之外的方法?(很尴尬的表示,并没有。。)
- GAN是怎么训练生成器、判决器的?(楼主就说了最原始的GAN的交替训练的方法)
- 输入为L*L,卷积核为k*k,还有步长s和padding p,求输出尺寸?(L1 = (L-k+2*p)/s + 1)
- 接上题,求操作的FLOPs?(FLOPS = k*k*c1*c2*L1*L1)
- 过拟合要怎么解决?(减少模型参数、早停、正则化、数据增强、GAN合成数据、dropout、few shot learning,等等等等)
- 上面自己提到了few shot,解释一下是什么?(不小心给自己挖了个坑,还好楼主大致懂一点。。)
- 几个激活函数都有什么优缺点(sigmoid, tanh, relu, lrelu等)
- 概率题:x, y服从0-1均匀分布,求x+y<1的概率?x, y, z服从0-1均匀分布,求x+y+z<1的概率?
- 编程题,LEETCODE 448,要求时间o(n),空间o(1)。这题还好,顺利做出来了。
- 反问。
总结:一面问的还是比较多且基础的,哪怕问项目也是问你用过的方法比较的基础的问题。所以建议小伙伴们在刷题的同时也不要忘了巩固下基础知识~
过两天就接到了二面的通知,然后就继续准备吧。。。
[二面] -- 7.11,周四下午
二面也是准时开始(楼主运气好好,都没碰过迟到的):
- 自我介绍
- 热身题,买卖股票一次的最大收益,LEETCODE 123,很简单不说了
- 买卖股票两次的最大收益,LEETCODE 123(wc这题太尴尬了,楼主可能是太紧张想了好久都没想出来,最后在面试官的提(明)示下才实现了出来。果然自己还是太菜啊……以后看见hard的题目再也不敢跳过了ToT)
- 经过编程题已经过了40分钟了。。。面试官表示深度学习该问的一面都问过了,就问点c++基础吧:C++的虚函数是什么
- c++的析构函数一定要是虚函数吗
- 最后还是意思性的问了个DL问题:BN的作用。
- 反问。
总结:果然宇宙条还是很看重算法功底的,管你什么岗位先把算法题做出来了再说,经过这场面试楼主也深刻认识到了自己算法基础的不足,后面得疯狂巩固起来了。
面完二面心里很虚,虽然后面和面试官挺聊得来的,不过算法题表现的不很好啊。。。然而第二天还是接到了三面的通知,真是太感动了ToT
[三面] -- 7.19,周五上午
传说中的大佬面lei了,问的主要都是项目+开放题
- 问一些项目细节
- 楼主之前做过超分辨,所以问自己做的超分辨项目有没有什么创新点
- 超分辨近几年有什么改进
- 有没看过今年的超分辨paper
- 2019年做了啥CV的东西(这里要补充说明一下,楼主之前实习网申的时候,还没去实习过,所以当时写的都是研一做的东西,然后顺着这个问题把新作的带实习经历的简历给面试官看了)
- 我在用StarGAN合成人脸表情的时候训练有没有遇到什么困难(额感觉面试官都好喜欢问GAN方向的问题)
- 开放题:有一个1000w的视频库,新来一个视频,我们需要去库里查询是否存在相同视频。存储这么多视频时应该选择什么样的特征,查询要用什么方法。(这个回答的还行,楼主大致说了一下用LSTM提特征再哈希的思路,面试官没说什么就过了)
- 开放题:磁盘上有M个数组(M很大),每个数组长度不确定,数组内数值不会重复。现在要求其中n个数组的交集。设计算法使这个求交集的速度最快,另外有内存限制。(这题真的雪崩!楼主在看题的时候把交集当成了并集来做,所以思路完全跑偏了。。。后面是快结束的时候面试官一提醒才发现的。。。然后赶紧说了一个两个数组求交集的实现就结束了。。。)
- 反问。(经过上面一轮折磨,楼主已经虚得不行。。。问了一下问题就结束了。)
总结:三面比较看重你的broad view和发散性思维了,另外审题要仔细啊!!千万不能像楼主一样智障看错了题。。
总的来说,三轮面试官都是非常nice的,面试时间很准时,处理效率很高,体验很好,自己在面试的时候确实也有一些地方表现得没有自己预期好,不过还是收获了很多,而且通过这三轮面试重新有了找工作的那种状态。希望这个面经能帮助到广大头条的求职者们,一起加油鸭。
跪求offer!跪求offer!跪求offer!