美研职规讲座 | 北美工程师的求职秘籍

3ba65528af1afa5906ffe61e780ec588.gif

来源:新东方美国研究生留学

3d6a15c779e21c78cdcdf255a72ef2e6.jpeg

姚导师,斯坦福大学统计专业研究生,本科毕业于浙江大学应用数学专业。曾荣获国家奖学金,浙江省优秀毕业生等荣誉称号。拥有多段项目经验,涉及领域包括机器学习、数据挖掘、人工神经网络等多个领域。目前就职于Google总部YouTube Ads部门,从事大数据算法的相关工作。

今天的讲座主要是分享作为一个工程师在北美求职过程需要注意哪些事情,主要会涉及到两个职位,一个是data scientist,一个是软件工程师,这些职位由于我都有涉及过,所以希望分享给大家并提供一些帮助和建议。

自我介绍

cee156ccb828561084b138ff9956db47.jpeg

我本科是浙江大学竺可桢学院数学系毕业的,后在斯坦福大学统计系攻读硕士,毕业之后就职于Google Mountain View总部Ads组,任Software Development Engineer。

求职期间曾获得Google, LinkedIn, Apple, Microsoft, Pinterest, Houzz, Adobe, WalmartLabs等公司的SWE/Data Scientist offer,这里面有比较好的大公司或者一些独角兽公司,背景还是比较全,各种类型的公司我基本都面试过。

Data Scientist 职位分析

11d94aa996d527ea29b8af2342b43b5e.jpeg

首先来讲讲Data Scientist这个职位的岗位类型,我会覆盖最偏Business的方面以及最偏Engineer方面的职位,这些职位主要涉及到三种分类,有些比较大的公司能够比较好地将数据分析岗位进行细致精确的分类,但是有些公司是中小型的公司,对专业岗位的分类不会特别细致,这时候就会需要去看具体的工作要求,一般从这些要求中你也大致分清楚属于这三类中的哪种。

 

一种是Data Analyst或者Business Analyst,这种职位是最偏Business的,要求你的沟通能力比较强,日常的工作就会是需要处理数据来为决策层提供一些商业上决策的依据。我个人理解这个工作的最大的要求就是要能够去tell a good story,虽然跟咨询的工作类似,但是比咨询的工作要求更hardcore。

 

第二种是Data Scientist,有些公司可能会叫Machine Learning DS,这其中又分为两种职位,一种是辅助型,一种是主力型。比如很多公司要做推荐系统,尤其是大公司,辅助型的人可能就是精通算法然后还需要经常读paper的那群人,为公司或者推荐系统提供更好的数据处理上的理论支持,主力型的人可能就是在写整个系统,考虑如何调用资源,但不一定非常地懂数学或者理论性的算法。这两种职位比第一种偏Business的职位来说,对沟通技能的要求没有那么高,主要还是从技术理解出发,要求比较强的统计能力,另一方面也会有一定的CS基础能力的要求。如果你既有统计基础看得懂paper,又能写得了system,那就是最受欢迎的求职者了。

 

最后一种是Data Engineer,三种职位类型中最偏系统的,有些职位其实跟统计没有太大的关系,会包含很多的CS方向内容,尤其是对于做Data infrastructure/tools的同学来说,基本是为有意向做纯CS的同学准备的。做Data pipeline的话,想做Data Science的同学还是可以考虑一下的。

SWE职位分析

4b2e995920d17e856dbe840175001846.jpeg

接下来讲一讲Software Engineer这个职位,它的范围是比Data Scientist更广,在美国基本就约等于码农,可以分为Software Engineer / Software Development Engineer / Software Reliability Engineer这三种。

 

但是如果按照Google的划分话,基本就分为Software Development Engineer和Software Reliability Engineer,Software Development Engineer基本是在写新的东西,Software Reliability Engineer则是保证现在的产品能正常运作的人,在运作过程中需要随时on call,这就是SRE的弊端,但是SRE的好处是因为随时on call所以假期会比较多。我个人觉得,Software Development Engineer的职业发展可能更好,毕竟每天都在学习新的知识。

 

下面我会主要介绍一下Software Development Engineer的分类。第一种是Infrastructure Engineer / Cloud Engineer: (Distributed) system programming, networking programming. 大公司需求多, Google/Amazon/Microsoft/Oracle/Yahoo,初创公司很少做Infrastructure,因为成本太高,所以你如果是面一个小公司的该岗位基本就会要求熟练使用某一个大公司的infrastructure。

 

