机器学习-数据挖掘面试准备

from:
原文地址

我算是实验室找工作最积极的,从实习招聘到校招内推阶段再到正式校招,能投简历的我都投了。因此在正式校招前,我的面试经验算是很丰富,受到的打击也很多。虽然没有一次成功,但也积累了很多经验。其实也是有一次成功的,只是我没有把它算作成功,那就是华为的优招。由于参加了一次华为举办的软件精英大赛,而且还进入粤港澳地区前32强,后来华为就主动发短信、打电话让我们报名参加他们的优招。然后我们就在8月22号屁颠屁颠地跑过去面试了。结果发现面试官大部分都不是搞技术的,面试基本就是在瞎扯。一周后我们就收到短信说是进入offer池,再过段时间,我们又收到了短信说是会给我们发offer。人生第一个非正式offer就这样莫名其妙地得到了。那次参加优招的大部分都拿到了offer,而且都觉得拿的太轻松了。我们都在奇怪华为是怎么挑人的,投了简历的人中只有一部分人收到了优招的通知,其他人还蒙在鼓里。自从拿了这个offer,就招惹来了一堆的羡慕嫉妒恨。但拿到offer之后,在哈尔滨参加校招的时候,心里相对来说有底了些,毕竟有了个保底的公司,心态稍微好一点。在正式校招中,我参加的面试其实不多,面完腾讯之后,就几乎没啥心思面后面的公司了,所以正式校招的经验不是很多,有些话说的就不会那么准确。

这样扯下去会没完没了的,所以直接来个总结版的。就我参加这次校园招聘得到经验归纳下:

1、最好是参加一下实习或内推招聘,积累点面试经验,当然实习或内推招聘的面试跟校招面试差别还是很大的,不能完全照搬。

2、简历不要太纠结,也不要太随意。技术类简历不像其他非技术类的,不需要注意太多格式细节。简历的制作标准大概是简洁和突出,可以考虑从师兄师姐那里找一个模板。简洁是指不要写太多内容,什么奖励之类的只要写几个高级别的,自我介绍也只需要写一两行,格式排版尽量清晰。突出是指突出你的优点,准确说是你最擅长什么,这里主要在专业技能和项目经验两处中体现。其实面试官最最关心的就是这两项,其他的都是浮云。这两项也是面试中的重点,一定要把这两项写好。所谓写好是指不要写自己不会的,甚至半懂的也不要写,尽量只写自己最有把握的。尤其忌讳写那些岗位需求的,而你只是用过但不是很熟练或精通的东西。比如搞机器学习这一块,岗位需求很可能会写有Hadoop开发经验最佳,如果你只是用过,没有非常熟练,就不要写到你的简历中去,否则面试官就会让你用mapreduce写各种代码,分分钟虐死你。所以投简历时,要看看那些岗位需求,上面提到的专业技能如果不是非常有把握的,就不要写在你的简历上面。同样的,你的项目里面涉及到的工具或技能,你如果不是很熟悉,也尽量别写上去。如果不小心写了,最好是跟面试官直接承认自己不会,千万别纠结在你不会的东西上面。另外,专业技能中,精通二字慎用。精通一门语言,不是说你用得很多就是精通,精通意味着你熟悉该语言的底层实现机制,如果不熟悉,则面试的时候会被分分钟问倒,如果被问倒了,则会大大减分的。保守的来说,降低面试官对你的期望值,但是面试的时候,又能超出面试官的期望,这样是最稳妥的方式。当然,真的大牛就没必要这样做。

3、如果有自己的线上项目,可以考虑把链接放上去,大部分面试官身边都会有电脑的。

