Data Scientist的技术面试分为电话面试和现场面试,但它们问到的问题是比较类似的,主要有以下四类问题:

 

  • Probability/Statistics Questions
  • Coding Questions
  • Machine Learning/Modeling Questions
  • Problem Solving Questions

 

 

关于Probability/Statistics Questions,首先是常见的Distribution questions,包括 Poisson, Binomial以及Exponential。举一个例子,银行有很多顾客排队办业务,有两个窗口,现在有两个选项。一是让顾客排成一队,哪个窗口空闲就接待下一位客户;二是让顾客分别在两个窗口前排队,共排两条队。这两个选项中,哪一个方案能使顾客的平均等待时间最短? 这就是Poisson distribution的一个应用。

 

可以看到在Data Scientist的面试中,不会问最基本的公式,或者类似Poisson的平均数、标准差是什么的问题,而会给你一个具体的情境,考察你能不能熟练应用这些理论或公式

 

还有最经常考的贝叶斯定理,比如掷硬币问题。假设你手里有10个硬币,其中的2个硬币是Unfair coin,即它们出现正面的概率不是0.5,我们就假设它是0.7,剩下的8个硬币都是Fair coin,即它们出现正面的概率是0.5。现在我们从这10个硬币中随机选取一个,并投掷10次,发现有7次是正面,怎样通过这个信息推断,“我们选择的是Unfair coin”的可能性是多少?这也是贝叶斯定理的一个应用。

 

另一个比较常考的是Parametric和Non parametric方式。Parametric的方式是,我们假定 x 服从某一个分布,它的平均数和标准差是已知的。而Non parametric方式是我们不假定 x 服从任何分布,也不强加任何假设在这个数据上,这时我们可以运用Bootstrap,即Sample with replacement。

 

举一个例子,有100个同学,我们想知道他们的平均身高的置信区间。一方面,我们可以说它们的身高服从正态分布,那么置信区间是从正态分布中提取出来的。另一方面,我们也可以不管这100个同学的身高服从怎样的分布。我们可以每次从这100个同学中选100个样本,这100个样本可能会有重复,比如1号同学出现两次,2号同学没有被选入。每次取样后计算这些样本的平均身高,重复1000次取样后,我们就可以得到1000个平均身高值,这样就可以得出95%的置信区间是多少,这就是Non parametric的解决方式

 

Experiment design也是高频考点,它是每个大公司的日常工作都不可缺少的一部分。与Experiment Design相关的问题有:怎样做A/B test,怎样和客户及其他人解释p值等等。

 

最常考到的Coding题是怎样用R或Python做数据处理,在做数据处理的过程中,用的都是比较基本的Function,比如把数据在SQL里进行Join,或在R中进行Merge;在SQL里排序,或在R中Order等等。

 

还需要掌握基本的算法问题(如排序和搜索等)、数据结构问题Big O notation(程序运行时间和数据规模的关系)。为什么算法也是被考察的方面呢?因为Data Scientist写代码时也要考虑到代码的速度和效率,虽然这方面并不需要像SDE那样了解得很深。

 

 

Modeling问题中,比较常见的是Logistic / linear regression,都需要了解并深入掌握。另外,一定要对你在简历上写出来的Modeling特别地熟悉,面试官很可能会深入提问。如果你不是很了解这个Modeling,就不要轻易在简历上写出来。

 

以下列举了一些典型的Machine learning问题:

 

  • What are the performance metrics? Explain Precision and Recall, ROC, AUC
  • How to train decision trees, explain entropy
  • Problem of decision tree, and how to solve
  • Why we want to do bagging and random forest, and how they are implemented?
  • When we need sampling? How? Their impact on performance
  • Explain SVM, kernel. Why we need different kernels?
  • Explain neural network, and backward propagation
  • What is overfitting and how to prevent

 

Data Scientist的一个比较重要的技能是Product/business sense,会以开放式问题的形式考察,这些问题没有一个确定的答案,很多时候是给你一个Problem solving question。比如给公司某个产品提一些意见,或者某个产品的用户数量降低了,让你找出可能的原因,会问你拿到这个问题该如何入手,你需要迅速分析出:现在已知的事情是什么,不知道的是什么,下一步需要做什么,需要什么信息或数据做支持。这些问题主要考察的是你的分析思维,并且通过这些问题判断,在实际工作中,当把一个新项目交给你时,你能不能快速了解现状,快速上手,并知道下一步该做什么

 

以下列举了几个比较常考的Problem solving questions:

 

  • How to build a recommender system for movie streaming site
  • How to build a recommendation module for ecommerce site
  • How to build a credit card fraud detection model
  • How to optimize bid for ads, CTR modeling, conversion modeling
  • How to improve search experience: relevance, CTR, conversion, explore/exploit
  • How to predict churn rate

准备这些问题的方法就是多收集相关的真题,多加练习。尽早地多接触真题,才能熟练掌握这些问题,准备得也就越充足。