机器学习读论文面试准备

2019秋招CV算法面经

2018-08-25  本文已影响19人  梦里茶

转载请注明作者梦里茶

先背景介绍一下,我是广东某985本硕,本科有鹅厂开发方向的实习经验,读研发了一篇CVPR,然后在腾讯ailab实习,由于腾讯ailab今年是要博士才能转正(毕竟转正就是T3),所以我这个小硕7月开始面试了,先后面了头条(一面),阿里云(图像算法工程师,已HR面),大疆(机器学习算法工程师,已终面),商汤(计算机视觉研究员,刚内推),后面腾讯推了AI平台部(刚一面),先把最近的面试总结一下。

其实我不太确定面试内容算不算公司的机密,毕竟这里边大部分问题都是根据具体面试者(我)的情况提的,如果有相关公司的大佬觉得不妥可以私聊我删掉对应的内容。

头条(提前批,只一面,没下文)

之前貌似班里的同学把我的联系方式给了头条的HR,然后大概七月初头条就约了很多同学去深圳,北京,上海参观,讲真头条饭堂确实好吃,但我手机里一个头条系的APP都木有。。然后就说后面会约面试,约了7月9日视频面,用牛客网的平台,面试官很直接,一上来就做题,总共五道题,感觉像是小型笔试了,其实都还基础,也基本都答出来了。

  1. 编码实现计算图的inference (用Java基本完整写出来了)
  2. 默写交叉熵和softmax,还有它的BP(求导觉得要算很久就没算,其他答出来了)
  3. 卷积输出计算,卷积核参数数量(基本算出来了)
  4. RCNN系列模型的区别(背出来了)
  5. 给两个有序数组,求第3大的数(基本思路写出来了,没调试)

然后就说后面等HR安排,然而HR好像就不理我了,至今没下文,估计是当时太懒没求导的锅,推公式还是挺重要的。

阿里云(已HR面)

七月初看见有同学在朋友圈发了offershow这个公众号的阿里内推推送,就加了它家的群,还是很实在的,没啥套路,直接给内推邮箱,因为暑假实习面阿里云中断了没面完,有点执念,所以就又投了一遍。7月15日发了邮件,7月17日零点收到了内推成功的邮件,完善了资料后,7月17日下午就收到了一面电话。

阿里云一面//7.17 35min

一面大概是这边的骨干员工,是杭州的电话,貌似面试官拿到我的简历也很高兴,没等我自我介绍就开始跟我聊GitHub上的2400多个star的几个项目都是干啥的,然后简单介绍了一下他们部门,问了一下有没有兴趣,确定有意向之后才开始自我介绍,我的自我介绍一般很短,大致上会讲一下基本信息,本科实习经历,硕士的paper和项目,正在腾讯ailab实习,GitHub上有2.4K个star,想去该公司工作。然后开始看简历问小问题

  1. 熟悉的编程语言?Python和Java,说一下Python的多线程和多进程,Python伪多线程,那什么时候应该用它?(有空闲等待的情况)讲一下Java线程池(举了Android多线程的例子)
  2. Python tuple和list的区别(只读和读写,什么时候用只读的容器?)
  3. tensorflow while_loop和python for循环的区别,什么情况下for更优?
  4. 简历上提到了object detection的一个项目,问SSD和YOLO的区别(我的博客有)
  5. 简历上提到了Hbase,说了一下项目里HBase的row key设计

讲到这里已经半个小时了,面试官就说他这边没什么问题了,接下来应该会是他的老大面,我问了一下工作地点,他们团队在北京和杭州,广深就木有,因为我一开始是选的广州作为意向城市的,但杭州也可以接受。

阿里云二面//7.23 36min

二面是面试官用自己手机打过来的,自我介绍之后就开始让我讲读研期间花精力最多的项目,我就直接开始讲论文了,可以看我前面的论文的分析。说实话要把这样一篇很长的论文在电话里讲清楚还是挺难的,很多时候都只能让对方知道大概的原理,讲太细很容易把面试官搞混,一般我是讲一个创新点问一下面试官有没有问题,这边避免对方跟不上节奏,往往这个时候面试官会复述一下下,我就在复述的过程中把一些东西理得更清楚一点,讲完论文已经20分钟了,然后就稍微提了一下实习做的东西,然后(36分钟了)面试官就说他这边也没什么问题了,后面应该还有一面,然后是HR面。

阿里云三面//7.26 46min

三面还是阿里巴巴的电话,那天刚参加完公司的生日会,回座位上,接到了电话,依旧是讲论文,然后讲了实验室一个养殖场动物计数的项目,讲项目的时候务必把项目背景讲清楚,让对方知道为什么要做这个事情,并且要把工作中的难点和创新点表现出来。并且还讲了一波ssd模型。那天附近比较吵,而且手机麦克风质量不是很好,估计没有给面试官很亮眼的感觉,但是面试官态度好像还是比较满意。补了两个基础问题,常见的loss有哪些,反向传播机制是什么样的。第二天下午接到了HR的电话,约了8月3日技术终面,还有终面后的HR面。

阿里云技术终面/交叉面 //8.3 58min

唯一在早上的面试电话,并且感觉这个面试官面试水平极高,会自己设计问题,也会引导面试者,感觉这也是自己发挥的最充分的一次面试(感觉身体被掏空.jpg)让我对阿里都心生向往了。

阿里云HR面//8.8 35min

