万字长文!推荐系统岗面试经验&学习心得
Posted 浅梦的学习笔记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了万字长文!推荐系统岗面试经验&学习心得相关的知识,希望对你有一定的参考价值。
“ 本文总结了百度,华为,京东,360,vivo等接近20家公司的推荐算法校招面试经验和个人心得,以及若干学习资料和方法,相信无论是在校生还是从业人员读后都会有所收获~”
编辑:happyGirl
0、写在前面
秋招已经渐行渐远,休养生息(吊儿郎当)了一个多月,特开此贴回顾一下自己秋招的历程,取名为风雨秋招路,希望以后学生求职的学弟学妹(师弟师妹)少走一些弯路,能够取得自己理想的offer 首先介绍一下本人背景,985渣硕,万金油的行业,偏向一点计算机专业,秋招求职岗位为算法工程师(推荐系统方向);算法方向的四大条件:实习、论文、比赛和名校,自己可以说是裸奔了,唯一能拿的出手的便是比赛有Top10的经历,算是秋招唯一的闪光点了,秋招投递简历的方式是半海投式(为何如此,看下面的介绍),最终收获的offer有接近10个,大厂BATTMD的有,小厂的也有,银行、研究所的也浅尝辄止,算是经历秋招百态,今年算法方向推荐系统对比CV竞争难度低一点,能够上岸已经心满意足了 由于自己是理工科背景,没有文采飞扬的段落篇章,亦没有大道至简的深厚功底,有的只是朴实无华的文字,记录自己的秋招,希望大家见谅,下面就按以下三个部分介绍以下:
-
秋招经历 -
秋招感悟 -
推荐的学习资料和方法
1、秋招经历(按时间顺序)
华为(4.29-10月中旬 无offer
自己参加的是华为上合区域的“Find Star”优招的途径,其他区域比如说南京的FX计划、北京的A计划等等,均是华为提前批的校招招聘计划,该计划比优招和提前批开始时间要早很多,当然招聘要求相对来说比较高,楼主有幸能够参加这个计划,是因为参加了华为的软件精英挑战大赛,抱了队友大腿有幸获得二等奖,获得提提前批次的招聘机会,建议以后的同学可以考虑参加华为的比赛。自己本来秋招的计划是华为,但是最终没有获得offer,也是造化弄人,过程可谓是一波三折:
-
4.29双选会 双选会前几天发邮件通知面试,自己前一天刚回学校,一点知识都没有准备,匆匆做了一份简历就去了双选会。当天上午华为各部门进行介绍,包括无线、终端、海思等各部门,请教了工作的师兄,并结合自己实际,选择的是终端的某三级部门,下午面试,一共二面,这里不罗列面经,一面问的主要是项目介绍和基本知识会不会,二面是聊天式的面试,没有写代码相关的内容,面试完成就回去等结果; -
8月中 时隔三个多月,终于出了面试不通过的结果,也就是能否定级为15级的结果,不过自己是提提前批,还有参加优招或者正式招聘的机会,等待下面面试的机会,然而今年华为面试改革,面试改为三轮,前两轮有代码面试,因此内部决定面试重置,重新进行面试,这个朝令夕改的政策变化,而且前面面试太水了,基本看论文比赛和奖励情况定级,真的是愤怒,也决定自己不知考虑华为,多考虑其他公司 -
9月初 传说中的改革面试,写了两个代码,链表删除节点和快乐数,基本都是leetcode easy级别的(有的同学也碰到medium和hard,因人而异),面试结束等结果 -
10月中 由于性格测试没过,需要重测,二测以后也没过,后来打电话给第三次机会,问了半个小时,就再也没消息了,不过自己已经拿到offer,也不考虑去华为,因此也不在乎了
整个华为的面试流程有足足5个月的时间,战线很长,而且效率很慢,HR也是一拖再拖,各种坑蒙,也从这里面学会到了不要在一棵树上吊死,多准备其他的出路为好。面试等待期间时不时的有其他部门让你参加他们的宣讲会或者面试,但是是有限制的,自己第一次选择了终端部门,有面试流程在走,不能选择其他大的部门,而且恰好碰到华为内部面试改革,三次性格测试都不过,时也命也,看来是和华为无缘吧。回忆一下,华为确实是很多人的就业的选择,不可否认华为确实在改进面试的难度和体验,不过就目前朝令夕改的政策而言,很难达到一定的招收水准,不过也祝华为越来越好吧,毕竟是很多人初始秋招的就业选择
多益网络(7.9) 无offer
第一次做笔试题目,就是多益网络的,笔试还要下载软件,也是醉了,性格测试啥的好像有对人口有什么看法之类的,网评说老板的价值观存在争议,薪资较低,后续的同学需要留意一下
面试是视频面试,具体的面经由于时间比较长有所忘记,大概是机器学习的SVM、LR以及NLP的一些知识,问的东西广而全,不太涉及具体的业务,不过当时属于菜鸟阶段,基础知识掌握不是很牢固,只是初次经历一下面试,也从该面试中学会了一定要掌握好基础知识,还有相关概率论的知识也要同步掌握,在此不做赘述
28所(7.25) offer
师兄曾经讲过南京的14和28所都很不错,尤其是14所的待遇很好,不过申报14所没有通过,要求太高,所幸的是同学那里发来28所的夏令营的报名链接,很幸运有机会参加28所的夏令营,时间是7.23-7.25,以后想去研究所的同学可以考虑这两个研究所,在南京相对说还是性价比还是不错的。
研究所的面试相对互联网比较简单,面试首先会问很多个人情况和家庭情况,比如说是哪里人,独生子女还是什么,父母对工作地点的意见等等,其次会问项目相关的,基本不会问基础知识,面试时间20分钟左右,不过我就很不幸了,面试时间竟然40多分钟,算是幸存者偏差吧,不过都是C++的基础知识,类似于
-
override和overwrite的区别 -
指针和引用的区别
等等,很简单的基础知识,主要是基本功,所以说任何面试不能依靠侥幸心理,只有自己实力真的强大才会游刃有余,也是要真正强化的目标
研究所出结果相对来说比较慢,大概8月底左右收到offer吧,后续也没有投递过研究所的简历。经过夏令营算是对研究所有了比较多的认知,想要稳定点的工作可以将研究所作为目标,尽量参加研究所的夏令营,后续成功几率比较大,尤其注意研究所的夏令营一般在七月份左右,因此前期的信息收集工作一定要做好,秋招不仅仅是知识战,还有一部分是信息战。好了,关于研究所的就暂时介绍这么多
寒武纪(7月底) 无offer
寒武纪和学校相关度比较大,在学校开了提前批,当天晚上提前面试,也是对自己一次初期知识的衡量,投递岗位是深度学习算法工程师,下面是部分面经(具体很多记不得了)
一面:(C++和python基本知识)
-
struct和class的区别,C++中定义的变量默认是strcut还是class? -
delete和delete[]的区别 -
override和overload的区别 -
int a[] 和 new int a[]的区别 -
python中函数self的区别,读取一个txt文件中2.5是什么数据类型,2.5+2.5等于多少 -
CNN卷积层的作用
二面:(半个小时,办公现场)
-
项目介绍 -
虚函数了解吗,纯虚函数呢,解析函数可不可以定义为虚函数,构造函数能不能定义为虚函数 -
CUDA以及加速计算了解吗 -
bayes公式
-
成绩绩点,论文情况 -
平时C++写什么东西。STL知道哪些
总结: 寒武纪每隔一周一次面试,基本后续不通知你面试就代表流程结束了,由于寒武纪主要是做深度学习的芯片相关业务,平时涉及底层的东西比较多,虚函数好像工作重点用,平时没有接触到,并且自己的C++基础知识不是很牢固,在此推荐这个https://blog.csdn.net/xie810005152/article/details/91038878,应该大部分的问题涵盖进去了,后续涉及到C++的问题不在面经写了
中兴(8月初) offer
随手投了中兴的提前批,岗位算法工程师,8月初安排在学校面试,面试只有一面,面试半个小时,大概有
-
项目介绍 -
引用和值传递的区别
后面全是面试官说中兴的平台多大,服务的客户多少之类的,王婆卖瓜自卖自夸吧哈哈。面完我就匆匆离去了,几个星期后就收到了offer,后续等三方下来洽谈薪资,不过去了中兴现场洽谈的同学说,前期不用面试也行,洽谈直接用奖学金、大厂offer啥的证明就能谈薪资,国企作风,具体不太清楚,因为洽谈是十月底,直接拒绝了,没有了解太多,在8月份是当保底用的,不过也感谢中兴给我发offer,当时面试有点崩溃的时候也算是一种慰藉吧
云从科技(8月初-9月初) offer
追一科技+海康威视+趋势科技(8月中旬) 无offer
总结: 经历这段最低迷的秋招阶段,一定要对自己秋招的岗位有自己的认知,结合自身实际,坚定自己秋招的选择,千万不能半途而废,相信风雨之后总会遇见彩虹;还有面试的时候一定心态平和,云淡风清,把自己最好的一面展现出来才是最好的,至少自己努力过
星环科技(8月22-9月底) offer
360(8月27) 无offer
bigo (8月29) 无offer
牛客视频面试,面试时间半小时
面试官上来让我给他说做比赛觉得最有趣的一件事???当时就蒙了。。。可能是没有讲出有趣的事情吧,后面面试官出了两道代码题
1.LR的随机梯度实现
2.数组的最大和,数组的最大乘积
代码题第一题没写出来,第二题第二个不太规范,代码能力有待加强,非科班真的需要多花点时间在代码能力上,不过上来的问题真把我搞蒙了,让工科生上来讲故事真的太难了,自己的表述能力有待加强,效率很快,半个小时后就发了感谢信
京东(9月2-4号) offer
京东是线下面试,楼主参加的武汉场次,也是惟一在外地进行的面试,面试岗位算法工程师,一天一面流程,指定时间面试,进去面试前后误差不超过10分钟,当天晚上9点就能出来结果,招聘官网也能看到进度,面试效率比较快
一面:(9月2,25分钟)
1.项目介绍
2.Xgboost和LGB原理
3.样本不平衡的处理方法(涉及到业务知识)
4.TCP/IP四层模型
5.代码:反转链表
二面:(9月3,30分钟)
1.计算机网络:TCP和UDP的区别,OSI七层模型、全双工和单工
2.算法:GBDT的原理、LR的原理、对数据倾斜处理的方法
3.大数据:map-reduce、spark使用
4.计算机语言:JAVA的了解程度
5.代码题:给定一串字符,含有数字字母等,按照需求写代码,略
三面:(9月4,20分钟)
HR面 略
总体来说,京东的面试专注于考基础知识,基本不涉及特别深入的理解,我的面试时间相对来说比较长,一般都是20分钟左右的面试流程,面试的是最后是否会录取你的部门,京东面试的流程比较快,但是发offer可能会比较慢,楼主在二面当天晚上就加到了leader的微信,期间一直询问我有没有收到offer,但是最终时隔20多天才收到offer,可能是校招组和内部沟通还是有时间的延迟吧,不过总体来说京东的面试体验挺好的,守时而且面试难度一般,面试官态度很好
小米(9月4号) 无offer
小米面试是京东HR面试(三面)前面两个小时,约定是牛客视频面试,由于当时在武汉,出来外地面试没有带电脑,特意借了在华科同学的电脑,在他的寝室里面试,面试时间是中午2点,下面是面试经过:
小米面试官上来没有让我自我介绍,直接在牛客上面出了一道算法题:
求两个正整数相除后小数的循环部分
楼主和面试官沟通了十多分钟才明白了题意,面试官一直说这是小学的题目,用两个字概括你的思路,而我一直想what???我一定没有上过小学;吭哧吭哧写了1/7(千万不要1/3这样的,被坑了)的算法步骤才明白大概的意思,和面试官解释一通,面试官不太满意,说用两个字讲思路,楼主已经在崩溃的边缘,看时间不多了,大致在牛客上写代码写出自己的思路,面试官说写出来运行成功算你一面过,此时面试将近半个小时,我想后面还有面试,战略性的放弃了面试
总结:遇到有分歧的面试问题,一定要耐心和面试官沟通,和面试官相互get到点才能帮助自己更好的面试,面试不仅是展示自己知识储备的过程,也是体现交流沟通能力的一种考量方式
中国农业银行(9月20) 无offer
从武汉面试完回来,躺尸了很多天,期间也没复习知识,等待学校秋招开始,学校秋招比较晚,大概教师节后才有企业进校宣讲,而且大部分是宣传性质的,不会线下进行面试,所以楼主也是半颓废的状态,刚好农行要面试,形式是群面,本着好奇心的态度,打算看一下银行面试的具体流程
农行是十人群面的形式,每个人对应一个号码,五位面试官面对面进行考核,面试先每个人进行自我介绍三分钟,包括自我介绍和项目介绍以及在项目中发挥的作用,所有人介绍完成后,面试官根据兴趣会对面试者提问。不过出于礼貌,每个人都会被问到问题,只不过是感兴趣的程度不相同而已。面试的问题基本围绕自我介绍的内容进行提问,大部分都是JAVA或者大数据相关的很基础的知识,只要掌握好基础知识便能应对自如。顺便提一句,银行对于JAVA的重视程度比C++的要高很多,而且python对于银行相对比较边缘,因此有志于进入银行等工作的,建议着重掌握JAVA的基础知识
面试时间大概半个小时左右,面试期间一定要注意礼貌用语,银行对于仪态仪容也是一个比较着重考察的环节。面试完成后,做了一个编程题目,题目是剑指offer的原题,求数组中出现两次的数,楼主花了三分钟就交卷走了,后续流程就结束了。十月中旬出结果要体检,但是楼主只是去尝试,也没有理会,这里给想去银行的同学提个醒,体检同样也是一项非常重要的流程,值得关注
招银网络科技(9月25) offer
具体面经https://www.nowcoder.com/discuss/281953
很荣幸收到招银的ssp的offer,相对来说招银网络的低息贷款是比较吸引人的一项福利,在众多银行体系中也是首屈一指的,楼主也曾经考虑过去招银网络科技,但是因为各方面的原因,放弃了这个offer,希望不会后悔吧
vivo(9月26) offer
百度(10月12-10月16) offer
以上就大致是秋招历程的回顾,总结下来,秋招大致经历了“新奇-->失意-->低谷-->平淡”这样的心路历程,可以说是真正的风雨秋招路吧,人生中不可多得的财富。
2、秋招感悟
前期准备要充分,合理制定计划很关键
秋招对于每个学生来说应该是关键的人生节点,关乎到未来人生规划,提前打下良好的准备是取得秋招满意offer的基石。前期准备不仅仅是秋招前面几个月进行加强复习,很关键的在于日常的积累和沉淀。一心一意准备找工作的同学,日常学习和科研之余注重代码的积累和项目的储备,代码可以从leetcode的easy进阶到medium,项目的储备可以参加比赛或者在github上高star的project。好的代码能力能让面试官赏心悦目,搭配优秀的项目经历才能让秋招游刃有余。
秋招是心态的历练过程,稳住心态很有必要
秋招对大部分来说会经历受挫折、打击、怀疑自我的心路历程,可能开始秋招准备的时候信息满满,认为自己足够优秀,可能对比进入BATTMD的学长学姐,觉得自己能够轻松应对找到大厂的offer。但是要清楚的明白互联网公司每年的岗位需求、数量不同等各种因素,在秋招历程中每个人或多或少会经历备受面试打击、怀疑人生的心态变化。这可能是非常痛苦的过程,但是一定要有心理准备面对这样的过程,一定要千方百计的稳住心态,不能因为多次打击放弃秋招,相信风雨之后总能遇见彩虹。
总结面试的成功与不足,查缺补漏重中之重
参加了多次面试,会发现每次的面试内容会大同小异,高频的面试题层出不穷, 争取在每一次面试都总结一下自己的优点和不足之处,对于没有掌握的知识一定要着重进行复习,争取在下次面试的时候能够完备详尽的阐述;对于已经掌握的知识点,要多看相关拓展技术资料,面试官可能会因为你比其他人了解知识的深度和广度而刮目相看
秋招能否拿到offer,实力和运气兼具
曾经进入阿里的师兄说过,面试运气决定你的上限,实力决定你的下限。面试中可能会遇到形形 *** 的问题,比如说面试官的态度很差根本不听面试内容、面试当天刚好生病状态不是很好等等,导致面试的失败,但是在绝对的实力面前,这些因素便不再那么重要了,come on,努力提升自己的硬实力,不要再抱怨无关紧要的因素了,your hard work is of truely paramount importance.
面试也是个人魅力的展现,掌握面试技巧有助于收获offer
面试相对来说也是一种交流沟通的过程,其中世界上最难的事情就是交流沟通,最简单的事情也是交流沟通。面试没有想象中的那么高大上,当做普普通通的一个陌生人聊天,平常心对待,事情就变得很简单。尽量引导面试官到自己熟悉的知识点,让面试变成轻松愉悦的聊天氛围而不是呆板僵硬的一问一答的形式,可能对每个人来说,是难点但是面试提升的重点,要经过多次面试的历练才能体会到
3、推荐的学习资料与方法
好多人私信推荐系统学习的方案,自己对推荐系统也只是稍微了解,不能说是精通,所以下面关于推荐系统的学习思路知识个人拙见,其他方向的同学大致借鉴一下,
首先具体学习的思路可以参考 https://www.nowcoder.com/discuss/326300
这个帖子是在比赛圈里天才儿童的个人准备和学习的一些思路,自己的学习和比赛思路和他基本一致(没有实习、论文,只能通过打比赛啦,实属无奈之举),天才写了这么多,真的省了不少事情哈哈,除了天才推荐的,在此补上自己学习推荐系统的一点拙见:
推荐系统基础知识
-
推荐系统的系统知识可以学习 项亮《推荐系统实践》,这本书算是推荐系统的基石书籍,大部分是解决推荐系统经典的思路和方案,着重了解协同过滤、UCF、ICF,SVD++、冷启动问题
推荐系统论文进阶
-
推荐系统进阶的可以通过论文进行学习,推荐辅以github上DeepCTR作者浅梦总结的https://github.com/shenweichen/DeepCTR,以及知乎王喆https://www.zhihu.com/people/wang-zhe-58/posts进行学习
推荐&数据挖掘相关竞赛
-
推荐比赛方向的学习昊神总结过帖子https://github.com/Smilexuhc/Data-Competition-TopSolution,里面收集了前些年各大比赛的top解决方案开源,目前基本停更了,熟悉基本的操作方案也是可行的 -
关于推荐系统的比赛,目前看到已经越来越少了,CV和NLP相关的呈现上升的趋势,对于机器性能和代码的复现水准越来越高,想通过比赛方式进行秋招的同学需要进一步进行考量,可能是独木桥的方式了,比赛的话除了kaggle(推荐看国外大佬的kernel)、天池、DataFountain、DataCastle等,还可以通过https://www.datascicamp.com/?sub=DM,CV,NLP,RL,SP进行查询
以上便是对推荐系统个人的学习思路,如果有不满意或者其他学习思路的地方还请指教
最后,非常感谢在秋招中遇到的每一个人,希望后面找工作的同学可以从我的秋招历程中得到一点启发,秋招每个人的实际情况各不相同,也希望看到这个帖子的人都能拿到理想中满意的offer。
推荐阅读
喜欢的话点个在看吧 以上是关于万字长文!推荐系统岗面试经验&学习心得的主要内容,如果未能解决你的问题,请参考以下文章 半万字长文学习 MySQL 主从复制原理,面试必问,建议收藏!