­

面经 | 萌新指南:如何通过自学算法,得到大厂实习机会?

  • 2020 年 7 月 30 日
  • AI

记得点击蓝字,关注我们呀~

作者:KaiGon,哈尔滨工业大学硕士
本文作者通过自学拿到百度机器学习实习生offer,想自学算法的同学可以参考作者的相关经验。
如果是非常喜欢算法的同学,可以直接跳过这部分看原回答。如果是想转行or跳坑的萌新们,请认真阅读以下内容。
我理解你们想转行跳坑的决心,但是我真的不建议刚刚读研的萌新和低年级学生现在转算法,因为已经来不及了,你们已经错过了最佳入坑时机。
第一,从2018年秋招情况来看,目前算法岗已经爆炸,报录比例惊人,大部分人都很难找到合适的算法岗位。(可以参看知乎上有一个讨论「如何看待字节跳动招聘收到的算法工程师简历的数量远超需求?」)
第二,现在大家一窝蜂的都转行做算法,你们想想等你们毕业找工作的时候压力得有多大。
第三,往计算机方向转我不反对,因为大方向是对的,但是一定要选对小方向。其实互联网行业很多研发岗位非常缺人(测试开发、安卓ios客户端开发、java前端、大数据开发),但校招却没几个人愿意投(因为大家都在投算法岗)。而且从18年校招来看这些岗位的工资也已经追上算法岗了,头条甚至给安卓sp开出了40w年薪+三个月签字费来吸引大家投递客户端研发。
第四,最后很多想做算法的人内心os大概是这样的:「算法多高大上啊说出去也好听,我要是研究生毕业去做安卓开发,那多“掉价”啊」;「做算法不需要了解那么多枯燥的计算机基础知识,我也没功夫花大量时间去训练我的代码能力,只要数学过关就行」etc.

先大致说一下我的情况吧,数学系研一在读,导师是做偏微分方程的,与算法工程师毫无关系。现在在某互联网公司做机器学习岗位的算法工程师暑假实习生(导师很nice的放我出来实习hhh),所有东西完全靠自学。
说明一下,算法工程师分类很多,所以要首先明白自己想做哪个方向的(去看各大公司的岗位招聘JD,里面有详细的要求,一点一点去学习和掌握相关技术),我这里说的只是互联网行业里的常规算法工程师岗位。
1.首先是数学基础,其中最重要的是线性代数、概率论与数理统计最优化方法这三门课。这三门课不仅仅是机器学习的基础,在公司招聘的笔试、面试环节都占有非常高的比重。线性代数这门课,大学上的可能不够,还需加上工科研究生上的矩阵论。这里推荐清华大学老师的MOOC课程,讲得真的非常好,上完(1)(2)基本够用了工科的概率论与数理统计比较简单,看完浙大那本就够用了(对,就是考研的那本);最优化方法也不难,这里推荐李董辉的《数值最优化算法与理论》也差不多够用了。(后注:这三门课实际上都非常高深,例如浙大那本概率论只是在黎曼可积意义下的,但很多情况不满足,这时候就需要引入测度,所以数学系上的概率论都是在实变函数和泛函分析的基础上进行的,大家有兴趣可以自行深入学习这三门课程)
2.其次是计算机基础,其中最重要的是数据结构与算法这门课。你要了解最基本的数据结构,包括数组、链表、树、图;以及常用的基本算法包括排序算法、查找算法、动态规划、贪心算法等。不能只了解理论,还需要动手独立的实现这些结构和算法,这也是对自己工程能力的锻炼。(后注:计算机网络,组成原理等也会在笔试的时候考察,对于已经学过这些课的同学,我建议直接去刷题就好了,不用特意去复习,没有学过的还是老老实实的去学一遍吧。还有数据库这门课也比较重要,至少你要会常用的sql语句,了解sql的基本原理。)
3.经过前面的课程折磨,现在终于进入了正题,那就是机器学习基础。知乎上很多人推荐吴恩达的机器学习课程,但我觉得对于大部分英语不好的人,听着听着估计都要睡着了,所以我入门的建议是跟台大李宏毅老师的课程,对入门者更友好。跟完李宏毅老师的课程后有两个选择,一个是再跟吴恩达老师的课程(毕竟经典)查漏补缺,然后再看书,另一个是直接开始看书。书籍推荐的话我推荐周志华老师的《机器学习》和李航老师的《统计学习方法》。说明一下,周志华老师的书简单一点,容易入门,但是有些地方跳跃性比较大,读者如果数学基础不好可能会有点懵;李航老师的书比较偏数学化的表达,对数学要求高一些,但是推导过程很完整,读起来更流畅。(后注:鉴于深度学习的火爆,建议在学完机器学习基础后,抽时间学习一些深度学习的内容,因为这部分的内容也经常被考察,仍然推荐李宏毅老师的课程入门。)
4.到这里,你终于打好了算法工程师的理论基础,然后你还需要一定的工具(这部分的学习可以和前面的一起进行)。我的建议是python必学(初学者建议安装anaconda,可以省去安装各种科学计算包时的痛苦),然后再选择JAVA或C++作为工程语言。然后再就是大数据基础,包括但不限于Hadoop,Spark,Hive等。
5.最后,你需要做的是根据自己的兴趣爱好选择一个部分深入学习。如果还没有建立兴趣爱好,那么建议你去公司的招聘网站,找相关的算法工程师岗位JD,然后再点相应的技能树。现在比较火的招聘方向有个性化推荐,计算机视觉,数据挖掘,风控及反作弊等等。
写在最后——作为算法工程师,扎实的编程能力和基础算法知识,在应对公司招聘时最重要。优秀的互联网公司笔试很看重代码能力,建议多去leetcode上刷刷题(多刷easy和middle难度的)。
原文链接
//www.zhihu.com/question/283960511/answer/437027193
来源:知乎
著作权归作者所有,AI职通车获权转载。




看面经,拿offer!为助力学生和开发者们找到心仪的工作,AI 研习社将陆续放出面试经验贴供大家参考。

另外,如果你是有着丰富面试经验的学生、开发者,或是历经千帆终成大咖的技术管理者,欢迎来这里分享你的经验,我们一起交流,共同进步!

有想法的开发者,欢迎添加管理员妹子微信(ID:ymj7777777),记得备注「面经」哦~



我们希望天下学AI者都有用武之地!

AI职通车还在成长中,期待你的加入~


扫码关注,AI职通车还在成长中,期待你的加入~


点击 阅读原文,查看更多 AI 岗位。