找工作常识总结(扫盲向)
Job market招人时间
基本上公司在data analyst和scientist在这个方面的招聘进度条差不太多,以一个典型的即将21 summer毕业的学生为例来讲好了:
1. intern:Big name的summer intern基本上在前一年的11月-当年的2月份之间就走完了从开放opening到招收完的流程了,所以想进FLAG(Facebook, linkedin, Amazon, Google)或类似的同学一定早点下手,楼主就是错过了这波或者没有用正确的方法申请,导致和这些机会失之交臂;中大型或中型(linkedin 5000+)的公司的窗口期貌似会略长一些,同大公司基本同时间段开始,结束期有的能够延长到当年的4月份;4-6月份当然也有中型的公司还有opening,但数量会少很多,基本上就是中小型的公司还会持续有opening开放,而这种更临时性或者contractor性质的intern就很看机会了,需要大家多刷平台多关注。所以现在刚好算是申intern的最佳时间,还在校的同学加油了!
2. Fulltime:fulltime(这里专指entry-level的)比intern更讲究的是在于组里只会在有headcount的时候招人,所以每年的1,2月份之后会有一波小高潮(据一位HR说是因为新一年的headcount一般刚批下来),然后是6-9月份的暑期也会有很多的岗位。其他的时间更多的是组里的人员流动导致的空缺需要补齐。
申请方式有效性
这里分享一个中国留学生申请工作时的有效性递减链条,来自于自己跌过的坑以及与朋友们交流得到的经验总结。如果你玩过德扑的话:学生申请工作时的有效性递减链条,来自于自己跌过的坑以及与朋友们交流得到的经验总结。如果你玩过德扑的话:
1. Hiring manager邮箱内推(皇家同花顺Royal Flush):因为能最直接的让hiring manager看到你的简历,而工作邮箱的内容一般不会忽略,所以是回复率最高的方式(当然简历okay是前提)
2. 组内同title邮箱内推(四条Four of a Kind):同组的相同title的人的内推(senior data scientist/analyst更佳)有的时候可以达到内推到hiring manager同等的效果,因为ta有可能会forward你的简历给HR同时cc对应的hiring manager。
3. 一般系统内推(顺子Straight): 大公司里无所谓什么title,小公司的话同组的title更好,不过这个就不是邮件内推了,是一般意义上的system refer,只是换了一个更小的pool和别人竞争而已。关于这个有的时候地里会有各位大佬放出refer的福利。我本人并未参与过,但这肯定是一个很好的资源,大家可以关注一下相关信息。
4. 领英联系公司的HR(两对Two Pair):有的时候运气好,在领英上可以联系到HR发简历给ta,增加你的建立的曝光度,不至于从茫茫的系统内推中难以脱颖而出。
5. Career fair(一对Pair):据朋友说有在career fair上拿到面试的,不过好像几率很小,我个人就去过两次所以保留发言权。
6. 网申(not even a high card):我个人认为这个是所有新手new grads(除了简历完美到不行的大神)一定要避免的,就是疯狂海投。我之前也投了少说两三百吧,基本无一生还。听到的朋友里面网投得到回复的寥寥无几,拿到工作的貌似就更少了。所以非常不建议大家走这条路。
领英找refer的前期准备内容
由于领英是我认为最实用也成本最低的找refer的申请方式,所以在此着重介绍:
1. 大致按不同方向修改过的多版简历。(比如product方向的可能更看重你的项目经历和实际结果,偏engineering或硬核的data scientist更看重kaggle和算法相关经历,或者data analyst就主要是Sql相关等等,你需要大致准备几个不同侧重点和方向的简历,方便稍加修改之后可以直接发给refer你的人)
2. 相对应不同版本简历的不同Cover letter。修改关键字和公司就行,各个学校的career service应该会有模板。
3. 一个购买了初级(或更高级的)会员的领英账号
4. LinkedIn自家,以及Glassdoor,indeed等等可以知晓opening的平台与途径。
如何看这个岗位适不适合你
1. 第一要义,你喜不喜欢。
如果Job Description你都看的想睡,那真的别申,浪费自己和公司的时间。
2. 看工具要求你是否符合。
Data行业如果工具要求你不符合,申请起来会比较麻烦。不过类似于Tableau的倒是可以速成所以不必担心。
至于内容中具体明确要求要熟练掌握的Python和R或者Sql的经验,如果没有的话一定要提前练习和补充学习。
3. 看年限要求是否符合。
一般这里会吓退很多新人,因为动不动Fulltime就会要求一两年起步,三五年左右的工作经验。而据我申请和拿到面试的结果来看,其实:
1). 没有年限要求的最好。
2). 1-2年要求的,可以用累计1年左右的实习经验来凑,也会给面试。
3). 2-4年要求甚至以上的,必须得有至少1-2年工作经验。不过有的时候没有工作经验也不要灰心,可以先申请着,很多公司为了拿到一个大的headcount budget总是会把职位要求定的比较高,然后最终如果真的选了一个junior之后再下调salary就行,以保证充足的budget来应付各种情况。所以看到高年限,偶尔也可以申一申。
以上是一些简单的经验,目前为止尚未涉及任何专业的data知识,纯粹是为了*拿到面试*这一个目的。因为这是相当重要的第一步,否则其他的无从谈起。下一个部分则是着重讲解具体面试内容,来帮助大家克服面试准备无头绪的难关
概括性质面经+对应资料
大致有以下内容需要认真准备:Machine Learning, 统计、概率与A/Btesting,Online coding(Python+ R), SQL, 和product sense.
Machine Learning
1. 常见面试问题
1). What is overfitting? / Please briefly describe what is bias vs. variance.
2). How do you overcome overfitting? Please list 3-5 practical experience. / What is 'Dimension Curse'? How to prevent?
3). Please briefly describe the Random Forest classifier. How did it work? Any pros and cons in practical implementation?
4). Please describe the difference between GBM tree model and Random Forest.
5). What is SVM? what parameters you will need to tune during model training? How is different kernel changing the classification result?
6). Briefly rephrase PCA in your own way. How does it work? And tell some goods and bads about it.
7). Why doesn't logistic regression use R^2?
8). When will you use L1 regularization compared to L2?
9). List out at least 4 metrics you will use to evaluate model performance and tell the advantage for each of them. (F1 score, ROC curve, recall, etc…)
10). What would you do if you have > 30% missing value in an important field before building the model?
....
以上是我整理出来的被问到的差不多Top 10的问题,至于回答的深度可以因人而异或者因岗位难度而已,简单的讲一讲概念,难的可能会发散到深一些的矩阵计算和算法原理。
如果以上的问题你还有都不懂的问题,那可能需要多下一番功夫了;
如果你大致能听懂问题,但是静下心来问自己,然后让自己回答一下,哪怕是有一点不清楚,我也建议: 去花一个下午坐在那里找所有相关的资料,落到文字层面的东西,整成一个小专题,有段落摘抄有笔记有链接。然后在理解之后再确保自己可以非常简明扼要的在电面中用英语流利表达。这很重要,懂,和能让别人觉得你懂是两回事。所以面试前顺口条也是很推荐的(打辩论的职业病,会心里面准备一篇小的短稿件方便做答)
2. 相关资料准备
1). coursera上Andrew Ng的Machine learning课程(https://www.coursera.org/learn/machine-learning)
算得上考古级别的课程了,内容有些老旧但是很经典,很适合商学院BA专业的从0开始补齐ML的背景知识
2). 还有一个速成的:15 hours of expert ML videos: https://www.dataschool.io/15-hours-of-expert-machine-learning-videos/. 我没看完,只选了自己想看的了解了一些。
3). 《ISLR》(一个免费链接直通车),入门神书不解释,可惜我第一本看的不是它,所以后来大多当作工具书用了,需要的时候才查阅一下。
4). 《Practical Statistics for Data Scientists: 50 Essential Concepts》,很实用的一本书,专讲一些细小知识,不深但是读完会感觉多了些对ML的理解。
5). 书和课说完了,肯定得推一下Medium了,尤其是Towards Data Science专题,相信熟悉的人都知道里面的文章有多么实用。
我比较喜欢的是里面某个作者写Machine Learning 101(https://medium.com/machine-learning-101)这个小专题,非常浅显易懂,适合初学者用具象的方式理解抽象算法。
6). StackOverflow(https://stackoverflow.com/)自然也是不能漏掉的,学data或者编程总会遇到很细枝末节的问题,这些一般文章里没有,所以就需要求助社群的力量了。
7). 最后的最后,务必亲手写两三个project,哪怕是调包写,也比没写过的话,不然面试也会很尴尬的。
统计,概率与A/B testing
1. 常见面试问题
1). What is p-value? What is confidence interval? Explain them to a product manager or non-technical person.. (很明显人家不想让你回答: 画个正态分布然后两边各卡5% )
2). How do you understand the "Power" of a statistical test?
3). If a distribution is right-skewed, what's the relationship between medium, mode, and mean?
4). When do you use T-test instead of Z-test? List some differences between these two.
5). Dice problem-1: How will you test if a coin is fair or not? How will you design the process(有时会要求编程实现)? what test would you use?
6). Dice problem-2: How to simulate a fair coin with one unfair coin?
7). 3 door questions. (自行google吧,经典题之一)
8). Bayes Questions: Tom takes a cancer test and the test is advertised as being 99% accurate: if you have cancer you will test positive 99% of the time, and if you don't have cancer, you will test negative 99% of the time. If 1% of all people have cancer and Tom tests positive, what is the prob that Tom has the disease? (非常经典的cancer screen的题,做会这一道,其他都没问题了)
9). How do you calculate the sample size for an A/B testing?
10). If after running an A/B testing you find the fact that the desired metric(i.e, Click Through Rate) is going up while another metric is decreasing(i.e., Clicks). How would you make a decision?
11). Now assuming you have an A/B testing result reflecting your test result is kind of negative (i.e, p-value ~= 20%). How will you communicate with the product manager?
If given the above 20% p-value, the product manager still decides to launch this new feature, how would you claim your suggestions and alerts?
2. 相关资料准备
1). A/B testing 的资料首推的是Udacity上免费的A/B testing(by Google)的课, 同学们的评价都还不错,很适合全面的了解一下A/Btesting。
2). 其余的A/B testing的内容大多来自于Medium上的好文,原因是A/B testing是一个要和实际的业界应用场景结合的东西,只知道原理和基本不懂没啥区别。
所以要去看一看业界的人写的关于A/B testing的文章,只有带着案例看,才能懂面试中的问题都应该怎么样回答。
3). 还有就是如果有在工作的学长姐,长辈等等,一定要不吝啬的问A/B 方面的问题。他们说个十几二十分钟,能省下你很多时间去到处扒资料,原因同上条不解释。
4). Stats的话,有一个非常快的捡起一些统计学基础的内容是Coursera上intro to stats and prob课程,很快,一个下午就可以看完。
5). 然后我要推一波我用的很多的udemy的课程了,他们家经常打折,我赶9刀一节课的时候买的,Data Science Career Guide - Interview Preparation, 还是很不错的。课程轻量,学起来无压力。
6). 概率题我觉得对于大多数中国学生来说都没问题,都是高中学过的,稍加捡起就行。Udemy的课就可以帮你捡起来。
Online coding(Python + R)
1. 我遇到的面试问题(这个考的五花八门,所以不敢说是最常见的)
1). Report the biggest sum of a continuous 3 numbers in a list? with the related index?
2). Dynamic programming problem: Now you have 5 types of coins(1,2,3,5,8) and a total sum(a big number, say 589). How many different combinations of coins can you find to reach this total sum?
3). Please write a function to reverse the key and value in a dictionary. When you have repeated values, please only keep the first key as the new value.
4). Similarly to the "gather" and "spread" functions in the tidyr package, write a one by yourself and test it using XXX dataset.
5). Given a log file with rows featuring a date, a number, and then a string of names, parse the log file and return the count of unique names aggregated by month. (我的不是这个原题,但是意思很像)
6). Using python to calculate a 30-day rolling profit. (大致就是要用python写一个rolling window)
...
还有更多的我就不一一列出来了。写代码真是没什么捷径好走,我的建议是平时自己遇到问题就多搜一搜,然后能收写的时候尝试手写不要调包。久而久之就熟练了。
2. 相关资料准备
1). 算法自然是逃不过Leetcode了,虽然CS的同学用的比较多,但是想申DS的话我觉得Easy 和Medium水平的刷一刷有利无害。
2). 讲算法的,我只看过youtube上的一些视频觉得非常的不错,但是也只是试了试,有兴趣的同学可以多研究研究。
3). 划重点,大家在面online coding的轮次之前,千万记得去glassdoor上看一下会不会有人share一些题目。遇不到原题权当练手,遇到原题了的话简直不要太爽。(glassdoor --> a company --> interview question --> title)
4). 熟悉R: 我是和同学一起在上学期间刷完了datacamp上所有的R的课程。入门很合适。
5). 熟悉Python:datacamp刷了一些,并没刷完。
推荐的是Udemy家的两个课:Data Analysis with Pandas and Python 和 Python for Data Science and Machine Learning Bootcamp。 非常简单易懂,上手率非常高。
一个好网站,同学推荐的: real python
手上如果还有书就更好了,甩给你们一些选项: https://realpython.com/best-python-books/
SQL
这一部分可能是我找工作的时候最有启发的部分了。因为我们的学校项目没有很重视SQL,我个人又觉得SQL很简单所以一直没怎么上心。后来挂了几次之后才发现其实SQL考的难起来也是挺难的。所以写一些心得分享给大家
1. 常见面试问题
1). What is the difference between union and union all? where and having?
2). Table【in_app_purchase】:
uid: unique user id.
timestamp: specific timestamp detailed to seconds.
purchase amount: the amount of a one-time purchase.
This is a table containing in-app purchase data. A certain user could have multiple purchases on the same day
Question 1: List out the top 3 names of the users who have the most purchase amount on '2018-01-01'
Question 2: Sort the table by timestamp for each user. Create a new column named "cum amount" which calculates the cumulative amount of a certain user of purchase on the same day.
Question 3: For each day, calculate the growth rate of purchase amount compared to the previous day. if no result for a previous day, show 'Null'.
Question 4: For each day, calculate a 30day rolling average purchase amount.
3). Table【Friending】
time = timestamp of the action
date = human-readable timestamp, i.e, 20108-01-01
action = {'send', 'accept'}
actor_id = uid of the person pressing the button to take the action
target_id = uid of another person who is involved in the action
Question: what was the friend request acceptance rate for requests sent out on 2018-01-01?
...
因为时间关系我没有再陈列更多,但最典型的题目我已经写出来了。
题目二涵盖了简单的aggregate问题,cumulative问题,rolling window问题等等。搞定这些,其他的都只是一些简单变形。
题目三涵盖了self-join,并且有一些tricky的大于等于号的应用,有兴趣可以在地里查一下Facebook面经的解答。
其他的题目无非是多了一些table,join麻烦一些或者加了一些case when,难度都不会有太大的变化。做好几个经典题,然后自己整理好就可以以不变应万变了。
2. 相关资料准备
1). 扫盲网站:SQL ZOO 和 W3schools,非常实用,适合翻阅。
2). 两个Udemy的SQL课,我女朋友用的,一周时间几乎0基础跟下来,进步非常快:SQL - MySQL for Data Analytics and Business Intelligence 和The Ultimate MySQL Bootcamp
3). 刷题的话,Leetcode上有一些题,可以做一下。还有好心人直接做了个整理,在这里:summary of sql in leetcode。
4). Hackerrank上的题自然是要全刷光的,因为难度非常简单,快的话一两天也许就做完了。
5). 更多的网站在这里, 链接甩给你们自行取用:18 best sql online learning resources
6). 建议自己下载一个My SQL装到电脑上,模拟真实的SQL环境来学习。
7). Mysql 里关于Windows function和frame clause的教程:Windows function ,Frame Clause。这个非常重要,windows function可以说是SQL面试里的大杀器,非常节省时间而且思路清晰。
8). 建议也学会用WITH common_table_expression。可以让你的SQL看起来非常整洁和容易理解。
9). 最最重要的来了。
如果你觉得刷完题或者学完以上的内容就万事大吉了,那还真的不是。我一开始也有这样的误区。实际上刷完Hackerank也并不能帮你很快的做出我给的例题。
而其实,对于metrics或者product的了解能够帮助你很好的准备SQL面试,因为所有的SQL面试都是围绕着**与business相关的metrics**而展开的。
举例而言,游戏公司一定会考DAU(daily active user)或者purchase rate, Facebook就会是friend request 相关的,以此类推。所以熟悉你申请公司的业务再针对性准备SQL,一定会事半功倍。
Product sense
1. 常见面试问题
1). Today you immediately notice that our app's new users are doubled. What could be the reason? Do you think it's good or not?
2). If we have an app with in-app purchase, name at least 4 metrics you would like to monitor in your dashboard.
3). If you are running an A/B testing and find that the result is very positive, thus you decide to launch it. In the first 2 weeks, the performance of our website is very positive.
However, with time flying by, all metrics seem to go back to normal. How will you explain this result?
4). Assume we are Facebook and we would like to add a new 'love' button. should we do this?
5). We are running 30 tests at the same time, trying different versions of our home page. In only one case test wins against the old home page. P-value is 0.04. Would you make the change?
6). If after running an A/B testing you find the fact that the desired metric(i.e, Click Through Rate) is going up while another metric is decreasing(i.e., Clicks). How would you make a decision?
7). Assume that you are assigned to estimate the LTV(lifetime value) of our game app player. what kind of metrics would you like to calculate so as to make a good prediction?
Assume that you already collect all that you want. How would you make this prediction/estimation?
8). If you got a chance to add on new features for our app to increase our profit within a very short term. What will you do?
....
大概就是以上的这些问题了。你可以发现的是,大多是围绕着metrics和如何提高product performance来展开的。说实话这些对于new grads来说非常不友好因为没有工作经验。
2. 相关资料准备
这里看过的资料太杂了,很多都是零星的网站未能保存下来。能系统整理的不多,我就尽量以经验的方式分享给大家。基本上你要能够像一个product manager一样思考问题。
1). 有一个比较好的课程,product school.(https://www.productschool.com/). 貌似是各个湾区的tech公司的DS或PM大佬们来分享一些案例和学习经验。
我没有买过课程但是看过youtube上的免费视频,非常受益。因为product的事情就是在和真正做产品的人的交流中一点一点积累来的。
2). Metrics: 一个关于Game metrics的汇总(https://www.cooladata.com/19-metrics-every-mobile-games-needs-track/),也有一定的适用性可以扩展到其他mobile app上。
Critical metrics every product manager must track(https://productcoalition.com/critical-metrics-every-product-manager-must-track-c5f1e46e3423)
3). A/B testing:A/B 测试中 20 个必须知道的问题
4). 有一个非常好的资源A Collection of Data Science Takehome Challenges. 因为版权原因不能share,但这个真的是非常棒的资源,可以让你有机会解决很多实际的DS问题,并且也和product有关。
如果你周围有朋友能拿到这个资源或者你愿意买的话,非常强烈推荐。能让你对DS的日常工作内容有一个本质理解上的飞跃。
5). 一些个人想法:
大多的产品问题都是围绕着产品的metrics或运营中遇到的问题展开的。如果针对互联网行业来说, 一个典型的产品要从推出后经历以下阶段:user acquisition --> user engagment / retention --> monitization.
讲一个异曲同工的事件来帮助理解吧。了解头条系公司的都知道,公司内有一个流水线作业的产品工厂模式。他们只有三个最核心的职能部门,技术,user growth和商业化。技术是保障了整体的运营,所以在整体的产品很稳定之后,就要看一下用户的留存率。如果发现用户的留存率(retention)或使用率(engagement)非常高,则进入user growth的推动环节,大批量的marketing来拉动新的用户增长(user acquisition)。最后把商业化(广告等)的内容接入产品,迅速变现。虽然顺序和我说的不太一样,但是实际上就是在在这三个部分对一个产品进行不断的迭代。所以metrics也离不开这三个部分。user acquisition讲求新用户注册率,user engagement讲求DAU(日活量),monitization讲求LTV 和ARPDAU(Average revenue per daily active user)等等。逐渐加深对互联网产品的理解,就能更好的应对metrics的问题。面试中metrics的问题,本质上一切都是为了产品迭代和用户增长以及变现。
关于产品中被问到的A/B testing的问题,很多是面试官为了考察你是否能针对特定的情况来分析A/B testing的结果。只看P-value是非常学生的思维,具体情况中的A/B testing是要从一开始的new feature的想法到后来设计整体的实验再到分析结果再到最后给建议的一整个流程。面试官想要的是一个批判思维,需要你对每一个步骤都扣的非常细致,以此来确保实验和你的结论之间没有断层。
转载:原文来自一亩三分地 lllllllllllduan
Commentaires