1.简单介绍
面试岗位:机器学习 | 数据挖掘 | 算法工程师 | 基础研究
比赛经历:天池比赛Top 10,滴滴算法大赛Top 5,京东算法大赛Top 1
科研经历:实验室主要方向:计算机视觉+生物信息。在研一上课的时候,实验室有师兄在做计算广告ctr预估、异构平台搭建,自己也算是耳融目染,学习了一些吧。
个人背景:本科普通院校信息管理与信息系统(计算机与管理的交叉学科),考研到哈工大,到找工作的时候刚好一年(工大本部2年毕业),这里其实可以看出我比较菜(微笑脸)。
语言背景:C++、python、SQL党
下面的面经是按照时间顺序来的
2.华为优招
7月份回家一趟,没有投递华为优招,后来在师兄和室友的帮忙下,得到了面试机会。
一面:C++里面static的作用,判断一个数字是否为回文数(此处需注意,面试官一直问我有没有更优的方法,我当时已经说出了2-3个方法,囧),自己选择一个项目进行介绍。
二面:介绍项目,意向城市,期望薪资,聊天。。。
在线笔试:三道编程题,总分600,get 525。
测评:只要注意不要选完全不加班就好。
3.360
华为面试回来之后,接到了360面试通知(提前批)。
部门: 核心安全事业部
岗位:机器学习/数据挖掘/自然语言处理工程师
一面:介绍了滴滴算法大赛,面试官比较关注特征工程。详细问了特征如何设计、为什么这么设计、那些特征会比较重要。商品推荐中如何进行个性化推荐,特征你会想到那些,为什么这么做
二面:避免过拟合策略、如何提高模型泛化能力、L1与L2正则区别,优缺点、生成式,判别式模型、深度学习这块了解多少、说说xgboost、gbdt区别、Tree-based Model如何处理连续型特征。
HR面:毕业之后比较注重什么、期望薪资、比较注重过程还是结果、对360的了解
能力测评:一个小时,题比较难,但是要好好做。认识的几个小伙伴都到了HR面,但是没有收到offer,不知道是不是能力测评的缘故。
4.搜狗
在等待360出结果的时候,接到了搜狗网页搜索一个技术面试官的电话,说我6月份提前批面试过了,后续会有HR联系我(当时,笔者真是一脸懵逼,现在都9月份了,6月份的面试,现在才告诉我结果,后面那个技术官告诉我,当时是忘了)。
6月份提前批面试:当时搜狗来学校招实习,对比较优秀的同学会直接给offer(主要针对工大自然语言处理、机器翻译这两个实验室,显然我不是),所以我就抱着试试看的心态去了。由于时间太长,具体面试内容有点忘了,我现在印象比较深刻的就是当时讨论了一个评价指标(多目标优化)和建模(如何选择训练集、测试集)的问题。
HR面:手上有哪些offer、期望薪资、对搜狗感觉怎样、对于技术面试感觉如何,最后聊了聊人生。那个HR姐姐真的很赞,当场算是对我比较认可吧,直接告诉了定级、薪资。赞赞赞(直到现在依然很感激那个HR姐姐)
后面又有戏剧性的故事发生了,正如前面所说,我并不知道我提前批面试过了,在搜狗官网投递了简历,虽然没做笔试,面试官居然要面我,我也鬼使神差的去了。。。
一面:聊天,因为我有搜狗offer,这个部门直接一面过
二面:部门总监面。先聊项目,从数据预处理到特征工程、到模型(模型创新,以及为什么用这个模型),再到ensemble。然后大数据方面的代码考察,主要特征数据量大,如何做到速度与内存上的优化。(trick:这个时候你可以问下面试官,是要在线做,还是离线做,当然自己要有把握再问)然后有一个比较有意思的题目,对大小在1-10000的1亿个数进行排序,你会怎么做?(友情提示,不要用基于比较的排序算法哦)。整体聊的比较high,接近2个小时。
HR面:几个方面吧:团队意识、对一些公司里面常见问题的处理、对于业内其他一些公司的看法、个人性格、爱好
5.搜狐
搜狐今年来工大的貌似只有搜狐北研,印象特别深刻,因为当天刚好开题,开完题改完报告交了之后,跟实验室同学一起去做了笔试(现场笔试)。搜狐笔试技术岗是一套试卷。
笔试:一些概率题、计算机网络题、三道算法题
(1)第一道题有点想不起来了,大概有个有序的数据,时间复杂度要O(n),主要有序的数组里面可能有重复的数据,注意边界就行了
(2)给定一颗二叉树,节点的值表示money,一个强盗想要偷钱,但有一个规则,如果一个节点被偷了,那么与他相邻的节点则会报警(即不能偷),最终返回这个强盗最多能够盗取的money。
(3)给定两个黑白图像,即0-1矩阵。四个操作(水平翻转、竖直翻转、90度旋转、黑白翻转),问这个图像能否通过有限步骤操作,最后变成一样的。
一面:C++里面const有什么作用,在函数名、参数名不同位置有什么作用、C++ 内存分配、指针与引用、函数传参如何更快、大致写下C++ vector代码、聊了下笔试中一道概率题(甲乙两个人轮流(甲、乙、甲、乙这样,一旦有人中奖就停止)去抽奖,最后问甲中奖的概率)、最后聊了下项目。
二面(略带HR面的风格):二面刚开始,面试官说昨天是他看得我的笔试题,对于我第二题的解决方案有点不理解。于是我说了下,最后发现自己做错了。最后在面试官的提醒下,说出了解题思路。然后问了问自己比赛的经历,未来想从事什么样的工作,如何进行自学。
6.一点资讯
可能有些同学对这个公司不是很了解,大概只知道今日头条,其实一点资讯做得东西跟头条差不多,听说给的工资比较高,我就去了(哈哈哈)
现场笔试:数据结构、计算机网络、操作系统、2道算法题
(1)给出一个数组,返回数组中满足类似a > b < c >d这种情况的连续子数组的最大长度。时间复杂度当然是O(n),比较有意思的题目。
(2)同样是一个数组,去掉其中一个数,得到与这个数相邻中比较小的那个数的值(如果是最左侧或者最右侧则返回0)。不断重复上面的操作,直到数组为空,返回累加的最大值。
一面:聊项目,滴滴算法大赛。主要两块,模型算法创新、DNN里面各种参数,激活函数的选择及理由。这两块自己言之有理即可。也有人一面写代码的,我并没有遇到哎,不只是简历还是笔试的缘故
二面:另外一个项目,做资金流入流出预测的,大约一年之前做的。先说下当时自己是怎么做的,如果现在让你做,你会怎么做。然后比赛的话,往往数据是给定的,如果让你自己可以收集数据,你会想到哪些数据,为什么,从而提高准确率;因为一点资讯做推荐也会比较多,然后问了一个他们实际业务中的问题,对于用户在一点资讯APP上输入关键字,公司和用户会关注哪些指标,针对这些指标你会如何优化。主要从定义损失函数,概率分布这些方面聊聊吧。
HR面:手里的offer、期望薪资、比较care那些东西,毕业之后、对于大公司,创业公司如何看待。
7.阿里
关于阿里,真是一个让人伤心的故事,很早之前是比较想去阿里的,并且一直在参加阿里的比赛,比较拿到的Top 10终面的机会也被取消了。
实习、校招部门:蚂蚁金服人工智能部、阿里妈妈,比较核心,难度也比较大。
阿里最后结果是挂了,这里写点教训吧,哎
蚂蚁金服技术终面不出意外的话:会让做题,题目一定要仔细听清楚,coding是一方面,算法优化和使用mapreduce、spark做处理是加分项
阿里妈妈:团队人不多,主要做ctr预估。对于比赛经历貌似不太看重,比较care工程、科研经历。面试官也会查考的比较有深度,从对机器学习、统计学习的理解、普通线性回归到广义线性回归的本质、深度学习的本质、AUC、KMeans的算法伪代码、最后写了下归并排序。给出的建议就是面试阿里妈妈的话,提前对计算广告这块做些准备,然后面试的时候,尽量用数学语言、伪代码的方式进行清晰地阐述,当然这也跟面试官有关。
8.腾讯
面试腾讯的路是比较坎坷的,内推找同学推的CDG(做广告的),从简历评级(A+),到简历锁定,到锁定面试官都是比较顺利的,不知道什么缘故,那个面试官一直没有面我,导致我内推就这样不明不白的挂了。后来大致了解的是因为HC没了,校招的时候,腾讯的BG是不可调整的,所以基本希望不大了,最后是TEG面试的我。
笔试:数学题为主、三道简答题,比较开放。
一面:聊一聊项目,面试官不care特征工程,我就讲了讲模型算法。然后要求手写纯C字符串拼接,当时笔者想到了三个细节(1:const char* str 2: 空串判断 3:返回新串还是原有串),写完代码之后面试就结束了。在出门的那一刹那,我想起了代码中一个问题,空间申请啊,内心是崩溃的。。。
二面:一直在做题
(1)数学题:类似一点资讯那个抽奖题目,做好之后一直问我为什么这么做,囧
(2)数据结构算法题:给定一颗二叉树,如何把它保存到文本中,然后再从这个文本中恢复
(3)数据结构算法题:S型遍历二叉树,如何优化,最后说了个空间优化的方法
(4)大数据问题:大于计算机内存的存储IP的文件,统计出现次数最多的几个。这里面要对b、B、存储有点理解,一般优化都会想到0-1bit,这个时候要注意,要会写代码,而不只是说(其实就是位操作)。
(5)LR、NN简单聊了聊
三面(HR面):对技术面试官的感觉,对于产品经理的错误决定你会怎么做,平时如何解压,对自己前面面试打分、手上有哪些offer
最后说下结果吧,自己报的是北京地区,今年(2017)校招的时候,TEG已经没有太多的名额了,加之TEG比较偏基础算法吧,这一块自己相对薄弱。据我了解,最终TEG在哈尔滨基础研究岗招了一个人,当然那个人不是我。
建议:能内推就内推,如果可以接受去深圳,对于腾讯,就去深圳吧,岗位相对会多一点。
9.百度
内推由于之前实习被推过、还有在官网上投递过简历,没有收到面试通知
校招岗位:商务搜索部 机器学习 | 数据挖掘岗位
笔试:选择题+简答题+编程题(主要考察动态规划)
一面:聊项目,聊的比较多的是如何知道一个特征的重要性,如何做ensemble哪些方法比较好。聊了聊计算广告方面FM,embedding。最后手写S型遍历二叉树
二面:主要考察两个方面
(1)机器学习:LR推导、LR与最大熵本质关联、LR最终迭代数值的本质,目前DNN为什么会有效、简单说了下mapreduce、spark、mpi、parametersever
(2)coding:数组滑动窗口得到最大的窗口,O(n)复杂度、扩展:这个滑动窗口中必须有m个不同才可以,目标不变,如果改,并分析时间复杂度;二叉树路径和等于某个值的所有路径输出。
三面:百度的三面是部门经理,看上去比较年轻。上来对着我的博客问,你写的东西自己现在还记得吗(当时好方)?问了下Xgboost的原理吧。然后就是滴滴算法大赛。最后聊了下自己目前做的课题。
10.总结
一家之言
面试机器学习、算法岗需要注意以下几个方面吧:
(1)coding:从基本的数据结构、到分治,动态规划这些算法思想需要很熟悉;进阶:实现过机器学习算法;更进一步:能够利用mapreduce | spark | mpi | ps 开发分布式机器学习算法。(github你值得拥有)
(2)机器学习理论:这一块不仅限于常规的机器学习算法、深度学习算法,如果能对自然语言处理、图像、推荐、广告等特定领域方面的算法有所了解,必然是加分项。
(3)数学基础:求导、矩阵、最优化方面的一些知识
(4)不错的大数据比赛或者科研经历
小建议:
(1)简历排版、描述很重要,要做到凡是简历上有的自己必须会,且能做到深入浅出。有亮点的地方可以通过数字的形式进行描述。
(2)面试的时候讲解算法要注意逻辑清晰、突出重点,难点、如何解决。
(3)面试环节中沟通也很重要,遇到自己没有碰到的问题,可以先冷静思考下,实在解决不了,也要说出自己思考的过程,如果可以的话,在面试官的提醒下,解决问题。然后,技术面试到了HR面也要注意,就我了解的是,不少公司的HR在最终是否给offer也是有比较大的话语权的。
(4)最后一点,对于想争取sp的同学,注意每一面都很重要,每一面都要让你自己表现到最好。
11.薪资
由于许多公司HR跟我说了薪资要保密,本着契约精神,这里给出一个薪资排序,供大家参考(注意里面大多是sp,且一点资讯异常高)。
大概一切皆有可能吧,在今年即将毕业的几个月里,经过五轮的面试,拿到了阿里妈妈的offer(杭州),最后也是选择了阿里。
主要面试有以下几个点,记录以下,给看到这篇文章的同学一些建议
(1)滴滴算法大赛Top 5
(2)京东JData算法大赛Top 1
(3)实验室基金项目—转录调控网络构建算法研究
(4)深度学习在推荐系统方面的paper,实践等
(5)一个开放性的题目,从实际业务中抽象出来,探索一些现象背后的原因以及如何改进