2017年8月,来美一周年之际,回头看,第一年研究生生活收获颇丰。在学校遇到了负责任的教授和靠谱的同学,一起做了很多有意思的项目,课余时间粗略地环美旅行了一圈,领略了鬼斧神工的自然和纸醉金迷的都市,当然最开心的还是拿到了AT&T的summer intern。一路的学习和实习都得到了太多人的指点和帮助,现在我也想把自己的一点心得体会跟大家分享。



 

学校和学习



我现在在AT&T的big data team做优化方面的实习,在工业界中认识到了big data的巨大价值和光明前景,明白了与其说big data是一种技术,不如说是一种解决问题的思路和平台。可惜的是目前北美的学校很少开设big data的项目,更多的是computer science或者management information system下的一个track,甚至很多连track都都没有,只能通过选课的偏重来强化自己对于big data的学习。


关于我所在的圣路易斯华盛顿大学,我现在所读的专业是information systems项目下的big data track。WUSTL的 Information Systems项目隶属于Sever Institute,借鉴了CMU的王牌专业MIS的模式,开设计算机课程和商科课程,且选课自由。项目共有两个方向,大数据信息安全,我们班所有中国人都选择了big data方向。这个项目比较新,我们是第三届学生。平均每届招20+人,因为我们项目对转专业非常友好,所以大家背景比较多样,有计算机科学,电子信息科学,地理信息科学等。申请的话,托福100 gre 320应该是基本要求,但是也没有硬性要求。学长学姐以及我的同学们,本科院校跨度比较大,但是以985 211为主 。不过我们项目从今年开始合并到EE专业了,所以录取要求可能有变,以上概况都仅供参考。


当初选择我们学校的主要原因是选课比较自由,一方面是全校任意选修课,可以选computer science,information science,statistics或者其他感兴趣的课程;另一方面华大没有对于先修课程的硬性要求,这样就可以根据自己的实力和兴趣选课。这一年的学习中我发现华大的课业负担很大,需要一段时间来适应,这也让我明白选课前向学长学姐请教,跟advisor交流,还有合理安排每学期的选课计划都很重要。而且各位学弟学妹在拿到学校的offer以后,可以多跟小米邮件交流,多看看学校的官网,了解学校的课程设置,register policy和其他规定,方便入学以后事半功倍。


再来分享一下这一年我的big data学习之路吧。16 fall刚入学的时候,我机缘巧合接触到了推荐系统这个话题,觉得很感兴趣,就做了几个简单的项目,然后选了学校的cloud computing with big data application课程,在完成assignment,project和阅读相关文献资料的过程中,对开源框架、工具,主要是big data的思维模式有了深入的了解。除此之外,我发现学习big data本身的知识是远远不够的,数据处理、模型优化等都需要大量的数学知识和机器学习相关的知识。所以我也选了很多artificial intelligence,machine learning,deep learning和数学课程 。除了理论知识之外,我觉得项目经验也很重要,在此期间我知道了kaggle这个平台,做了一些基础的比赛,也看了很多优秀比赛团队的开源代码和报告,这个过程对于了解完成的数据处理分析流程起着至关重要的作用。


 

实习和工作



除了学校的学习之外,找实习也是我这一年学习生涯的重要部分,相信也是很多学弟学妹关心的话题。在聊心得之前,我们先来看一下公司的招聘流程:

Step1 公司审核的第一步就是筛选简历,考核申请者的简历是否match相应的岗位,是否满足公司招聘的要求。


Step2 通过简历关后,很多公司为了节约招聘成本,会先发一轮或者两轮在线测评,限时完成,来考察面试者的能力,就是我们常说的OA。OA以算法题为主,也会有逻辑题、debug或者性格测试等。这部分的准备主要看面经,很多公司的面经题都不会改的,基本都是原题。