第二种是Machine Learning Engineer,是现在最火的职位,大大小小的公司都在招,我大致分为以下三种:

  • ML infra team,主要涉及到machine learning的infrastructure: feature collection(都是需要是实时处理的), data pipeline, model caching, etc;

  • ML application team,把公司现有的问题抽象成ML的模型,选择已有的最好ML算法去解决: Model current problem and apply off-the-shelf ML algorithm;

  • ML algorithm: cutting-edge ML in industry. 大公司需求多, Google / Facebook / Pinterest,这种research team在公司里不会直接去触碰公司的产品,一般是发paper或是去申请专利等,还有就是拿去给研发产品的team去开发成实实在在的产品。如果你就是想专注在算法上,这种team很适合你,同时这种team的PhD比较多,所以你是PhD的话,这种team就会很适合你。

 

Full Stack Engineer / UX Engineer,有些公司会把职位分的更细,主要就是需要进行Web Development。这些职位各大公司都需要,一般倾向于有经验的求职者,这是因为前端开发的门槛比较低,所以如果你的经验比较浅的话竞争力就会比较弱。但是如果你是全栈工程师的话,可能竞争力就会大很多,尤其是你如果还懂一些算法的话就更加如虎添翼了。

 

App Engineer (iOS / Android): Not that much。因为这个类型我不是特别了解,所以没有办法给出更多建议,不过相对来说现在Machine Learning还是最好找工作的。

就业趋势

e5dc2a1ddff5bfa480101594f1aa771e.jpeg

然后我们来说一下北美的就业趋势,事实就是确实不及五年前火爆,五年前基本上只要你能跟理工科沾边,甚至哪怕你是文科生,只要会基础的算法题和计算机语言,做过一些项目或者实习,基本两轮面试之后就能拿到offer,现在肯定没有这么轻松了,但是SWE仍然是北美最好找工作的职位,各大公司还是在继续招人,职位数量在健康地增长。如果你只是想找个工作,恰巧又会一些coding,我建议还是找SWE的工作。

 

FLAAG (Facebook,Linkedin,Amazon,Apple,Google或者加N就是Netflix)每年仍稳定招人,而且基本都是全球招人,而中小型公司趋向于就近招人。这就建议大家,还是尽可能去大城市,如果你比较自信觉得自己拿到面试就能拿到offer的话,去地理位置偏一些的学校也没有问题,但是如果你不太确定的话,还是地理位置比较好的学校有优势。

 

需要有比较好的Education Background作为面试敲门砖,如果是还在申请的同学一定要好好申请,如果是大一大二的同学一定要好好学习申请到更好的学校。

 

最好能有较为过硬的Industry / Project经验,如果有时间尽可能去多积累经验,有非常好的经历去打动HR。

面试准备

143adf039a8b25d7dd23a7ce4f8eb47f.jpeg

第一是要注意自己的Education Background,这里面就包括你的学校背景以及一些你上过的校内校外的课程,刚刚在前面我也提到过,院校和相关的课程背景非常重要,另外有一些online的课程也可以多去学一学;

 

第二点是明确自己要做的岗位并积累相应经验。我建议同学只专注在一到两种职位上,太多的话容易每一个职位都不精通,在限定好范围之后,提前了解自己期望职位的相关要求,然后有针对性地去积累相关的基础或者进阶的经验,以下我罗列的不同职位比较重要的技能要求:

  • System Engineer: OS, Networking, Distributed System

  • ML Engineer: ML, Deep Learning, Recommendation System, Big Data Tool

  •  Full Stack Engineer: JavaScript, MEAN Stack

  •  Fulltime / Intern / Research / Intern

  •  Better be focused

 

另外就是还需要多去进行networking,内部推荐的成功率比你自己去投递职位要高很多。Networking / Build your profile: On Campus Event, LinkedIn, GitHub, Own Website

 

放在最后但是也非常重要的就是刷算法题练习:, LeetCode LintCode这两个用其中一个就行;sqlzoo,面试一般都会面到sql。

3a18382e55633a82db015144ef43e4e2.jpeg

  • 在面试的时候,问题会涉及到自我介绍、聊简历、算法题、General Technical Question这几个方面的问题;

  • 提前准备好自我介绍,并且熟悉简历上的任何一个字,千万不要问到你相关的经历答不上来;

  • 多与面试官交流,可以根据面试官的语言或者眼神的反应对自己的面试过程进行调整;

  • 不懂就问,不会就问。不论是对问题本身不懂,还是不知道问题怎么解决,都需要跟面试官问清楚;

  • 想好再说,面试官说完之后可以思考一两分钟,花时间想一个好的回答,比一个急急忙忙的错误回答要强;

  • 不会不说,不要去说自己不懂的东西,或者不懂装懂,以免给让自己直接面挂了。

 

祝大家在美国学习以及找工作顺利,早日找到自己称心如意的实习或者全职工作!

7b267cb0fb37e7f0ec0ada3dc228606c.gif

93547d599023f35578510e6d89d02dda.gif

发表评论

您的电子邮箱地址不会被公开。