几家公司的DS takehome供大家下载

历时半年,弱弱的楼主终于上岸了(亚麻),从一开始找工作到现在,想法和感触都太多了。现在再来做个DS/MLE找工心态调整的总结,希望对大家有帮助。至于具体的准备方法,大家可以自行看一下地里几个长贴,写的都很好。其实看哪一本书或者上哪一门课都不是决定性的,起决定性的还是大家自己对书本知识的理解,以及对一些方法的理解,只要能坚持按照一篇帖子的推荐分享走下来,至少在知识点上肯定是差不多足够了。

先说下自己的经历:

纯理科女phd一枚,毕业一年多,
现在在一个小屌丝公司做ds,美其名曰ds,实际上连da都算不上,我们公司的数据都是analytical的,
完全用不上任何模型,我需要做的就是scrape–clean–compile–submit。其实这份工作换一个小本来做也
完全没有问题,没什么技术含量。哦对了,公司用的语言不是现在市面上任何流行的语言。
虽然工作清闲但是公司待遇奇差,当时签工作被lowball了,坐标与一个巨大的农村,我自己是感觉这份工作没有什么前景可言。
本来今年公司和另一个地里常说的大公司签合约了,但是这样也没能阻止一分钱年终奖都没有。。。
其实这样惬意的生活对于很多美国人来讲也是不错的,直到今年家里出了些事儿,我才决定要跳槽了。

优势:
1.还算看得过去的学校的理科phd,专业还算有用,之前的研究虽然没什么研究价值,但是稍微有点帮助吧。
2.运气还行,今年第一次抽就抽中h1b, title是data scientist,也approve了
3.python用的还算熟,可是好多自己没涉及过的领域的package就一般般了,
4.其他,r, linux(server), github, 也都还行。
5.一个quant实习,一个一年data analyst实习,一个类似programer的实习,再加上现在一年的ds工作经验。
6.数学统计基础还行

劣势:
1.不会sql
2.不会c, c++,
3.算法只能说刚入门,leetcode刷了200题
4.没什么跟真正的ds相关的经验,非常尴尬,准确的说以前做的都是调参侠。。。看了下隔壁的面经,很多题目我是真的很懵,
不知道能否通过学习快速的补起来。
5.理论知识薄弱,学过一些但是很多都忘了,在udemy刷了两节课都觉得要不忘记很难。。。
之前找工作面挂了n家,都是栽在tech上,觉得自己真的太弱了。。。
6. 目前的location很差,做好了折腾去弯曲的准备。

看上去还行,实际上真的弱到爆。。。现在的工作不需要任何machine learning(所以现在的经验真的是0),然后在开始准备找工作之前我的知识点只停留在linear regression 和 time series。所以经过这次准备能拿到现在的offer我确实满足了,跟各位大牛不能比。

接下来说说我自己的感受,如果有说的不对的地方,大家可以自行调整。

准备前期:

  • 从今天起,找工作是你自己的事情。这么说,是希望大家把心态从被动变为主动。有一些同学(不是所有)初出茅庐,还比较习惯学校的教育模式,就是老师讲我们听,于是我们在地里会看到许多伸手党很多问题不考古就直接发问。不是说不懂就问这件事情不好,而是把“找工作当成自己的事情”这种心态,非常重要,因为后面就会发现,很多信息和咨询都需要你自己去搜集去主动获取而不是被动的获得,而这些信息往往是非常重要的。
  • 放下所谓的“尊严”或者“面子”,利用一切可以利用的资源找关系内推。这一点是我做的最不好的,我自己也反省。很多同学都说投了几百份简历没有回音,石沉大海,其实如果利用好身边的资源,求内推或者直接联系linkedin上面的recruiter,结果会很不一样。大公司如果是内推,会专门安排一个recruiter来联系你,小公司有的内推也可以直接送到hiring manager那边去。所以大家请利用好论坛的内推,尤其是LinkedIn那边发职位的recruiter,他们的工作就是为公司招到合适的人,所以千万不要觉得联系他们会丢人什么的,如果有的组或者公司有自己的校友什么的,也可以联络看看,就算对方不理睬也没什么的,nothing to loose,万一被打捞安排了面试,也可以攒经验。我这次上岸也是靠的论坛小伙伴内推。
  • 做好持久战的准备,调整心态。找工作不像考试,不是说考了多少分就能找到什么level的工作,有时候运气的成分会非常重要,尤其是到后期onsite,当headcount比较限制的时候,公司最后在几个candidate之间选择,就真的是我们无法控制的了。这个时候很多人肯定会比较着急,尤其是面到最后感觉精疲力尽,自信心也有点受挫,但越是这个时候就越要给自己信心,可能在坚持一下就上岸了。再就是社招跟校招不一样,时间线会比较flexible一点,有的公司就会拖得很长。所以希望大家一开始就做好心理准备,后期太多不可控的因素。