Step3 如果OA成绩良好,很快就会收到公司的电话面试邀请,一般用skype或者电话。每个公司的电面两轮到五轮不等,特殊情况下可能会有加面。需要注意的是,除了technical面试之外,还会有一轮behavoir interview,主要是hr打电话来聊一下简历上面的项目、技能之类的东西,也会问问你对于公司的了解程度,以及自己的定位,还有一些类似于“五年后你会做什么”之类的问题,这轮面试也很重要。





接着来聊一下我觉得在每一个环节中值得注意的部分:

简历中最主要的模块是实习经历项目经历技能GPA (排名分先后),当然我准备的是一份比较普遍的简历,如果你有research经历、发表的文章,或者很重要的奖项,可以等价替换掉其中任何一项的。


先说说实习经历。这个主要在找全职的过程中会非常有用,因为HR会默认工业经验更有含金量,事实上在我实习的过程中,包括听很多在别的公司实习的朋友聊起,都觉得工业界的经验确实要比学校的项目经验重要很多,一来工业界开发要用到很多开发工具和开发系统,二来课程项目都做了最严格的简化,基本算是无菌环境,而工业界的项目则更复杂,有挑战性的多。关于实习的含金量,一般来讲是美国大公司﹥美国小公司﹥中国大公司﹥中国小公司。我个人建议,能找到美国的实习就一定不要找国内的,因为美国这边的公司对于国内实习经历的认可度还不是很高。举个例子,三月份我拿到了AT&T 和 BAT某公司的实习纠结去哪个的时候,一位amazon在职的学长跟我说“你问问美国人几个听说过xxx的”。


其次简历上的项目经历也值得反复修改,不断完善。对于计算机相关岗位来讲,说一千句不如一个项目来的有说服力,所以在选课的时候,要尽量选有final project的课程,一方面可以填充简历,另一方面是很好的工程经验。如果简历上的项目不足,又刚好选不到出项目的在校课程,可以选择一些网课,比如说coursera,udacity或者udemy,都有很多类似的项目课程。对于写在简历上的项目,要出彩,而且对于每一个item都要非常懂,否则面试时如果被问到了又说不出所以然,就会很麻烦。顺便说一下,如果想找big data的工作,最好要有相关的项目在简历上,因为big data算是细分的track,跟普通的软件工程师还是有一些区别的。


除了实打实的实习经历和项目经历之外,写在简历上的技能也是hr会关心的部分,计算机语言、开发工具、开源框架、数学基础等,都可以算作技能,但是同样需要注意的是,每一个痘一定要是真正会的,因为面试很可能会被问到,如果不会的话,是很有可能直接挂掉的。

GPA好像是中国学生最在乎的part,但是在找工作的过程中,其实GPA相对来讲并没有那么重要,只有少数的几个公司卡GPA,否则的话,3.5以上是绝对不会减分的。

除了这些部分之外,你可能会说,如果你的学校不是名校怎么办?据我所知大部分大公司是不在乎学校的,所谓“英雄不问出处”,而相比之下,一些初创公司反而会在意背景。


当简历的内容写好以后,还有很多别的的东西需要调整。格式、语法、排版、平衡性等问题都对简历的成功与否起着至关重要的作用,也就是简历的可读性,换言之,如果拿到你简历的hr都没有兴趣读完,更遑论从中发掘到你的潜力了。所以我觉得一份好的简历一定要注意,语法正确、叙述风格统一、重点突出、格式合理、排版整洁,还有就是各个部分的平衡性要好。

简历完成后可以找别人帮改,也可以找学校的career center预约修改。







当我们手握一份优秀的简历之后,如何用它敲开公司的大门就成为了下一阶段的重要目标。首先,我们如何凭借这份简历拿面试资格呢?

总的来讲有两种途径,第一种就是找内推,内推的简历会放进公司的内推简历池里,这样被看到的机率会大大增加。找内推效率最高的是平台是career fair,其实严格来讲career fair不算是内推,但是跟内推的效果相似,甚至效果更佳。所以学校career fair的时候一定要穿的正儿八经地去推销自己,公司能来就说明对你们学校的人才是认可的,所以拿到面试的几率也会大很多,而且很多公司会在career fair的周末进行on campus面试,这种面试机会也是一定要把握的。


