NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

  • 2020-03-24
  • 本文字数:3567 字

    阅读完需:约 12 分钟

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

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


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


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



假设捡到不公平硬币的概率表示为 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)层。可以写成以下等式:



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



求解 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,那么你会考虑采用哪些指标来确定它是否取得了成功?


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



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


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


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


掷出 7 的几率是 1/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/


公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2020-03-24 14:262783
用户头像
陈思 InfoQ编辑

发布了 576 篇内容, 共 262.9 次阅读, 收获喜欢 1293 次。

关注

评论

发布
暂无评论
发现更多内容

JVM 垃圾回收原理

周冬辉

糟糕,你写的 BUG 要被存1000年了!

华为云开发者联盟

GitHub 开源 代码 bug 卤化银胶片

周子衡 | 数字资产、数字支付及跨境活动——以美元数字化为例

CECBC

加密货币 数字资产

作业1

chenzt

前端面试vue部分(1)——谈谈你对MVVM的理解

dd多了个多

面试 Vue 大前端 Web

应用开发基础知识-文件系统

superman

文件系统

消息队列面试热点一锅端

yes

kafka 面试 RocketMQ 消息队列

第九周总结

andy

什么是零代码?零代码开发可以带来的好处

代码制造者

可视化 零代码 编程效率

汇丰坠落:世间已无「日不落」

钛禾产业观察

汇丰 财经

大厂的人才衡量标准

池建强

人才标准

起伏激荡的以太网,抱上这条大腿才能乘风破浪

脑极体

一位区块链产品经理讲述“区块链”的通知 重点方向包括区块链安全

CECBC

物联网 区块链技术 联盟链

Kafka集群缩容实战

我是个bug

大数据 kafka 运维 Big Data

架构师训练营第9周

大丁💸💵💴💶🚀🐟

VIPKID 在线教育场景下的实时计算技术落地和实践

Apache Flink

flink

我是如何写读书笔记的

dd多了个多

读书笔记

读书,区分一二三四手知识

dd多了个多

读书笔记

《深度工作》学习笔记(4)

石云升

学习 读书笔记 习惯 专注 深度工作

1.8w字 | 初中级前端 JavaScript 自测清单 - 2

pingan8787

Java 大前端

总结

chenzt

百度安全研究院:区块链智能合约介绍

百度安全

比特币 区块链 智能合约 以太坊

垃圾回收

Mr.Monkey

区块链在这些生活场景中悄然落地了......

CECBC

区块链 落地应用

Java 垃圾回收

dongge

读书时,如何提炼文章架构形成思维导图

dd多了个多

读书笔记 读书感悟

写作社区划线笔记新功能全新上线!给你带来不一样的写作学习体验~

InfoQ写作社区官方

写作平台 玩转写作平台 热门活动

湾区金科沙龙,华青融天技术总监吴伟平详解旁路式应用性能监控

DT极客

前端面试 vue 部分 (2)——Vue是如何实现双向绑定的

dd多了个多

面试 Vue 大前端 Web

架构训练营第九周作业

张锐

第九周作业

andy

极客大学

Facebook的数据科学面试实践问题_AI&大模型_Terence Shin_InfoQ精选文章