找工log
Contents
今天是二月份的第一天,周五,很冷。帆哥回家过年去了,我特别羡慕他;陶总在我旁边为去加州onsite准备ppt,他特别认真;但是我还在因为不能回家过年&现在快晚上十一点半了有点学不进去,所以就准备打开22天没有更新了的blog repo,写点东西。
写这样一个blog,除了对前一个月的找工生活做一个总结外,也是为了之后自己回顾起来方便,重新准备各种各样的知识点。
简历投递
众所周知,DS岗位的需求是远不如SDE岗位多的,我从01/06/19改完简历后正式开始投递简历,前三天在电脑前边看马男波杰克边投,投的有130+家企业,划分一下分别是:
- handshake: 78
- angellist: 40
- linkedin: 12
- Others:
- DSI & QMSS & STATS & IEOR 来自校友或者每周邮件的leads: 4
- 后续有不少猎头联系,聊起来的约有十来个吧
对于简历投递,我觉得我们系有一个Yang Hong学长的帖子 Link 写的特别好,虽然我没有完全按照上面的做,但是他的思路真的是非常全面而靠谱的。对于这个帖子的食用方法,我认为应该是这样:
- 结合自己和身边人的情况,看看自己的简历在你所感兴趣的领域和方向上够不够强(市场是检验产品好坏的唯一标准),够强就直接投吧。比如说通过看陶总的profile Link,我就发现了好几处自己简历上的没写好的地方,以及不足的地方(没有对比就没有伤害)。因为我是一直对CV,无人车,DRL这几块比较感兴趣,但是其实去投Uber,pony这些公司一开始的效果非常差,这个时候就应该好好学习沉淀一下再去投了。
- 利用Yang Hong学长帖子中的section2 [简历小课堂2:Resume的匹配度]的思路,好好完善一下自己的简历,不会的赶紧去补,比如我之前完全没有碰过causal inference或者abtest,都是在前面半个月补的
- 认认真真的花个一个小时build自己的linkedin profile,如果之前写好了就花个十几分钟想想怎么改进,猎头一般是通过linkedin的profile水平来衡量你值不值得去联系,所以linkedin profile弄的很漂亮会很有用的
然后投简历而言,我觉得最大的感受是,对于我而言,还是handshake最靠谱,我这一个月内loop by loop的有十三个面试,其中有十个来源于handshake,两个来源于猎头,一个来源于DSI career的邮件。至于angellist或者Linkedin career通道进去的投递,一个面试都没有。
面试和面试准备
DS面试可以考的很广,大家都是做这个领域的人,我也不想当复读机复读网上各种各样帖子的具体内容,无非就是coding, ML, DL, SQL, distributed system, product, business 等等等等,如果刚刚进来的小学弟小学妹或者对此岗位感兴趣但是了解不多的朋友们可以看这一个一亩三分地帖子 link
简历上的项目
我觉得这个部分个体差异挺大的,所以我想启蒙和加强两个方便来谈。
启蒙
真正出彩的DS项目并不是简单的从网上下载几个股票数据,然后跑个regression就可以了的。对于我而言,DS的启蒙来源于我来哥大的第一个学期坚持旁听完的一门课,作为本section的绝对重点,我决定加粗显示:GR5243 Applied Data Science
为什么说这个课好呢?
- Prof.Zheng的教案准备的超级用心,超级structured,超级赞,超级赞,超级赞!(重要的事情说三遍,如果没有时间或者没有选上,也可以自己跟着听,跟着做,把自己锻炼成一支队伍)
- 对于一个对DS没有概念的人而言,ADS这门课可以带你快速过一下DS常见的任务,以及具体的解决方法
- 对于一个没有写过R的人来说,通过老师带,看前人代码,团队合作这三板斧,可以让你快速掌握R,并且掌握用R写出一个有意思的东西的成就感
- 对于一个刚刚来哥大,表面平静但是内心有点慌的人来说,这个课可以让你迅速get socialized, get friends, get insights.
- 对于一个对DS项目流程和组织不了解的人,可以让你逐渐学会如何lead一个DS项目,如何分工,如何写pipeline,如何和队友协同合作优化DS的每一环节
- 对于之前学CS或者做过DS实习的大佬,这个课同样有机会让你在某个领域深挖下去,只要你想,no limited for those well-designed projects.
进阶
进阶而言,就是努力去找实习,找校内老师做项目,最后再到找全职。我可以非常肯定的说,学校的机会多如牛毛。我想重点强调一下学校的项目的好处和吸引力:学校的internship有那种广而告之的项目比如Prof.Zheng带头发起的DSI-scholar program,CBS那边bar相当高的暑期科研项目;也有那种推广做的一般,招一两个人干活,所以需要自己去发现的opportunity。在学校做的好处一方面是不需要用OPT的时间,另外一方面是可以和老师多交流,对个人挺有帮助的。
实习
这个。。。这个我准备之后开另外一个帖子写好了,如果这个帖子反馈不错,有学弟学妹想看的话。
针对简历的准备
在如何针对简历上的项目准备面试上,我觉得仁者见仁,智者见智吧,每个人都有自己不同的思路。我就简历说一下我的做法:因为我的简历上的项目比较偏DL和DRL,同时实习也都算是探索实验性的居多,所以我准备面试的时候直接打印出当年做东西的时候参考的论文,从high-level到details的东西都整理好写在本子上。对于detail部分,我会detail到论文的原理,formula,相似技术的优劣比较,最后再把代码整理好review一遍,基本简历上项目的细节就都了解,可以有东西和面试官聊了。想了解具体是什么项目的朋友可以参见我的linkedin profile link 没有加我的linkedin好友的朋友们,求加一下我哦,先在这里谢过了!
针对general knowledge的准备:
这里面的东西很多,我就取其中我觉得对我最有帮助的部分列一下:
- Stats
作为一个统计系的学生,有非常大的概率在DS面试中会被问到统计问题,包括probability,inference,linear regression等等。有些公司highly evaluate这个部分,我自己面过的公司中,比较突出这个部分,专门用半个小时来考查这部分的有Disney,Upstart, indeed.com。尤其是Disney,我去onsite的时候,一共五轮,面了四轮linear regression,各种问题都问完了,涉及还面了一些更基础的数学概念,包括函数可微,可导的定义,function convergence的定义。
- ML
如果喜欢编程而且写py写的快的同学可以考虑自己实现一遍基本的ML算法,会让你对于ML的认识更上一层楼。具体参见:
- details repos:
- sklearn源码
- 我的ML实现 link ,不算clean code,求轻喷,也可以star一下,我保证三月底之前会把这个repo的代码clean organize好
- Google: xxx from scratch python,比如,random forest from scratch python,会有海量的blog写,水平层次不齐,不过多看几个肯定能找到很靠谱的
为什么强调这一点呢,因为我自己面到过,题目是在一个小时之内写一个EM的求解器,求解GMM(gaussian mixsure model)。当时花了一个小时多几分钟,写出来的code可以直接能解cluster,速度也不慢,所以面试官就当场邀请我去加州onsite了。要不是之前Linxi Liu老师的GR5241 Statistical Machine Learning课上实现过EM算法,我肯定是过不了的。强推GR5241这门课,好好上,真的可以学不少东西的。
- 算法
这个部分就不得不又提到陶总 Link ,这个寒假他组的局约我们几个同学一起刷题,讨论题目,讨论OA,还是非常感谢他喊我去图书馆的。另外他的算法课是A+,同为第一次学算法的人,我们当时四个人一起上课交流的学习小组中,他的分是最高的(有多高呢。。。就是期中100分的卷子,平均分三十来分,陶总作为班级第一考到了73分)。
这里也不得不强推一下algorithm这门课,Prof. Drinea link 的课讲的真的不错,第一次学算法的同学普遍觉得作业也很有(nan)意(ku)思(le),很锻炼思维,可以为日后的刷题打下坚实的理论基础。她的PPT做的也很不错,我和帆哥准备面试的时候,也会把PPT翻出来review一遍,感觉很不错。
同时配合第一条食用,你就觉得哇,ML好好玩,比如思路最好理解的KNN,也可以利用特定的数据结构配合算法来加速计算,比如k-d tree, ball-tree。 link
另外如果是用py刷题,我强推一本书 Problem Solving with Algorithms and Data Structures using Python。他的名字已经够直白了,内容也不算深,快速入门还可以的
- DL
对于DL,我的建议是不要畏难,先从简单的书看起,比如 deep learning with python,这本书主要是基于keras的high-level API。可以让你先把DL的model玩起来。
如果是为了长期学习,还是推荐看一遍大神的 Deep Learning。我很多DL的问题都是和朱宏博同学交流,他的DL和DRL比我厉害,收获斐然。所以我觉得找一个大腿经常一起交流也是件很有用的事情。
最后一点就是勤读论文,如果想做DL或者DRL这一块的话,我个人认为这个是必须的,也是可以提升自己功力的。每周读几个三四篇或者更多(对于我这种开始涉及DL领域一年不到的萌新而言,我觉得一周十几篇都不够,因为经典的最新的不同领域的各种文章,小到优化器Adam的原理,大到framework诸如BERT,GNN,想成为跟上这个领域的脚步需要了解掌握的多了去了),就当读小说,做做笔记,收获斐然。
读paper一方面是从本科research过程中养成的习惯;另外一方面我觉得读paper一定程度上等价于和大牛面对面交流想法;最后,我认为读paper过程中,可以去叹服欣赏感受大牛们在这个领域不断推陈出新的效率和头脑;欣赏别人的智慧,同时激发自己的思考。每每读到一篇大神的paper(其实这种机会的比例不是很大,灌水文其实也挺多的),都会觉得心驰神往,心里默默向在扩展人类已知知识的边界的人致敬。
- Others:
- ABtest
本来没啥好继续写了的,然后发现前段时间面wayfair DS的时候准备的AB test笔记,感觉很有用,所以专门提一下。强推Udacity的ABtest课 link ,很详尽,我当时花了17个小时刷了一遍,收获斐然。 - distributed system
这个里面水挺深的,我认为除了那几篇经典论文外,还有像OS,DB这种基础知识都弄的差不多了才向外promote自己说I m familiar with the distributed systems。个人认为,结合学习难度以及实用层度,可以按照这个顺序学:
Hive/Pig –> PySpark –> Spark –> Hadoop
因为我在这方面也学的不深,主要是通过DSI的那门Computer system for data science初浅的了解了一些。希望有大佬可以提点我和我交流,日后要是我有更多心得也会更新这部分
- ABtest
一些坑
最后想提一些我踩过的坑,希望同学朋友们不会碰到:
- 小公司急招的情况,面试不要拖,直接约明天面,拖就没有了
- 简历上的项目掌握的越深越好,不要因为当时只用了相对简单的tech stack就觉得对于这个问题,就不用掌握最新的tech stack & solution了。比如面WalmartLab的时候,我被问到了简历上的基于CF的推荐系统项目,然后当场问我用DL或者DRL怎么做recommendation system
- 简历上不要有错别字,曾经因为这个在onsite的时候被HRBP diss过,一般多找朋友帮忙看几遍就会发现
- 不要相信口头offer。不要相信口头offer。不要相信口头offer。血淋淋的教训所以说三遍。不管HR或者manager跟你拍胸脯也好加微信说也好,都不要全信,不能因为有口头offer就给自己放假了。我个人碰到过本来manager说要给offer,但是后来不了了之的情况;也碰到过给发offer前一天,还给你再来一轮加面的公司;总而言之,在看到最终的offer letter之前,不要太信。
一些建议
- 学会整合资源,敢于分享,尤其是和身边的朋友,系友,校友。
我也见过有大佬找到了相当硬核相当不错的工作后,diss我们系的就业support不太给力。我觉得想让support更加给力很重要的一点是能建立起整个community的交流和帮助。我现在的简历就有好几个本系的学长学姐帮忙看过;甚至有的学姐超级好,比如Ruxue Peng学姐,帮我看过好几遍;也找本系的学姐们内推过岗位;也在拿到面试后和本系的学姐打电话聊天交流。同样,Wesley Tao,Fan Yang等老铁也经常帮我review简历,互相mock。大家互相督促着进步,就不会觉得那么心累了。
- 保持学习,保持激情
最后啰嗦几句
最后,大家如果感兴趣可以加一下我的Linkedin好友 Link ,我的linkedin有超过22k个connection,平时也会把linkedin当作社交软件经常登陆check message,我对您绝对会是一个有用的connection。谢谢您!
以上所有的想法,观点仅代表个人,我唯一能保证的就是 以上的不是您的最优准备面试方法组合 ,每个人的兴趣点,技能点不一样,对应准备DS面试的过程和方法肯定也不尽相同。我在这里尽可能简练的回顾自己找工过程中的学习过程,分享给您,希望能起到抛砖引玉的作用,只要您看完,觉得有一两个点可以去试试看看效果,我就非常开心了。
没想到结稿的时候已经是大年初一了,谢谢您花五分钟从头看到尾,祝您新年快乐!在新的一年身体健康,工作顺利,事事顺心!