4、很多人都说自己没有项目经验,简历不知道怎么写,我刚开始时也是这样纠结,因为我也没啥项目经验。刚开始写了好几个”项目”,把本科做的什么系统之类的也写上了。后来经同学指正,就删除了很多。其实项目经验只要选择两三个最熟悉最重要最适合岗位的写上即可。最后我的简历上面只有三个”项目”,打引号是因为其实根本算不上什么项目,一个是我的课题,一个是课程project,一个是阿里的竞赛,跟那种项目多多的大牛根本比不了,甚至根本算不上什么项目。但是这三个都是我自己有深入参与的(这个很重要,只有自己动手做过的东西,被问的时候才会心里有底),所以无论面试官怎么问,我都能回答,当然也会有被问倒的时候。实习和内推招聘的时候,我把我那几个项目都讲解了好几遍了,每次都会被面试官发现漏洞,补了很多次漏洞之后,基本就知道该怎么讲解那几个项目了,同时也深入学习了项目涉及到的专业知识。所以面试经验还是挺重要的。面试官问项目的方式一般是这样的,你挑一个你最熟悉的项目讲讲或者你挑一个你认为最值得讲的讲讲,然后你边讲他就边问细节,而且面试官还可能会做知识延伸,所以一个项目讲解下来会耗费很多时间的。当然有的面试官很犀利的话,他的问题就会直指核心,不会让你多啰嗦。面试的时候,针对的不同的面试官要用不同的方式讲解,如果对方是懂这一块的,你就不要太啰嗦,用相对简洁的方式讲清楚项目到底是做了些什么,如果对方是不懂的,那么就要有条有理地说清楚,当然前提是对方对你的项目是感兴趣的。这个最好面试前练习一下,试着讲解给你身边的人听。讲解自己的课题时最好是先讲解课题的应用背景使得自己的课题看起来更高大上,如果面试官不是这方面的专家,那么就只需要讲解你的研究方向那些经典算法是怎么做的。

5、如何补充项目经验:参加各种比赛,BAT就不用说会举办很多比赛,要注意关注,其他公司也会举办,比如华为的软件精英大赛。还有就是认真做好课程的project。

6、专业知识在精不在广,比如机器学习可能会涉及各种算法,你不需要每一种算法都懂,只要能把其中少数几种弄得非常透,尤其是你在简历上(项目中)提到的算法。刚开始的时候,我总是贪多,各种机器学习算法我都想看,结果发现我根本没那么多时间去复习。后来面着面着,我发现每次面试中,面试官很喜欢问我LR、SVM这两种算法,而且我还总是被问倒,这是因为我的项目中涉及到了LR、SVM这两种机器学习算法(这两个算法也是非常实用的算法),所以后来我就重点将这两个算法进行突破,发了大量精力去了解这两个算法的细节。有些细节是书上看不到的,面试官不问,我就发现不了。所以我就去网上查,并且在技术群里问,还跟其他同学进行沟通。

7、技术博客:最好是能写一下技术博客,写博客很费时费力,但技术博客有很多的好处,一是帮助自己理解知识,如果自己写出来了,对知识就是真正的理解了,不然很有可能是自以为是的理解;二是帮助知识归纳,面试前不会乱了阵脚,只要看看自己写的博客就行了;三是帮助面试,如果写得好的话,可以在自己的简历上粘上链接,面试官会有兴趣看的,这样对面试加分会很大。

8、高频的面试问题收集,这个非常重要,一方面可以在网上搜相应岗位的面经,一方面是多跟师兄师姐以及其他同学沟通。同一岗位,虽然面试官的风格迥异,但还是存在非常多高频面试问题的。另外,要多跟同一求职方向的人进行交流,他们在面试中碰到的问题,很可能是你接下来会碰到的。百度今年面试特别喜欢问KMP算法。

这个博客比较值得关注:http://blog.csdn.net/hackbuteer1?viewmode=contents

对于面试笔试题目,他总结得比较详细。

9、算法基础:剑指offer上的题目几乎每个题目都是经典(面试中经常会问!!!重要的事情要加三个感叹号),当然也存在经典中的经典(如求连续子数组最大和),剑指offer上的题目要一个个都得练习几遍,尤其是字符串、链表、二叉树相关题目,还有几种经典排序,都得练熟。所谓练熟,就是分分钟可以写出完整答案(我还没能做到)。技术类的岗位是必须准备这些的。动态规划是个重点,算法导论那一章最好是能多看看多练练(矩阵连乘和CLS也是经常会被问的问题),很多复杂问题都可以使用动态规划来解决的。这些题目不能靠死记,一是面试官不一定会问原题,二是即使问原题,一紧张也容易忘记。所以大部分题目最好是先别看答案,自己动手写,最好是手写,因为面试的时候是需要手写的,写完之后可以在牛客网上进行测试,网址:http://www.nowcoder.com/ta/coding-interviews?page=1。刷题的作用一是锻炼自己的动手能力和编程思维,二是熟悉各种类型的题目。

