写点什么

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:263134
用户头像
陈思 InfoQ编辑

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

关注

评论

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

AI耳机成智能硬件布局入口产品 科大讯飞无线智能耳机率先突围

科技热闻

饿了么基于Flink+Paimon+StarRocks的实时湖仓探索

Apache Flink

大数据 flink 实时计算 StarRocks

ES6 新特性详解 - 迭代器与生成器

yuanyxh

js #前端

CSS 数据类型与浏览器渐进兼容处理

yuanyxh

CSS #前端

ES6 新特性详解 - 异步函数

yuanyxh

js #前端

姿态逐渐“亲民” 2024年AI五大趋势备受期待

快乐非自愿限量之名

人工智能

飞猪、去哪儿网接连“出事”,在线旅游平台有多少“坑”?

趣解商业

去哪儿网 飞猪 在线旅游平台

ES6 新特性详解 - 类

yuanyxh

js #前端

JavaScript 概念 - 闭包

yuanyxh

js #前端

代码风格与编码习惯

yuanyxh

js #前端

深度解析 MintRich 独特的价格曲线机制玩法

NFT Research

web3 NFT\

什么是函数式编程

yuanyxh

js 函数式编程 #前端

JavaScript 概念 - 事件循环

yuanyxh

js #前端

ES6 新特性详解 - Symbol

yuanyxh

js #前端

HTML5 拖拽 Api 研究

yuanyxh

js #前端

物流数字化:低代码推进供应链数字化进程

不在线第一只蜗牛

低代码 数字化 供应链 物流

深入浅出 GIF

yuanyxh

js GIF #前端

利用 FileSystem API 实现一个 web 端的残缺版文件管理器

yuanyxh

js #前端

typora & vscode 实现图片自动上传与云

yuanyxh

Typora js #前端

应用闪退分析与 uniapp 安卓原生插件开发

yuanyxh

调试 an'droid #前端

ES6 新特性详解 - 解构赋值

yuanyxh

js #前端

ES6 新特性详解 - 箭头函数

yuanyxh

js #前端

upload 组件封装

yuanyxh

js 上传 #前端

redux 源码学习

yuanyxh

js Redux #前端

Pro Git 阅读理解:Git 是如何实现的

yuanyxh

js #前端

JavaScript 概念 - 高阶函数

yuanyxh

js #前端

记录一次关于 vuepress 滚动恢复的讨论

yuanyxh

js #前端

JavaScript 概念 - 原型与继承

yuanyxh

js #前端

ES6 新特性详解 - Promise

yuanyxh

js Promise #前端

ES6 新特性详解 - let/const

yuanyxh

js ES6 ES5 #前端

个人博客搭建 - 基于Hexo + Next + Github

yuanyxh

Hexo js #前端

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