说明:
- 内容转载自汪淼 (Jason) 老师的北美科技求职系列 Blog;
- 在汪淼 (Jason) 老师的专业指导下,我成功拿到了某科技公司数据分析Offer,经汪淼 (Jason) 老师授权,在此分享他的求职指导文章,希望能为正在准备求职的同学提供有价值的参考,也欢迎各位伙伴与我交流经验,共同成长 ~
数据科学岗位的面试会涉及到编程算法,SQL,案例分析 (case study) 等不同内容,其中大家普遍反映最难准备的就是案例分析这类面试题目。这类问题涵盖的知识范围很广,而且根据公司和具体应聘岗位 (Data Analyst,Data Scientist,Machine Learning Engineer,Business Analyst) 的不同,案例分析面试的考察点又有不同的侧重点,这导致很多求职者在有限的备考时间内很难抓住重点。
我 汪淼 (Jason) 博士毕业后在业界工作了近十年,在硅谷一线大厂做过 Data scientist 和 Machine Learning Engineer,以面试官和hiring manager 的身份参加过近百场数据科学岗位面试,最近几年我也帮忙辅导过很多朋友跳槽或转行进入数据科学领域。我把这些经验总结成了这篇6千字长文分享给大家,希望能对正在求职的朋友们有所帮助。
在这篇文章中,我首先会从面试官角度解析数据科学案例分析面试的考点,然后通过一道我自己原创的包含11个follow-ups 的面试题给大家展示不同数据岗位面试考察要点,最后会给大家提一些备考建议。如果你在数据科学备考或学习过程中有任何问题,也欢迎添加我的个人微信 TonyCoding20,期待和大家的沟通!
1. 案例分析面试考什么?
数据科学案例分析面试在不同公司的不同岗位招聘中考点区别很大,有时候甚至面试名称都不一样:
- 在 Data Analyst or Business Analyst 岗位面试中,它通常被叫做 case study interview,涉及的内容包括统计理论、A/B testing实验设计、SQL、product sense 等。
- 在 Data Scientist or Machine Learning Engineer 面试中,它会被叫做 machine learning applications/system interview,machine learning theory interview 等,涉及的内容包括机器学习模型知识,machine learning workflow design 等,有时也会包括一些类似于软件工程师面试中 distributed system design 的内容。
在面试过程中,面试官会首先结合具体的产品应用场景提出一个问题,比如:
[Data Analyst] How to evaluate the business impact of a new feature in Instagram Stories?
[Data Scientist] How to design a user targeting system to improve email click rate?
随后求职者需要在30-40mins的时间内,通过与面试官的沟通,给出一套完整的解决方案。在这个过程中,面试官主要考察以下3点:
- 分析问题的能力 - systematic thinking. 在case study面试中,我们第一步要做的事情就是 transfer the abstract business question to a verifiable problem with quantitative approaches. 求职者需要通过与面试官的沟通来 clarify questions and define metrics. 很可惜的是,很多junior求职者会忽视这一点,经常在面试前5分钟问题还没定义清楚的情况下就开始在白板上写公式,这种行为大部分情况下都是red flag。
- 对基础知识点的深刻理解. Case study 面试在很多情况下也包含理论知识考察的部分。现在极少有公司会利用填空选择题来考察机器学习理论问题,但是面试官会在 case study 问题讨论中,结合你选取的分析方法来针对一两个知识点做 deep dive,这里考察的知识点一般都是经典的机器学习基础知识,不会涉及到很复杂的概念或者最近几个月新发布的研究成果。
- 数据系统设计能力. 优秀的 case study solution 一定是建立在一套完整的分析框架基础上,它保证了我们在分析问题的时候不漏掉任何一个关键环节,这在实际工作中也是非常重要的。对于 data analysis problem,这个框架可能是A/B testing experimental design framework;对于machine learning modeling problem,这个框架可能是model training workflow,建议求职者在备考时把常见的解决问题框架总结好 (在后文的具体案例中我给出了2个例子),面试时甚至可以把这个框架直接画在白板上,然后有侧重点地进行讨论。很多朋友反映在case study面试时"无话可说", 出现这种问题的主要原因是面试时脑中没有一个预先总结好的框架。
以上讲的内容比较抽象, 下面我结合一道经典的 recommendation system case study 面试题来做举例说明。
2. 一道实战面试题 - 广告推荐系统设计
Interview Question: How to design a recommendation system to optimize ads efficiency on Facebook Platform?
推荐系统问题是 case study 面试的常见内容,类似的大部分问题主要是关注在推荐系统 content relevance & personalization 的方向。而这道题中又引入了在线广告这个场景,因此考察角度会更加多样化。这道题目中包含的11个followups来自于我在工作和面试中的经验总结,基本包含了数据科学不同岗位 (Data Analyst, Data Scientist, Machine Learning Sngineer) 面试中的常见考点,希望能给大家在面试备考方向上提供一些参考。
Q1: How to define "ads efficiency"?
这一步就是我在前面提到的"clarify questions and define metrics". 它在任何数据科学岗位的case study面试中都是重要环节。在很多情况下,面试官甚至会故意在介绍面试题的时候不给出清晰的 metric definition,而是希望求职者主动与面试官沟通来clarifiy这些细节。
回到这个问题, 对于efficiency的定义, 首先可以从每个广告推荐商品对应的 engagement metrics 入手, 包括:impressions, clicks, conversions, conversions without cancellation 等。
进一步地,我们可以把广告相关的cost引入到efficiency的定义,包括:Cost per Click (CPC), Cost per Acquisition (CPA), Return on Investment (ROI) 等。
此外,如果求职者在广告行业有一些domain knowledge的话,还可以讨论一些advanced metrics, 比如ads incremental value,即对比没有广告情况下organic traffic带来的revenue与有广告情况下整体revenue的增量差值。其他可以提到的影响ads efficiency定义的因素还包括, ads attribution logic, user life time value (LTV) 等。
对这个问题的讨论可以算是Data Analyst面试最关键的环节,它会与后续的实验设计等步骤相关联,因此讨论得会比较细致。而对于Machine Learning Engineer岗位的面试,我们一般不会在这一步停留过长时间。
(未完待续 ... )