10、C++最经典最常问的问题:new和malloc的区别、多态的机制、vector和map的stl实现原理等等。。。。(等他们搞研发的来总结)

11、海量数据处理问题:性价比很高的一个知识点。很多面试官喜欢问一些海量数据处理的问题,这个网上有总结的博客,还有《程序员面试笔试宝典》最后一章有归纳。这一部分知识点少,如果不复习的话,很难回答,复习的话就很容易回答,知识点也不难。关键字:top-k、tire树、bitmap、hashtable。

12、自我介绍不一定都会有,当然你可以主动自我介绍,自我介绍是把握主动权的最佳机会,你可以主动说明自己最擅长哪一方面,也是你最想面试官问你的知识或项目。

13、面试一般分成五个部分(不一定都会有):自我介绍、基础知识考查、专业知识考查、项目考查、问面试官问题(可以参考剑指offer的第一章)。

14、以上说的都是面试,笔试的话就认真看《程序员面试笔试宝典》,然后练习一下往年的真题。腾讯基础研究的笔试是个大坑,各种统计学的方面问题,笔试之前可以考虑复习下统计学。(考前我有突击的,然并卵,不会的照样不会);网易游戏的笔试也是比较坑,我没有投,但是其他人说,三个小时,六道编程题,实验室那几个只AC了一道题。大部分公司都是线上笔试,小部分线下,线下笔试要注意别错过了,他们一般是安排在宣讲会结束后的。

15、机器学习的笔试题,我做的时候发现好多都不会,这个似乎要练练才好,我之前都没碰到过。可以考虑在网上搜下那种期末卷子试试看。

笔试时间比较短,特别是选择题,能够思考的时间不多,平均下来一个题目就只能用1-2分钟,有的还不能返回做。

机器学习面经

入门:

1)吴恩达的课程,最好是看一遍,网上有课件下载的,边看课件边听课效果会更好。

参考博客:http://blog.csdn.net/stdcoutzyx/article/category/2697301

http://blog.csdn.net/abcjennifer/article/category/1173803/3

这两个博客都是该课程的笔记,要是你能自己写出这样的笔记的话,那就更好。

2)统计学习方法:一本非常经典的书,几乎是找机器学习工作必看的书。这本书算是一个速成宝典,不过里面的公式还是挺多的。

3)机器学习实战:这本书有各种机器学习算法的代码,以及一些实战经验(实战经验很重要,面试提问的重点,但是这本书上写的也不是很多,即使写了也不会讲太多为什么,面试官很关心为什么的,看算法的时候多想想为什么会这样,也多跟有实战经验的人交流交流)。

4) PRML:有时间的话,一定要看一下这本宝典,没时间的话可以用其作为参考。纸质的只有英文版(书里面的英文真心不是很难),网上也有个人翻译版的(非专业的),还有各种看这本书的笔记博客,甚至还有专门的QQ群是用来讨论这本书的,可见这本书的重要地位。

进阶(我没有完全做到):

  1. 推导出各个算法的公式,自己手动推导一遍算法,对算法的理解会上升一个等次。
  2. 自己动手写各种机器学习算法,用Python或者MATLAB写,相对容易很多。自己写完了算法,对算法的理解程度又会上升一个等级。【至少要把源码看一遍】
  3. 参加机器学习相关的竞赛,这类竞赛有很多很多。参加一次比赛,你对算法的理解又会上升一个等次。如果拿到一定的名次,奖金还挺丰厚的。这里列举一些这两年的比赛(有些已经举行完了,有些还在进行中):中国大数据技术创新大赛:http://bigdatacontest.ccf.org.cn/problems.html

