Categories
程式開發

Facebook的数据科学面试实践问题


本文作者Terence Shin是一名在读分析学硕士、数据科学家,他经常会在个人的技术博客上分享一些技术大厂的面试题,每篇文章的问题下他也会尽自己所能给出一些回答。今天的文章是他个人搜集整理的Facebook数据科学面试题,希望能够对各位读者有所帮助,如果对这些问题有更好的答案,欢迎在留言区进行交流讨论。

问:你从100个硬币中随机抽取1个硬币——这100个硬币中有1个不公平硬币(两面都是国徽),99个公平硬币(正常硬币)——然后抛这枚硬币10次看结果。如果结果10次都是国徽面朝上,那么这枚硬币是不公平的概率是多少?

可以使用贝叶斯定理来解答。贝叶斯定理的扩展方程如下:

image

假设捡到不公平硬币的概率表示为P(A),而连续抛10次都是国徽面朝上的概率表示为P(B)。那么P(B|A)等于1,P(B|A)等于0.11,而P(¬A)等于0.99。

套入等式,则P(A|B)=0.9118或91.18%。

问:有一栋100层的建筑物。给你两个相同的鸡蛋。如何使用这两个鸡蛋找到阈值层,也就是从阈值层以上(含该层)扔下鸡蛋后鸡蛋一定会打破。

更具体地说,问题是寻求给定两个鸡蛋后找到阈值层的最佳方法。

为了更好地理解这个问题,我们假设你只有一个鸡蛋。要找到阈值层,你只需从第一层开始扔鸡蛋,然后一次往上移一层直到鸡蛋扔下去会碎为止。

现在想象一下,假设我们有无限的鸡蛋。查找阈值下限的最佳方法是二进制搜索。首先,你应该从50楼开始。如果鸡蛋破裂,则将鸡蛋从25层扔下去;如果鸡蛋没有碎,则将鸡蛋拿到75层,然后重复此过程,直到找到阈值层为止。

但是只有两个鸡蛋的情况下,找到阈值层的最佳方法是上述两个解决方案的混合。

例如,你可以每隔5层扔下第一个鸡蛋,直到它碎裂为止,然后使用第二个鸡蛋找出阈值层在最后这5层之间的哪一层。在最坏的情况下,这种方法需要扔24次。

如果你每隔10层扔下第一个鸡蛋直到它碎裂,在最坏的情况下将需要扔19次,这比每隔5层扔下第一个鸡蛋要好得多。但如果你想要更好的方案呢?

这里就要引入最大遗憾最小化(minimization of maximum regret)这个概念了。基本上,这意味着当你以给定的增量(跳过多少个楼层)扔鸡蛋时,你希望每扔一次后,下一次都减小一点增量,因为这样的话包含阈值层的层数就会变少。也就是说,如果你的第一次扔鸡蛋是在第n层,假设它没有碎裂,那么你第二次扔鸡蛋应该在第n+(n-1)层。可以写成以下等式:

image

更进一步,上式可以简化为:

image

求解n,得出大约14。因此,你的策略是从第14层开始,然后是14+13,然后是14+13+12,依此类推,直到它碎裂,然后使用第二个鸡蛋一次上一层来找到阈值层!

问:我们有两种在信息流中投放广告的选项。选项1:每25个故事中有1个是广告。选择2:每个故事都有4%的机会成为广告。对于每个选项而言,在100个新闻故事中预期展示的广告数量是多少?

两个选项的期望概率都是100分之4。

对于选项1,1/25等于4/100。

对于选项2,100的4%为4/100。

是不是觉得答案看起来太简单了?要是我拉下什么东西的话请指出来!

问:如果只知道不同性别的身高数据,如何证明男性身高平均比女性高?

你可以使用假设检验来证明男性平均身高高于女性。

零假设方法假定男性和女性的平均身高相同,而备择假设方法假定男性的平均身高大于女性的平均身高。

然后,你会收集一个随机的男性和女性身高样本,并使用t检验来判断是否要拒绝这个零值。

问:如果iOS上70%的Facebook用户使用Instagram,而Android上只有35%的Facebook用户使用Instagram,你该如何调查这种差异的原因?

