"); //-->
想要上岸 就找上岸
在疫情的影响下,过去的一年对于身处北美的New Grad求职者们而言无疑充满了坎坷与挑战。我将分享自己过去一年里的经历与心路历程。希望大家也能通过我的经历让将来的自己少走弯路、未雨绸缪,趁着招聘期的回暖趋势,提前做足准备,顺顺利利上岸。
接下来我将从职业规划/面试准备/时间线/心路历程等四个方面来分享自己的求职经历。
01
职业规划a. 为什么以DS作为自己的求职目标?
其实在开始投DS相关工作之前,我自己也做了不少search,读到了很多热门的所谓的DS劝退帖 ,相信大家或多或少也有看到过一些。
那么,为什么我还是选择了优先寻找DS工作呢?
首先,个人背景。我本科是econ专业,没有很系统地学习过CS知识,最难的CS课也就学到了本科算法,简历上完全没有能看的CS项目,所以从零开始找SDE会有很大的gap要去追赶弥补;但相对地,我的计量经济、统计学概率论相关的知识会牢靠一些,也学习过一些machine learning,已经有了很多前期投入,稍微修修改改简历就可以尝试一下DS了。
第二点,根据以往课堂project的经验。我对于DS/DA这个方向有一定的热情,不管是deploy一个简单的model还是通过做visualization来讲好一个故事,做的事情会让我比较有成就感。即使是清理数据这一类比较琐碎的工作,如果我看着手头的dataframe质量一步步变高,也会很开心。
第三点,从长远角度,我对自己比较模糊的预判是想要往M岗转 。
所以根据上述几点,给自己草草制定了一下计划,如果前五个月DS求职没有什么进展,那再铁了心转投sde的怀抱。再不济也能把leetcode的easy题给刷好了,不至于浪费太多时间。
b、BA track和ML track我是怎么选择的?
定下优先找DS的基调之后,我会发现具体工作是不能光看title的,一定要细读jd, 大致上可以分为以DA/BA为主的BA track,他们有的title叫DS,有的叫DA/BI/product analyst,这一类岗位强调统计知识的应用,需要比较强的product sense和实验设计。FB的DS, analytics就属于这个分类。
另一个则是ML track,会更加强调ML, DL的经验和能力,对coding的要求毫无疑问要高一档,甚至不少公司是把MLE放在SDE下面来招人的。这一类也有不少会要求有PhD或者硕士+多年工作经验,比如Amazon的applied scientist和Google的data scientist。
我观察下来,对于硕士应届生工作岗位而言,BA track的opening会多一些。我的策略是两边都投,不放弃任意一边的机会,但是主攻BA track。题外话,有些startup招DS会要求全才什么都会,stats + ML + NLP.... 本质上就是这两个track的结合。投简历时,可以稍微修改一下,准备两个版本的简历来应对。一些project经历对申请这两个track的DS都有帮助,比如说一个比较完整的ml项目申这些都能用。
前面有说到DS的面试体系会相对杂乱一点、经常会有些不按常理出牌的考官,所以我不建议走了BA就完全不看ml,或者走了ml track就完全不看统计,因为可能你就会在某个环节遇到了另一个track的题目。比如我有朋友去面JPM的DS,本以为是modeling为主,结果反而终面问了些distribution和贝叶斯的题目。
ML、BA双轨制,针对不同的职业发展路径
Case Study面试套路模板背诵
课上理论实践——每节课都用真题,模拟面试般的体验
课下高频题巩固,配合30+小时的老师录制的独家视频、项目、和预习复习材料
大数据级别的设计与分析、机器学习+深度学习项目
内部职位推荐网络
02
面试准备
a. 有哪些必不可少的学习资料?
FB的DS面试主要侧重在四个环节,缺一不可。平心而论,面的问题都不算刁钻,但是他们不希望面试者有任何一个明显的短板。具体的应试上岸算法的DS小班课里全都会有cover到,这里我就仅仅是罗列出来自己的准备资料,仅供大家参考。
SQL:
Mode SQL tutorial: FB官方推荐教学网站,界面感人,上手迅速
论坛面经:各大论坛有大量FB SQL面经,如果时间有限,一个个照着刷过来即可
LeetCode: 题目不多,如果时间有限,遇到window function的题可以选择略过
W3School: 参考用的工具书网站
Stats:
Khan Academy: 入门统计视频。倍速观看,用于复习。
Brilliant: 统计刷题网站,例子比较像应用题,贴近面试。
论坛面经:略
Seeing theory: 我没有用过,但是看到很多人强推,据说可视化做得非常好,便于理解统计理论。
Product case:
Stellapeers: FB推荐的产品学习网站,对学习metrics很有帮助,有些问题比较偏PM,需要自己做一定筛选
Udacity AB testing: Google做的最优质的AB testing入门课,没有之一
Data-Informed Product Building:据说是产品面试圣经,我只翻了几个看看,但是如果有时间系统学习,一定会很有帮助
Data case:
Datamasked: 有40多题数据相关的case题目,讨论了各种数据相关的问题,非常实战,涵盖了novelty effect, network effect等问题,对product sense也很有帮助,缺点是价格比较贵
Medium blog: 有很多tech公司的blog, 也有ml design相关的case问题,缺点是需要自己花很多时间去筛选
b、不同材料的学习投入比重我是如何分配的?
学习重点的分配完完全全是因人而异的,对于我的情况来讲,难点是:product case > data case > SQL > Stats。相信对于应届毕业生而言情况都会比较类似,因为我们缺少相关的工作经验,但是面试时候又需要很强的产品直觉,所以难免需要在产品问题的准备上多花时间,平日里有事没事就去看看stellapeers,让自己保持住一个状态很重要。
data case我认为也是一个难点,因为这一轮的面试官似乎往往级别会高一点(也可能就是我的正巧遇到了级别高一点的),问到一些ML design的问题自由度很高,会根据回答继续细挖,并且夹杂着product sense考核。
在阅读case题目答案的时候,不要满足于答案,因为面试官往往也听到了很多雷同的答案,会期待更多更新鲜的想法。例如,有一个问题是“如何判断两个FB用户是不是最要好的朋友”。书上可能列举了几种measure closeness的方法,但面试官可能就会不停地询问是否还有别的方法。与此同时,你可能还会被问到,为什么会需要launch这个功能,能给FB带来什么好处之类的product问题。
SQL讲道理语法什么都不是很难,最难的题用到一个subquery WITH t1 AS(...) 就能搞定,但是平时一定要常刷题保持手感,我看到地里好多人反映都是轻视了SQL,没能够快速理解题意,导致白板面试的时候脑子空白了5分钟,最后就来不及写完了,尤其是video chat的时候你没有思路的话,场面会一度十分尴尬...... 其实这一轮是可以选择用python (pandas)或者R (dplyr)来考的,但是出题逻辑是SQL做题最直观,还是建议选用SQL。
统计题目的话 bayes, binomial distribution之类的大一大二统计知识是侧重点,一半题目都会是排列组合、条件概率。
03
时间线
我是在9月初入学master, 大约入学前一个月,即8月左右开始寻觅朋友修改简历,开始内推。我申请的时候还没有OA的要求,但听说后来就开始发放OA了。
8月底填写了一份内推问卷调查,9月初收到了hr的initial screening call,9月中旬参加了video面试(一轮SQL+一轮product),最后10月中旬参加了on site (四个环节,每个一轮,疫情期间改为了video面)。
总体上的时间是比较自由的,完全取决于你想什么时间参加下一轮面试,如果过程中准备时间不够,可以多次和recruiter要求延期。但是opening开放的窗口比较短暂,所以我的建议是哪怕题目还不熟悉,只要有了一份qualified的简历,就先可以开始内推申请起来,随后在面试的过程当中再不断准备。
FB新添加的OA也从侧面说明,应届生似乎越来越有供大于求的趋势,所以真的很有必要早点准备。哪怕是没时间准备,过了initial screening随意延期好了,我中途也延了两周,但是错过投递简历的时间窗口就得不偿失了。
此外,我和一些学弟学妹们有聊到,他们反映初来乍到,同时要兼顾学业和面试非常地有压力。
我个人的想法是,对于不是学有余力的同学来讲,重点一定是放在求职上会比较好,学业只要能顺利毕业就行,哪怕是master degree拿了4.0 也不会有很多人care,面试期间的课内学习和课外学习的时间分配至少要在1:2这样。
虽然今天我们的topic是FB的DS,但是你在准备面试期间,平均总是在一段时间内准备2-3家公司的面试的。尤其是第一学期,课业可能还没有特别难,更需要多花时间在面试上,这样一切顺利的话,上岸以后再来补救课业也很稳妥。
如果你现在还没有入学,那入学前的这几个月简直是准备面试、丰富简历的黄金时期,只要这个暑假克制自己保持学习做点project,一入学的同时就开始申请summer intern/或者直接申请全职就能水到渠成。
如果你已经临近毕业,也不需要慌张,可以通过参加上岸的DS小班完善简历,冲刺掌握面试技巧,抓住每一个机会。
04
心路历程
回首求职路,我发觉还是有很多方面可以去做到更好的,大约有如下这三点。
第一点,我花了太多的时间在udacity的ab testing课程上。我搜刮资料时候发现很多同学推荐这门课程,因此也认认真真从头到尾看了两边,可能花了将近一整周的时间,这在面试期间是一段不小的投入,当然也学到了不少内容。可是面试期间几乎没有遇到ab testing的题目,遇到能和ab testing有所关联的,面试官也有很刻意地避免聊ab testing。之后我去网上看了看近期面经,确实考核实验设计的频率较之从前有大幅减少,也看到了别的同学说“面试官不想聊ab testing”这样的评论。我不确定这些样本是否具有代表性、是否现在面试考核内容的趋势有所改变,但是在当时那个情况下,我也许看看别人的课程笔记迅速了解一下ab testing会是一个更好的选择,而不是选择看视频上一整门课。
第二点,投入了很多不必要的时间在leetcode刷题上。我一度以为对于DS一定要把leetcode的easy题目全部搞定,所以暑假期间花了很长时间用python和Java来做算法题。有一说一,这个倒是对我的python水平有了一定的帮助,但是现在看来我申请过的这些BA track没有一个考核了算法题目,只有一些顺带申请的data engineer考了算法。如果我能够更有针对性地提前了解一下DS的OA,我一定会适度减少刷题的时间,用来补充其他短版。刷题本身没毛病,但是不可迷信、盲目地刷题。
第三点,忽略了面经的重要性。我面试的时候,至少遇到了四题在面经中瞥到过的题目。以此推断,FB的DS题库并不是很大, 甚至可能可以是暴力穷尽的。那一天,我每次被问到面经题时,内心都会不禁涌起一种懊悔感,“哎呀,早知道被问这题,当初何不把网上大佬们的解答都仔细看看,集思广益呢”。这种懊悔感在我最后几天等待面试结果期间愈发强烈,试想我都中了那么多题了,如果仅仅因为不够重视面经最后给面挂的话,得多难受。如果让我重新经历一遍FB的面试,在最后的几天里,我一定会把重点转到面经上面,把每一道高频题目翻来覆去地花式操练。
关于疫情期间的注意事项,这里我想重点讲一个和求职不那么相关的题外话。那就是,无论是CPT和OPT千万千万要早做打算。
一方面是USCIS效率低下,另一方面有的opt是从学校DSO寄出来的,一旦出什么问题更正的材料寄去学校再寄回来前后又是10天时间。我当时就是因为想着已经有了工作,松懈了一下拖延到了10月底才寄出,谁知道最后竟然花了5个半月才收到EAD卡,defer了好几个月的入职时间,四舍五入损失一大笔。我也听说一些最近求职的朋友,就是因为手头没有EAD卡,公司卡着offer。更有甚者,因为EAD卡到得晚了,中小型的公司直接手撕了offer,得在毕业后重新开始面试找工作。
经历了这轮波折,我才理解为什么大家都说求职就像打怪升级一样,不到最后上岸不能喘息,疫情期间更是要格外重视这些身份相关的事情。也希望大家每一步都早一点规划,每一步小心翼翼,每一步也走得更加顺利。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。