写点什么

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

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

关注

评论

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

synchronized只会用不知道原理?一文搞定

Java鱼仔

Java 面试 并发 synchronized

巧合?达摩院2021十大科技是十九世纪那场幻想的升级版?

Java架构师迁哥

新的方式-谷歌浏览器插件的使用【天猫超市抢购飞天茅台】

谙忆

精选算法面试-队列

李孟聊AI

算法 队列 28天写作

Synchronized 精讲

伯阳

Java 多线程 高并发 synchronized java关键字

python 输入输出

赵开忠

Python 28天写作

SpringBoot太强了、ShardingSphere上榜

spring 编程 框架

计算机网络基础

roadup

TCP 网络 HTTP 计算机 HTTP3.0

架构师训练营第七周作业

zamkai

前端性能优化

roadup

大前端 性能调优

读《关于中台的思考与尝试》,我竟然懂得了这么多!

李忠良

中台 方法论

不可多得的干货!耗时两个礼拜,8000字安卓面试长文,内含福利

欢喜学安卓

android 程序员 面试 移动开发

数仓建设中最常用模型--Kimball维度建模详解

五分钟学大数据

大数据 数据仓库 数仓 维度建模

扫盲帖:聊聊微服务与分布式系统

AI乔治

Java 架构 微服务 分布式系统

助力ARM生态 —Dragonwell新增aarch64支持

阿里云基础软件团队

漫谈分层架构:为什么要进行架构分层?

AI乔治

Java 架构 高可用系统的架构 高可用架构

突然明白 npm install xxx 的业务实际用处

blueju

大前端 npm

Spring5.0源码学习系列之Spring AOP简述

AI乔治

Java spring 架构

异步I/O -- posix aio 从入门到放弃的吐血实践

1412

workflow srpc 异步调度 posix aio kqueue

我与你地铁高峰期的邂逅,背后竟然是?

脑极体

记录一下我离线依赖迁移安装的具体尝试过程

blueju

JavaScript 大前端 npm Node webpack

跨界

张老蔫

28天写作

redis中的一致性hash

原来不悔

redis 一致性hash

探索 React 合成事件

Geek_z9ygea

大前端 React 28天写作

CSS ( Cascading Style Sheets )

roadup

CSS

网线如何制作和如何使用?

Spring Boot 使用slf4j进行日志记录

武哥聊编程

Java springboot SpringBoot 2 slf4j 28天写作

三分钟快速详细安装CentOS

程序员的时光

Linux centos 程序员 28天写作

12月阿里蚂蚁金服四面(已拿offer)Java技术面经总结:项目+源码+jvm调优+MySQL

Java 学习 编程 程序员 面试

重学JS | 改变函数上下文的3种方式

梁龙先森

大前端 编程语言 28天写作

原理竟然是这!GitHub上标星13k的《Android面试突击版》,醍醐灌顶!

欢喜学安卓

android 程序员 面试 移动开发

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