初期,投简历,HR screening:

  • 了解公司,读job description,修改完善简历。这是我第一次找工作的时候没做好的,所以这次专门说出来提醒大家,之前投简历只看requirement,总觉得只要自己满足学历要求和相关技能肯定能被recruiter看上,实际上大错特错。读JD为什么重要呢?首先,现在所有数据相关的工作都叫DS/MLE,名字取得太泛,但是读了JD以后才真正明白每个组到底是做什么的,从而能慢慢了解需要一些什么具体的技能。比如:search组会用到recommendation system,这是一套非常单独的系统,很多书上都没有提到,大家需要自己去学习;再比如fraud detection 组,重要的就是如何处理imbalanced data,还有选feature以及model inference, 这就需要对每个算法有比较深入的comparison。还有一些JD涉及到AI或者NLP,哪怕大家对deep learning没有很深入的了解,也需要知道一些比较基本的概念,比如TF-IDF, word embedding ,RNN里面的LSTM GRU等等。根据每个JD不同的方向可以完善简历甚至写一个比较针对性的版本。如果大家觉得每个role写一个简历比较麻烦(毕竟DS投200多份简历也是常事),就不如大概的分类一些申请的role,然后准备几个不同的版本,这样才更容易被HM看上。再就是了解每个公司的业务,这涉及到公司的运营,在回答product sense的问题上这点显得尤其重要。
  • 如果顺利的被recruiter选中安排和她聊天,一定要表达出来对公司的热情和向往。再就是做好功课,让recruiter觉得你是因为喜欢这个公司才投这个role的,而不是为了找一份工作而已(虽然很多人只是为了找一份工作)。每一次聊之前都准备好回答:why you choose our company?要把自己的技能和兴趣往这个公司这个role上扯。

技术店面,take home challenge:

  • 面试是最好的自测。这一点不用多说了,有时候觉得自己学的非常好非常扎实,但是一到面试就被问懵的情况在我身上也发生过不少次。哪怕最最最基础的linear regression,也可以问出很深入和很难的问题。所以大家一定要利用好论坛的资源,看看平时面试会问一些什么问题,从而查缺补漏系统学习。第一次看论坛大牛们总结的面试知识点以及问答,我也是一脸懵,但是现在慢慢通过学习,也能对大部分问题有正确的回答,所以大家一定要利用好自己的以及他人的面经来不断自测和补充知识盲区。
  • 不要在同一个地方跌倒两次。这也算是前面那个观点的延续吧,不管面试官面了当时你觉得多么匪夷所思的问题,请一定下来以后弄明白,我自己就遇到过两个面试问到同一个问题,而我第一次并没有弄清楚的情况。这一点不仅对店面适用,对onsite同样适用。
  • take home challenge,比想象的还要重要。DS很多role都需要做takehome,我自己做过很多次也失败过很多次,但是现在仍然觉得这些challenge 比我想象的要重要很多。首先,大部分公司都提供了真实的数据。这就涉及到对于真实数据的处理方法,比如missing data, imbalanced data, categorical data, feature selection, model inference 等等,这不光会帮助我们做好这一次take home,也会对之后的面试有很大的帮助,因为真正的用过这些方法以后,就能更好的记忆和了解每一种方法。其次,边做边学,查缺补漏,比起店面必须马上给答案,take home给了大家学习的时间,然后学以致用,比如之前我对recommendation system的了解就不够深入,通过一次take home再次学习了这方面的知识。最后,take home的project也可以成为大家的experience,这一点对于没有什么经验的new grads或者转行的同学来讲,十分有效。在面试中经常被问到用machine learning解决问题的情况,实际上我现在工作不需要任何machine learning,比起瞎编,不如就聊聊自己的take home,尤其是相关行业的。比如我之前做了一个银行的fraud detection 的DS take home,于是后来面其他公司相关role的时候我就会讲这个project,(不涉及到什么隐藏信息大家不用担心NDA),怎么处理数据,怎么选feature选model怎么改善model等等,会让面试官觉得你是处理过实际数据的而不是纸上谈兵。
  • 通过面试,再次了解公司和role。如果面试的时候感觉还不错,请利用好问面试官问题的机会,因为如果下一步是onsite,那么这次提问应该就是onsite前最后一次了解这个组的机会 。我自己栽在这个上面过,就是电面全程非常硬核,侧重在machine learning的算法上,最后我也没问面试官什么有价值的问题,结果onsite的时候问了很多前沿NLP的问题,始料不及。