有很多可能导致这种差异的变量,我会检查下列因素:

  • iOS和Android用户的受众特征可能会有很大差异。例如,据Hootsuite称(https://blog.hootsuite.com/instagram-demographics/),有43%的女性使用Instagram,而男性只有31%。如果iOS的女性用户比例明显大于Android的女性用户,那就可以解释这种差异(或至少解释一部分)。年龄、种族、宗教信仰、地域等因素也都可以考虑进来。

  • 行为因素也会产生差异。如果iOS用户比Android用户更频繁地使用手机,那么与那些花更少时间在手机上的用户相比,前者更可能沉迷于Instagram和其他应用。

  • 要考虑的另一个可能因素是Google Play和App Store的区别。例如,如果Android用户明显有更多的应用(和社交媒体应用)可供选择,则可能导致更大的用户稀释度。

  • 最后,与iOS用户相比,用户体验上的任何差异都可能让Android用户不那么喜欢使用Instagram。如果与iOS用户相比,Android用户的应用有更多错误,那么他们在应用上活跃的可能性就会小一些。

问:某个平台上用户平均点赞数,以及用户在这个平台上花费的时间正在增加,但平台用户总数却在减少。可能导致这种情况的根本原因会是什么?

一般来说,你可能需要询问面试官以获取更多信息,不过这里假设这是他/她愿意提供的唯一信息。

这里应该注意用户的平均点赞数,这有两个原因。第一个原因是,随着时间的流逝,用户的平均参与度往往会增加——这是有道理的,因为随着时间的流逝,活跃用户更可能是平台的忠实用户,因为使用该平台已成为一种习惯做法。每个用户的点赞数会增加的另一个原因是,分母(用户总数)正在减少。假设停止使用该平台的用户是不活跃的用户,也就是很少参与并且点赞数低于平均水平的用户,那么他们的退出将增加用户整体的平均点赞数。

上面的解释也可以用来解释用户在平台上花费的时间。随着时间的流逝,活跃用户变得越来越活跃,而很少使用平台的用户会退出平台。总体而言,前者带来的参与度提升超过了后者退出的影响。

更进一步,“参与度低的用户”很可能是Facebook之前没检测到的机器人。但是随着时间的流逝,Facebook已经能够开发算法来发现和删除机器人。如果以前存在大量的机器人,这可能就是造成这种现象的根本原因。

问:Facebook看到点赞数按年同比增长了10%,为什么会这样?

某一年份的总点赞数取决于用户总数和每个用户的平均点赞数(我将其称为参与度)。

用户总数会增加的一些潜在原因如下:由于国际扩张而获得了新的用户,以及年龄较小的人群随着年龄的增长而开始注册Facebook。

参与度提高的一些潜在原因包括:越来越忠诚的用户使用应用的几率增加、新功能和新特性的影响以及用户体验改善的影响。

问:如果我们正在测试产品X,那么你会考虑采用哪些指标来确定它是否取得了成功?

决定产品成功的指标取决于业务模型以及企业要通过产品实现的目标。《精益分析》一书提出了一个很好的框架,可以用来确定在给定场景中要使用的指标:

image

问:如果某项目经理说他们想让信息流中的广告数量增加一倍,你如何确定这是不是一个好主意?

你可以将用户分为两组来执行A/B测试:分别是具有正常广告数量的对照组和具有两倍广告数量的测试组。然后,你将选择用来定义什么是“好主意”的指标。例如,我们可以说零假设是广告数量增加一倍会减少在Facebook上花费的时间,备择假设是广告数量增加不会对在Facebook上花费的时间产生任何影响。你还可以选择其他指标,例如活跃用户数或客户流失率等。接下来,你会进行测试并确定测试的统计显著性,以拒绝或不拒绝零值。

问:在一个游戏中,你会得到两个公平的六面骰子,并需要投掷骰子。如果骰子上的值之和等于7,则你会赢得21美元。但是,每次掷两个骰子都必须支付5美元。你会玩这个游戏吗?

掷出7的几率是1/6。

这意味着期望条件下你需要支付$30(5*6)才能赢得$21。

对比这两个数字,期望的花费为-$9(21–30)。

由于预期的收益为负,因此你不会玩这个游戏。

拓展阅读

Google的数据科学面试脑筋急转弯:https://towardsdatascience.com/googles-data-science-interview-brain-teasers-7f3c1dc4ea7f

40个针对数据科学家的统计面试问题与解答:https://towardsdatascience.com/40-statistics-interview-problems-and-answers-for-data-scientists-6971a02b7eee

亚马逊的数据科学家面试实践问题:https://towardsdatascience.com/amazon-data-scientist-interview-practice-problems-15b9b86e86c6

5个针对数据科学家的常见SQL面试问题:https://towardsdatascience.com/40-statistics-interview-problems-and-answers-for-data-scientists-6971a02b7eee

Facebook数据科学面试:https://medium.com/acing-ai/facebook-ai-interview-questions-acing-the-ai-interview-5982add0af55

Facebook数据科学家面试问题:https://www.glassdoor.ca/Interview/Facebook-Data-Scientist-Interview-Questions-EI_IE40772.0,8_KO9,23_IP3.htm

Facebook数据科学家面试:https://towardsdatascience.com/the-facebook-data-scientist-interview-38556739e872

Facebook数据科学面试问题例选:http://mockinterview.co/index.php/2018/04/07/sample-data-science-interview-questions-from-facebook/