除了career fair,还要在linkedin上找到各种校友资源,请他们帮忙内推,或者可以直接联系recruiter,说明自己的背景和求职方向。除了linkedin,还有其他平台会不定期有人发内推消息,比如说一亩三分地。


还有很多的小公司可能内推不是很方便找,可以直接海投。这些公司的信息可以在glassdoor上或者indeed上找到。





在接下来的准备面试的环节,我重点做了这些工作:

刷题和基础知识

美国的公司面试主要针对能力的考察,不会假设你会很多特殊的算法,所以难题常有,怪题不多,关键是要好好刷leetcode,熟悉常用的数据结构与算法,还有常见的题目讨论。关于怎么刷题,各种论坛上的经验帖,总结帖有很多,我在这里就不赘述了,有兴趣的朋友可以去看一下。除了对于算法的考察之外,Big data面试问题涵盖面比较广,系统设计,机器学习算法,Hadoop等开源框架和工具,统计知识,数据库知识等都会被问到,平时一定要注意积累。


看面经

一亩三分地还有glassdoor上有很多公司常见问题的总结,在拿到面试之后一定要注意收集整理。面经的科学打开方式一定要注意两方面的内容,一部分是常考的题目,要确保自己可以在规定时间内解决这些问题,另一部分是看公司面试的风格,知道要避开哪些雷区。


非常熟悉简历

拿到面试之后一定要把简历的内容梳理一下,可以适当写一些文字性的东西,帮助自己明确细节,避免面试的时候紧张,大脑一片空白。



口语

一定要在面试前反复,跟小伙伴一起mock interview。当然也要多面试,拿小公司练手,慢慢就知道面试的常见套路了,说话也不会紧张。


除此之外,关于面试,我觉得有两个事情是一定要清楚的:

1. timeline。一定要在刚入学就开始收集相关信息,准备实习,不要觉得时间还早。

2. 心态要好,一方面,面挂十家公司不算多,另一方面,海投的回复率很低,石沉大海是常态。

说了这么多,我还想跟大家分享一下自己对于big data求职现状的一些总结。

首先,big data的应用有很多,例如推荐系统、公司内部优化工具等,而且不仅仅在互联网行业,它在医疗、金融、教育等行业也有着广泛的影响,这给转专业的同学提供了很好的机会,可以根据自己的背景选择最适合的行业。相较于传统的软件工程师来讲,big data engineer的需求呈上升趋势,但是绝对需求量仍然较小,所以相对来说实习和工作都更难找。在面试过程中,除了基本的算法题之外,big data engineer会涉及到大量的系统设计题和开源框架的应用,所以平时要多积累相关知识。在找各个公司opening position的时候,要注意big data engineer的titel五花八门,甚至有些就叫software engineer,所以一定要耐心地根据职位要求精心甄别。

这个夏天在AT&T实习的三个月学到了很多东西,工业界的开发工具跟学校用的有很大的差别,项目也复杂的多,所以把握机会接触不同的平台和工具会有很大的收获。在纯英文的环境中工作,相比于技术,对于中国学生来说,更大的挑战可能是一些“软实力”的部分。比如说如何提问,如何解析mentor和同事的解答,如何充分的表达自己,这些都会让我们的工作事半功倍,也能在交流的过程中让mentor加深对你的了解。我们实习会有两次presentation,在准备的过程中会发现美国人和印度人对于presentation的重视,以及presentation的能力都值得称赞,我们有时候会觉得,作为技术人才,领导力不重要,但是在工作的过程中,恰恰是这些展示自我的部分将大家区分开。在实习快结束的时候一定要积极去跟mentor或者manager聊return offer的事情,如果自己组没有headcount的话,就要去跟别的组networking,找到有budget的组面试。

说了这么多,也算是把自己这一年的心得体会经验教训总结的差不多了,最后也希望学弟学妹都能找到心仪的实习和工作。