速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

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/


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

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

关注

评论

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

甲方日常 93

句子

工作 随笔杂谈 日常

算法攻关 - 从上到下打印二叉树2 (O(n))_offer32

小诚信驿站

刘晓成 小诚信驿站 28天写作 算法攻关 从上到下打印二叉树

2021年金三银四全新版互联网大厂Java面试题,分类65份PDF,累计2340页

Java 架构 面试

Android源码分析笔记:(2021-3-13)事件分发

Geek_416be1

币BI掌柜量化交易策略APP开发(系统案例)

对产品经理的一些思考

ES_her0

28天写作 3月日更

Mac Os下搭建Hadoop运行环境

白贺BaiHe

大数据 数仓 hadoo

5年Java开发,面试4大厂(阿里、拼多多、字节、美团)后,我总结出大厂高频面试真题及解析

Java架构之路

Java 程序员 架构 面试 编程语言

Wireshark数据包分析学习笔记Day10

穿过生命散发芬芳

Wireshark 数据包分析 3月日更

使用Hadoop相关框架进行网站流量日志分析

五分钟学大数据

大数据 hadoop 28天写作 3月日更

马特量化炒币机器人APP系统开发详情介绍

#区块链#

如何在子线程中使用Toast显示消息

Geek_416be1

复盘读书笔记

lenka

3月日更

基于SparkMLlib智能课堂教学评价系统-相关研究及文献分析(二)

大数据技术指南

大数据 智能时代 28天写作 3月日更

为什么在做微服务设计的时候需要DDD?

xcbeyond

微服务 DDD 3月日更

冒泡插入选择排序以及PHP实现

一个大红包

3月日更

《3%法则》读书笔记

boshi

读书笔记 七日更

第一天(VBA, Python最最最基础入门)

橙橙橙橙汁丶

自学 办公自动化 python excel IT蜗壳教学 vba

如何使用标准稳压器输出几百毫伏极低直流电压?

不脱发的程序猿

28天写作 电路设计 3月日更 电源电路 标准稳压器

沟通视窗:改善人际沟通

石云升

28天写作 职场经验 管理经验 3月日更 沟通模型

团队开发工具之一——Wiki

吴脑的键客

wiki

第六次作业

秦挺

源码分析 -Netty:多线程在Netty中的应用

程序员架构进阶

Java 源码分析 Netty 28天写作 3月日更

种春草肥禾,织数字天下

脑极体

竞价实例一小时亏损21万

jinjin

阿里云 抢占式实例 竞价实例 spot

Web安全之XSS

架构精进之路

Web 安全 3月日更

量化合约跟单交易系统开发软件

#区块链#

redis分布式锁实现

Sakura

28天写作 3月日更

翻译:《实用的Python编程》05_02_Classes_encapsulation

codists

Python

去年,蚂蚁一面的一道笔试题,中等难度

yes

面试

BI币掌柜量化自动交易机器人开发

#区块链#

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