HR面是晚上7点多打过来的,听声音大概是个慈祥的阿姨。问的主要是这些

大疆(已终面)

大疆大概是正式校招开始得最早的公司了。先投了简历,发现要做性格测试,性格测试还是如实写,没必要假,不然进去了也不适应,貌似去年性格测试刷了很多人。过了几天收到笔试通知(跟师兄要了个内推码然而好像用处不大,还是要笔试),那就硬着头皮做吧,笔试有两批,我是7月8日周日晚上7点半的笔试,一个小时,题量还行,有选择问答计算编程,做完时间差不多结束。貌似改卷工作量挺大的,大概7月20日左右就看到笔试状态变成通过了,到了7月26日才收到一面邀约,约了7月30日下午一面。

大疆一面//7.30 36min

大疆貌似面试都是有两个部门的面试官同时面,因为是电话面试,一开始可能只听到一个面试官的声音,其实有另一个面试官一直在暗中观察。先自我介绍了一波,然后开始讲论文,还有稍微介绍了一下鹅厂实习的东西,两个岗位的面试官一个是感知算法岗的,一个是机器学习岗的,机器学习岗的面试官问的比较深,还问到了这个模型能不能收敛的问题,还好我们论文里考虑到了这一点,也解释了一波,然后他俩就没啥问题了,我问了一下机器学习算法工程师这个岗位一般是做啥的,他们说目前是图像的算法比较多,感觉不错。当天晚上就查到了一面通过的状态。并且HR在十点半给我发了二面的邀约(HR也这么拼的吗),是视频面,用的赛码网。

大疆二面1//7.31 22min

先自我介绍了一波,然后讲论文,因为是视频面大概能看出面试官能不能get到,所以可以适当控制节奏,讲完论文他就没啥问题了,我就问了一下后面大概还有几面,他说可能还有一到两面吧。

八点的面试,HR大概九点多追了一个电话过来,说本来有两个面试官的,有一个有事情没来,所以要加一面,刚刚面我的是感知算法岗的,没来的是机器学习岗的,我想那肯定要面啊,约了第二天中午面,然而第二天中午也被鸽了,面试官有个会要开没来,跟HR联系后说之后再约时间,到了8月2日傍晚,发了短信给我约晚上或者明天面试官会打电话过来面试(跟阿里终面时间很近,所以感觉这段时间吃饭都没啥胃口了)。

大疆二面2 //8.2 45min

这一面的面试官真的厉害,感觉没法带到自己的节奏里,自我介绍后先讲鹅厂的实习,讲了Facebook一个数据蒸馏的方法,面试官觉得这个方法数学上应该是不work的,我也不是很能说服他,然后还是先讲论文,这个部分还是跟之前差不多,貌似很多面试官喜欢问你在这个项目中遇到的困难是什么,又是怎么解决的。然后将养殖场动物计数的项目,没让我讲最有创新性的运动规律建模,而是让我讲树莓派上的NCS模型部署,讲真这个部分工作量不大,占了整个工作的四分之一吧,所以也没有给对方很亮眼的感觉。我自己觉得只能算发挥的一般了。面试官问我有啥问题,我一时也没想起来问啥(其实之前也问的挺多的了),就匆匆结束了。

过了大概一个星期,官网上的状态变成了二面通过!8月9日收到了大疆的终面邀约,要去现场面试了。

大疆终面 //8.21

约了21日下午四点半现场终面,提前了半个小时到,签到后到一个会议室等了会儿,跟一起面试的同学聊了一会儿天,然后HR就带我去面试了,面试官应该是懂技术的管理人。惯例自我介绍一下,然后开始常规套路,

然后就换我提问了,问团队工作的模式(主要是产品导向的),问机器学习算法工程师的工作任务(主要是无人机相关的,面试官还介绍了一下一种长期预研任务的模式),问福利(应届生分配宿舍,绩效好的会送车,还有无息贷款,送无人机是小意思了,零食健身房之类的生活福利也有),问了一下后续的安排,说是大概两周后悔出结果。

最后面试官又补充了一个问题:拿了哪些offer,正在面哪些,能不能提前来实习,就如实回答就好。

腾讯AI平台部 //8.16 70min

直接约到楼上会议室面试,先问了一下实习期间做的东西,大致介绍了模型,还有实习期间做的数据蒸馏和多尺度融合。然后可能是为了考察学习的时候有没有充分理解问题,让我讲了一下reid的发展,我就把之前看过的reid论文都讲了一下,面试官说挺全面的,然后开始讲CVPR的论文,因为有纸笔所以讲的比较清晰。差不多面了45分钟了,面试官说还有时间,我们把代码也考察了吧,就做了一个算IOU的题,给两个检测框,求IOU。这题不难,就是条件判断比较繁琐,用min max处理会简单一点:

#RT:RightTop
#LB:LeftBottom
def IOU(rectangle A, rectangleB):
    W = min(A.RT.x, B.RT.x) - max(A.LB.x, B.LB.x)
    H = min(A.RT.y, B.RT.y) - max(A.LB.y, B.LB.y)
    if W <= 0 or H <= 0:
        return 0;
    SA = (A.RT.x - A.LB.x) * (A.RT.y - A.LB.y)
    SB = (B.RT.x - B.LB.x) * (B.RT.y - B.LB.y)
    cross = W * H
    return cross/(SA + SB - cross)
上一篇下一篇

猜你喜欢

热点阅读