阿里天池大数据竞赛,这个里面有很多比赛,可以考虑参加下。http://tianchi.aliyun.com/competition/index.htm?spm=5176.100065.1234.3.qo6J75

中国好创意CCF全国青年大数据创新大赛:http://www.wid.org.cn/project/2015ccf/index.php

面试官喜欢问的问题:

  1. 对比两个经典算法,如比较一下LR和SVM,这个问题大有文章可做。不仅仅是要你知道他们的区别,还要知道为什么会有这些区别。
  2. 讲解某个算法,比如你了解LR的原理吗?讲一下。这个平时得练练,试着跟同学互相练习。看懂一个算法是一回事,能讲出来又是另外一回事,能写出来又是一回事。讲解算法时要有条有理,而且不要过早地讲细节,先要讲清楚算法的大概框架。有的面试官会让你直接让你推导公式,比如你推导下随机梯度版本的LR。
  3. 某个算法有哪些特点,为什么?比如为什么SVM适合解决高维问题?【说一个算法的优缺点的时候,一般是指没有进行改进前的算法,比如SVM中使用SMO算法进行求解的话,可以避免一些问题】
  4. 某个算法使用某些假设和方法,为什么要这么做?比如为什么SVM要使用对偶问题来解决原问题?
  5. 数据对算法的影响,比如规范化处理对LR和SVM的影响?数据不平衡对LR和SVM的影响?为什么会有这些影响?标称型数据该怎么处理?这些如果有实战经验的话,就更容易明白了。
  6. 其他经典问题:如何处理过拟合和欠拟合,如何调参,LR和SVM如何处理多分类问题,SVM如何选择核函数。

 

技术博客撰写:很重要,机器学习知识还是比较多比较细的,所以要养成写博客的习惯。

引用:写博客很费时费力,但技术博客有很多的好处,一是帮助自己理解知识,如果自己写出来了,对知识就是真正的理解了,不然很有可能是自以为是的理解;二是帮助知识归纳,面试前不会乱了阵脚,只要看看自己写的博客就行了;三是帮助面试,如果写得好的话,可以在自己的简历上粘上链接,面试官会有兴趣看的,这样对面试加分会很大。

关于实习:据我的个人的初步了解,百度的实习留人不多,腾讯招的人不多,阿里今年是个坑(往年似乎留下的人比较多)。如果实习不能留下的话,是比较麻烦的,因为笔试面试的知识没有复习会很吃亏的,今年那些阿里宝宝找工作时就比较吃亏,要么就是笔试挂了(霸面成功率很低,而且很辛苦),要么就是死在了那些基础算法题上面,没有专门练习过的话,很难短时间想出来的。

关于HR面:之前我一直认为进入HR面的人很少会被刷的,今年腾讯就刷新了我的人生观,出现了很多HR面被刷的。有的前两面答的很好,结果HR面被刷了。HR面的话,要保持比较好的心态,不要跟HR犟上,也要时刻保持警惕,不要被HR给套住了。加班问题,能不谈就不要主动谈,谈上了就要表现出很乐意加班,至少不能表现出你厌恶加班。(违心点)

关于公司:除了BAT之外还需要关注的公司有,网易互联网、完美世界、搜狗、搜狐、美团、360、华为、中兴、深信服、融360、去哪儿、京东、滴滴、创新工场、畅捷通、人人、新浪、携程、大众点评、爱奇艺、今日头条、秒针系统、freewheel。网易游戏和蘑菇街这两个可能不会去哈尔滨。(有些可能没有列到),在没有拿到好的offer之前,最好是不要嫌弃相对小一点的公司的offer,也不要因为工作地点的问题而不去面试,一定要先拿下一些做保底用,这样找工作才会心里踏实些,心态也会好一些。网址:http://www.nowcoder.com/activity/campus2016

简历投递:最好做一个表格,记录那些你关注的公司的投递情况。由于不同的公司的网申时间是不一样的,公司一多,就容易搞混,很容易忘掉哪家投了,哪家没投。如果错过了网申时间,那就比较可惜了。还有,网申时总要注册各种账号,最好是做好密码和账号的备忘录,别到时候忘了。

 

此条目发表在默认分类目录。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用*标注