Onsite:

  • 去之前请再多了解一下公司,尤其是MLE的role。这点和前面第四点是差不多的。我个人理解,MLE之所以成为单独的一个role,是因为这个role需要自己implement一些算法,而且不是单纯的用package,那么这样就涉及到:需要implement什么样的算法?大多数时候并不需要大家自己去发paper想办法,而是需要去读paper写算法,所以大家需要对公司比较前沿的相关research有一定的了解。之前版上一位大牛在LinkedIn的ML ONSITE也证实了这个观点。
  • 任何时候都不要放弃机会。Onsite一般都有好多轮,有的同学前面几轮面的不好后面就很丧气,但事实告诉我们,只要不是strong no hire,都还是有机会的。比如楼主某一轮onsite被问到我最讨厌的binary tree(理科生的我真的对这种看不到头的数据结构理解无能),硬着头皮答得很烂。。。但是整理一下心态觉得万一还有机会呢,结果后来又面了两轮还真面来了offer。
  • 面试官不光是为了给你出题,他们也是在选一个他们愿意一起工作的同伴。我觉得这点就是更希望大家面试的时候,要自信也要谦虚,可以换位思考一下,如果你是面试官你会更喜欢什么样的人以后成为你的同事呢?首先,面试官希望你会的东西你最好能会,要自信的回答,但是也不要表现出来“怎么问这么弱智的问题”的态度;其次,你不会的东西也要表现出来想学并且感兴趣,要有“我现在不会是因为我没怎么接触过,但是我会努力去学”的想法。
  • 熟悉面试官,尤其是组员和manager,通过和他们的对话了解这个组的情况,还有manager的风格。这一点主要是在选offer的时候有一个参考。我在之前一篇帖子里就说到过我自己的感受,就是如果可以的话,希望选一个工作环境相对开心的地方。钱是很重要,但是当offer的条件差的不是很多的时候,大家也可以比较一下工作环境,可以预见大家至少在下一个公司呆1-2年,要是manager很不好相处大家过的不开心就还是会想要跳槽。
  • 尽力了就不要纠结结果,面完了就赶紧进入下一步。面试是一个双向选择的过程,我个人感觉,越是小公司需要招的人越是有模板,他们也越希望他们的candidate能够照着模板来。说白了就是DS还是一个相对小众的role,虽然每个公司每个组都在招,但是很多公司可能也就1-2个DS,这也就造成了一个现象,就是明明感觉自己面的很好,但最后还是没被选中于是怀疑人生。而实际的情况是:他们就需要一个专门做某个方向的DS。比如我之前面的一个公司,是因为一个写sql的小哥哥要去念书,所以要招一个人顶他的role,所以对这个role来讲,更重要的不是你对模型的理解,而是你对sql的熟悉程度。反而大公司很多时候更看重的是candidate的潜力,所以哪怕你不是perfect match,他们也愿意招了然后train。总之不管最后的结果如何,都要赶紧调整状态,尤其是对于new grads,这个时候的时间往往都是很宝贵的。
  • 有时候运气也很重要,所以不要因为失败而怀疑自己。当很多优秀的candidate放在面试官面前的时候,最终的选择就不是面试结果的好坏可以决定的了,就比如之前很多人说,有时候组里男女比例太不协调,最后发offer当时候可能会把性别考虑进去;再比如公司有时候会考虑身份,relocation等等问题,或者一些看上去不那么相关的因素,所以万万不要因为没拿到offer而怀疑自己,能走到onsite这一步就是自己实力的证明。

选offer谈offer:
其实这一步我也没有什么发言权,毕竟我不是横扫型选手。但是说来说去又回到了之前的几点:

  • 主动获取信息。如果是大厂可以了解下版上的薪资,学习下各种negotiate 的办法,Warald写的非常好,小厂的话利用好glassdoor的信息,再就是行业的信息,看看offer的情况。
  • 回到之前提到的,不仅要看钱,也考虑一下组内的情况,同事和manager的风格,职业的发展还有技能,看看是不是自己真正喜欢的,还有WLB之类的,做一个全方位的选择。
  • 如果拿到的offer不是自己满意的,比如行业对技能不对,或者技能对行业不对,我在之前的帖子里面也提到过,如果大家只想把这份工作当作一个跳板的话应该如何选择?我个人的建议仍然是选择技能对的,感觉对下一份工作的帮助会比较大,因为我自己的情况就是,在IT行业做一份跟machine learning完全不相关的工作,面试的时候经常第一轮recruiter就把我刷掉了。这里也提醒大家,珍惜每一次做选择的机会,一旦你做出了选择,就要预想到接下来的一段时间都要遵循这个选择,以及如果你想要在跳出这个选择,就可能需要花费比之前更多的精力。

终于写完了,最后感谢大家看完,也希望大家都能找到满意的工作!

链接: https://pan.baidu.com/s/1eXU11MwrIY4fifl93svXGg 密码:mi29

4 Likes

恭喜楼主!~ 楼主如果最近还登陆有空看到的话可以可以再share一份给我吗 感谢感谢
email: junjima.cn@gmai.com