来自北邮人的大牛校招准备经验分享:17届大牛学长分享:如何集齐BAT三家offer

17届大牛学长分享:如何集齐BAT三家offer


我是西安交大计算机科学与技术学院2017届的硕士研究生刘阳。在16年的校招大潮中,幸运地集齐了腾讯、百度、阿里的offer,最终选择了阿里的搜索事业部。回想起这些年种种往事,愚钝的自己像是一只不服输的蜗牛,踏踏实实的一步一步往上爬,等待阳光洒下的这一刻。其中的努力和收获自知,感慨万分。应师弟师妹建议,记录自己的种种经历和经验,希望能够给师弟师妹们带来帮助和启发。

1、打好基础是关键
我是本校保研上来的,但基础还是不够扎实。一方面因为没有经历考研过程,基础课都还给了老师,另一方面本科的编程语言课程和算法课程深度不够,不足以应对将来面对的问题。我在研一意识到这个问题后就急切的想制定计划。在研究历年各大公司招聘岗位之后,将开发岗位作为了自己的目标。当时的计划是先扎实语言基础,再学习开发(后来调整为机器学习)知识。
1.1关于语言基础
我是通过刷题来熟练编程和熟悉算法的。我强迫自己每日一简单题或者两三日一难题,保持写代码的手感。期间虽然断过几次,但仍收获颇丰。我主要刷了北大OJ(50题),leetcode(200题)和hihucoder(50题)上的题目。在初期,由于知识的欠缺我对题目并没有感觉,主要在理解别人的思路和学习别人的答案,每接触到一个不熟悉的算法就需要花功夫去进行理解,记忆和练习。比如我曾经用BFS处理一个图方面题目的时候频频超时,看了别人答案后才知道需要使用双向BFS,在理解别人巧妙之处后,连续两天多次写同一道题目,直到自己也可以快速流畅的码出一个双向BFS。在中后期,遇见会的题目我会通过计时强迫自己提高速度,遇见不会的题目在看完答案后会和以前题目做比较或者找同类型题目练习。在刷题的过程中,发现自己算法知识欠缺,所以通过PPT自学了算法分析课程(当初自己偷懒并没有选这门课);发现别人可以对STL库灵活运用而自己不行,所以阅读了《STL源码剖析》数次,从原理上学习和理解STL;发现自己对C++基础有很多模糊的地方,所以回到的《C++ Primer》去扎实基础;不过我最近从学弟学妹那看到阿里招聘团队官方出版的求职指导书籍《技术之瞳》,内含阿里历年校招笔试真题,并且由阮一峰、winter(常刷知乎的应该知道)等阿里大牛解析,在计算机原理、算法、前端、数据分析等方面都有涉及,可以清晰地看到阿里对人才考察的要点,对应对BAT的笔试非常有帮助(我那时为啥没有!)。
1.2关于后台开发知识
我之前没有相关实习经历,手边没有服务器,也不知道该如何进行实践,所以我先从基础课的复习开始。基础课主要包括网络原理,数据库应用和原理,操作系统原理等。平时除了翻翻书回忆以前学习的知识,无聊时还会进行发散联想。比如会思考一下unix的文件系统利用自己掌握的算法如何实现编程等。研一下结束的时候曾机缘巧合获得过腾讯的后台实习机会,虽然因为实验室安排最终没有去,但是为当时迷茫的我增加了不少信心。
1.3关于机器学习和数据挖掘
我开始准备机器学习的时候已经是研二下了,过程比较仓促。从吴恩达教授的网络公开课开始,在学习的过程中,尽力自己重复公式的手推过程。与此同时,每天随身带着李航博士的《统计学习方法》,有空了翻一翻进行辅助理解。随后,我学习了伯克利的Spark公开课的部分课程。整个过程缺少了时间的积累,不够扎实,但是开拓了视野,并为自己后来获得offer打下了基础。
2.动手实践不可缺
在打基础的同时,我主要通过自己找的项目和实验室项目来进行动手实践,这些项目经历为我获得offer助力不少。在分析问题和解决问题方面我本身有比较好的能力,这和我本科的经历有关。我从大一开始牺牲寒暑假投身数学建模培训和比赛,训练了我短时间处理问题的能力。本科三年级的编译器实验(用C++实现一个编译器)和组成原理实验(用VHDL实现一个CPU)耗费了我一个学期大多数夜晚,接着暑假浙大推免生夏令营中完成的项目移植工作(将MATLAB项目用C++实现)让我在陌生的环境中连续写了20天代码,这些都提升了我在专业方面的自信和处理问题的耐心。
2.1关于语言基础
我的实践是围绕源码进行的。在阅读完STL的源码剖析后,我在朋友的鼓励下,抽空实现了简化版的STL库。其中包括内存的申请和释放,迭代器的设计,vector,list,map等常用结构的设计。之后,我又尝试的读了leveldb等优秀项目的源码。通过源码阅读和自己实现功能,可以更透彻的理解所用之物。
2.2关于后台开发
缺少引路人,手头没有服务器,实验室工作安排紧张,这都限制了我进行完整项目的实践。唯一的一次实践是在研一暑假期间,我简单的用几个台式机搭建了集群环境,在上面利用nginx和hadoop实现了一些简单功能。这些虽然没有直接对我获得offer起到帮助,但在当时也是一个尝试吧。
2.3关于机器学习和数据挖掘,阿里天池的推荐算法比赛
因为我算法学习起步比较晚,时间紧张,所以只实现了两个项目。一个是阿里天池的推荐算法比赛,主要通过数据集预测用户购买情况。虽然没有好的名次,但是自己完整的走完了从问题分析,方案确定,编码实现和测试的工作,并且熟练了SQL语句。另一个是自动化生成文本的工作,从商品网页页面上抓取信息后,结合NLP算法提取有用信息生成商品摘要。这个项目的完成为自己投递算法岗位增添了信心,也对后来的几次面试起到的不小的帮助。
2.4关于实验室项目
硕士期间我在实验室完成了几个项目,分别与推荐系统,动作识别,图像识别三个方向有关。很幸运的是这些工作都是理论与实践结合的项目,他们拓宽了我的知识,提高了我解决问题的能力,并在后来为我的简历增色不少。
3.合理安排有保障
硕士期间时间还是蛮紧张的,研一需要上课,研二需要承担实验室的任务,如果再给自己分配有任务,那么压力确实不小,合理安排时间才能对自学提供保障。
研一我的日常主要是上课和学习顶会paper。平时时间比较固定,一般情况下把每天分成三份,一份上课,一份看论文,一份刷题。研一自己在工作准备方面进展缓慢,主要完成了语言基础方面的任务。
研二的时间基本在实验室度过,主要完成实验室的科研项目和工程项目。我尽量将一周的工作放在周一到周六,周日开黑桌游疯玩一天。工作日中,每天到达实验室先在纸上列出自己当日的计划(即要完成哪几件事情,分别需要完成到什么程度),贴在目光可及的地方提醒自己。接着分配当日需要完成的编程题目,以便自己在接下来的一天可以随时抽出时间思考(比如自己吃饭的时候)。然后白天主要完成实验室工作。午饭后和晚饭后的时间留给自己,先解决当日的题目,之后再阅读技术书籍进行学习和复习。研二每天的生活都安排的比较紧凑,周内经常会感受压力,但也完成了找工作前的主要准备工作。
4.笨鸟先飞最保险
我不是一个聪明的人,找工作时候发现自己最大的优势就是准备充足。所以我认为时间规划和分配还是比较重要的。我制定了计划,并且很早开始实施,在实施过程中又在动态的调整计划。我在研一上半学期期中的时候,制定了硕士期间自我学习计划。
计划1:研一课余时间通过刷题提升编程速度和算法能力,研二通过复习基础知识和实践更深一步的学习后台开发知识。在研一刷题期间,我意识到自己的语言基础有很多欠缺,所以在研一下半学期开始的时候,我又制定了一个提升语言基础知识的计划。
计划2:通过阅读C++相关名著来提升自己对C++的理解程度,这个过程和刷题过程同步进行。研一结束时,我的语言能力已经有了不少的提升。暑假期间,没有课程压力和实验室任务,我制定了20天左右的计划。
计划3:研一暑期学习和实践nginx和hadoop相关知识。等到研二到来,我开始系统的复习了本科的基础课程。期间我在实验室承担了较重的任务,复习计划推进缓慢,不过好在自己坚持了下来,在复习的同时,我没有停止刷题,也在抽空不断回看已经阅读过的C++名著。研二上半学期结束的时候,我开始制定的计划已经完成了大半。当时因为实验室项目的关系,我对机器学习和数据挖掘产生了浓厚的兴趣,所以在研二上结束的时候制定了算法相关的学习计划。
计划4:以研二下半学期的其中为分界点,分界点之前学习机器学习的基础知识,分界点之后找项目进行实践。由于自己的相关基础比较薄弱,这个计划进行的磕磕绊绊,但好在找工作之前完成了,为接下来我获得这份工作提供了不小的帮助。
结束语
因为前期的准备比较充分,找工作过程比较顺利。拿到了BAT三家的offer,最终选择了阿里。2017年已经到来,建议有想法的师弟师妹能够抓住这个寒假做一些准备,有机会出去实习的师弟师妹能够先抓住下学期各互联网公司在3月份春季实习生招聘,提前获得offer。如果对阿里等国内大厂感兴趣,也推荐寒假抓紧时间刷一下《技术之瞳》。
祝学弟学妹们都能拿到满意的offer!
  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值