最常见的数据科学面试问题和答案

源节点: 1860815

银博客最常见的数据科学面试问题和答案

在分析了过去几年公司的 900 多个数据科学面试问题后,本指南回顾了最常见的数据科学面试问题类别,每个类别都附有示例。


By 内特·罗西迪, 数据科学家和产品经理.

成为一名数据科学家被认为是一种享有声望的特质。早在 2012 年,《哈佛商业评论》就将“数据科学家”称为 21 世纪最性感的职业,而该行业职位不断增长的趋势似乎也证实了这一说法。为了证实这种性感仍在持续,来自 Glassdoor 的信息显示,数据科学家是 2021 年美国第二好的工作。

资料来源:玻璃门。

要获得如此有声望的工作,您必须经过严格的面试。 提出的数据科学问题可能非常广泛和复杂。 考虑到数据科学家的角色通常涉及如此多的领域,这是预料之中的。 为了帮助您准备数据科学工作面试,我回顾了所有适用的问题,并将它们分为不同的问题类别。 我就是这样做的。

分析的描述和方法

我从各种求职板和网站以及公司评论平台(例如 Glassdoor、Indeed、Reddit 和 Blind App)收集了数据。 更准确地说,四年来收集了903个问题。

这些问题被分为预先确定的类别。 这些类别是专家对我们的资料来源中的面试经历描述进行分析的结果。

类别是:

  1. 编码
  2. 造型
  3. 算法
  4. 统计报表
  5. 可能性
  6. 产品
  7. 商业案例
  8. 系统设计
  9. 文案

您应该期待哪些类型的面试问题?

此图表根据收集的数据显示每个类别的问题类型。

转换为百分比后,图表如下所示:

正如您所看到的,编码和建模问题是最主要的。 超过一半的问题来自该领域。 仔细想想,这并不奇怪。 编码和建模可能是数据科学家最重要的两项技能。 编码类型的问题很普遍,占所有问题的三分之一以上。 其他问题类型,例如算法和统计,也相当重要; 24% 的问题来自这两类。 其他类别未如所代表。 考虑到数据科学家角色的性质,我认为这是合理的。

现在,我想引导您了解每个问题类别,并向您展示所提出问题的一些示例。

数据科学面试问题中最受考验的概念

编码​

正如您已经看到的,编码问题是数据科学中最重要的主题。 此类问题将需要使用代码进行某种数据操作来识别见解。 这些问题旨在测试编码能力、解决问题的能力和创造力。 您通常会在计算机或白板上执行此操作。

编码面试问题示例

一个 来自微软的例子 是这个吗:

: “计算新用户和现有用户的份额。 输出月份、新用户份额和现有用户份额的比率。 新用户定义为当月开始使用服务的用户。 现有用户是指当月开始使用服务并在上个月使用过服务的用户。 假设日期都是从 2020 年开始。”

您将使用该表 事实事件,样本数据如下所示:

要获得所需的输出,您应该编写以下代码:

with all_users as ( SELECT date_part('month', time_id) AS Month, count(DISTINCT user_id) as all_users FROM fact_events GROUP BY Month), new_users as ( SELECT date_part('month', new_user_start_date) AS Month, count(DISTINCT user_id) as new_users FROM (SELECT user_id, min(time_id) as new_user_start_date FROM fact_events GROUP BY user_id) sq GROUP BY Month ) SELECT au.month, new_users / all_users::decimal as share_new_users, 1- (new_users / all_users::decimal) as share_existing_users FROM all_users au JOIN new_users nu ON nu.month = au.month 

在编码方面,用 SQL 编写代码是最常被测试的概念。 这并不奇怪,因为 SQL 一直是数据科学中最常用的工具。 在面试中几乎无法避免的概念之一是连接。 因此,请确保您了解不同连接之间的区别以及如何使用它们来获得所需的结果。

此外,您还可以经常使用 GROUP BY 子句对数据进行分组。 通常询问的其他一些概念是使用 WHERE 和/或 HAVING 子句过滤数据。 系统还会要求您选择不同的数据。 另外,请确保您了解聚合函数,例如 SUM()、AVG()、COUNT()、MIN()、MAX()。

有些概念并不经常出现,但值得提及并为此类问题做好准备。 例如,公共表表达式或 CTE 就是这样的主题之一。 另一种是 CASE() 子句。 另外,不要忘记刷新您对处理字符串数据类型和日期的记忆。

建模

建模是我们研究数据中的第二大类别,20% 的问题都来自这里。 这些问题旨在测试您构建统计模型和实施机器学习模型的知识。

建模面试问题示例

回归,面试中最常见的技术数据科学概念。 考虑到统计模型的性质,这并不奇怪。

一个 来自 Galvanize 的示例 将是以下内容:

: “回归中的正则化是什么?”

您可以这样回答这个问题:

回答: “正则化是一种特殊类型的回归,其中系数估计被限制(或正则化)为零。 通过这样做,可以减少模型的方差,同时减少采样误差。 正则化用于避免或减少过度拟合。 当模型对训练数据学习得很好时,就会发生过度拟合,从而削弱了模型在新数据上的性能。 为了避免过度拟合,通常使用 Ridge 或 Lasso 正则化。”

定期测试的一些概念同样是其他回归分析概念,例如逻辑回归、贝叶斯逻辑回归和朴素贝叶斯分类器。 您还可能会被问到有关随机森林以及测试和评估模型的问题。

算法

算法问题都是需要解决数学问题的问题,主要通过使用一种编程语言的代码来解决。 这些问题涉及逐步的过程,通常需要调整或计算才能得出答案。 这些问题测试解决问题和数据操作的基本知识,可以针对工作中的复杂问题实施。

算法面试题示例

算法中测试最多的技术概念是用编程语言解决数学或语法问题。

这是 你可以在 Leetcode 上找到一个例子:

: “给你两个非空链表,代表两个非负整数。这些数字以相反的顺序存储,并且每个节点都包含一个数字。将两个数字相加并以链表形式返回总和。”

数据的示例可能是这样的:

来源:Leetcode。

回答:用Java编写的代码应该是:

public ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode dummyHead = new ListNode(0); ListNode p = l1, q = l2, curr = dummyHead; 整数进位=0; while (p != null || q != null) { int x = (p != null) ? p.val : 0; int y = (q != null) ? q.val : 0; int sum = 进位 + x + y; 进位=总和/10; curr.next = new ListNode(sum % 10); curr = curr.next; if (p != null) p = p.next; if (q != null) q = q.next; } if (carry > 0) { curr.next = new ListNode(carry); 返回 dummyHead.next; } 

此类问题经常测试的其他一般概念是数组、动态规划、字符串、贪心算法、深度优先搜索、树、哈希表和二分搜索。

统计报表

统计面试问题是测试统计理论和相关原理知识的问题。 这些问题旨在测试您对数据科学基本理论原理的熟悉程度。 能够理解正在进行的分析的理论和数学背景非常重要。 好好回答这些问题,每个面试官都会欣赏你的。

统计面试题示例

提到最多的技术概念是采样和分布。 对于数据科学家来说,这是数据科学家日常执行的最常用的统计原理之一。

例如, IBM 的面试问题 问:

: “具有非高斯分布的数据类型的示例是什么?”

要回答这个问题,您可以首先定义高斯分布。 然后您可以通过给出非高斯分布的示例来遵循这一点。 像这样的东西:

回答: “高斯分布是一种在检查平均值的标准偏差时可以找到特定已知百分比的数据的分布,也称为正态分布。 非高斯分布的一些例子可以是指数分布或二项式分布。”

在准备求职面试时,请确保您还涵盖以下主题:方差和标准差、协方差和相关性、p 值、平均值和中位数、假设检验和贝叶斯统计。 这些都是作为数据科学家所需要的概念,因此在工作面试中也需要这些概念。

可能性

这些问题仅需要概率概念的理论知识。 面试官提出这些问题是为了深入了解您对概率的方法和用途的了解,以完成通常在工作场所进行的复杂数据研究。

概率面试题示例

双关语很可能是,您将遇到的问题是计算从一组骰子/卡片中获得特定卡片/数字的概率。 这似乎是我们研究中大多数公司最常见的问题,因为许多公司都提出过此类问题。

一个这样的例子 Facebook 的概率问题:

: “在一副 52 张牌中,分别抽两张牌,得到一对的概率是多少?”

您可以通过以下方式回答这个问题:

回答: “你抓到的第一张牌可以是任何牌,所以除了牌组中少了一张牌之外,它不会影响结果。 抽出第一张牌后,牌组中剩余三张牌可以抽成一对。 因此,您的第一张牌与一对配对的机会是 3 张中的 51 张(剩余的牌)。 这意味着该事件发生的概率是 3/51 或 5.89%。”

由于这是一种仅涉及概率的“专业”问题,因此不会询问其他概念。 唯一的区别是问题的想象力有多丰富。 但基本上,你总是必须计算某些事件的概率并展示你的想法。

产品

产品面试问题将要求您通过数据评估产品/服务的性能。 这些问题测试您在任何环境(如日常工作)中适应和使用数据科学原理的知识。

产品面试问题示例

该类别中最突出的技术概念是识别公司的产品并从数据科学家的角度提出改进建议。 产品方面测试的技术概念的巨大差异可以用产品问题的性质以及回答这些问题所需的更高水平的创造力来解释。

一个例子的 来自 Facebook 的产品问题 将会:

: “你最喜欢的 Facebook 产品是什么?你会如何改进它?”

回答: 由于问题的性质,我们将让您自己回答这个问题。

测试的一般概念在很大程度上取决于面试你的公司。 只要确保您熟悉公司的业务及其产品(理想情况下,您也是他们的用户),就可以了。

商业案例

此类别包括与测试数据科学技能的业务相关的案例研究和一般问题。 了解如何回答这些问题的重要性可能是巨大的,因为一些面试官希望应聘者在雇用他们之前知道如何应用数据科学原理来解决公司的具体问题。

商业案例问题示例

由于问题类型的性质,我无法识别出任何突出的技术概念。 由于这里分类的大多数问题都是案例研究,因此它们在某种程度上是独一无二的。

然而,这里有一个例子 Uber 的商业案例问题:

: “有一群人从两个距离很近的城市(例如门洛帕克和帕洛阿尔托)乘坐优步,你能想到的任何数据都可以被收集。 您会收集哪些数据来确定乘客乘车的城市?”

回答: “为了确定城市,我们需要访问位置/地理数据。 收集的数据可能是 GPS 坐标、经度/纬度和邮政编码。”

系统设计

系统设计问题都是与设计技术系统相关的问题。 他们被要求分析候选人解决​​问题、创建和设计系统以帮助客户/客户的过程。 了解系统设计对于数据科学家来说非常重要; 即使您的角色不是设计一个系统,您也很可能在一个已建立的系统中发挥作用,并且需要知道它是如何工作的才能完成您的工作。

系统设计面试题示例

这些问题涵盖不同的主题和任务。 但最突出的是建立一个数据库。 数据科学家每天都会与数据库打交道,因此提出这个问题来看看是否可以从头开始构建数据库是有意义的。

这是一个 Audible 中的问题示例 我们的研究发现:

: “您能向我们介绍一下如何构建推荐系统吗?”

回答: 由于回答这个问题的方法有很多种,我们将让您自己想出一种构建方法。

同样,要回答这些问题,了解公司的业务至关重要。 考虑一下公司最可能需要的数据库,并尝试在面试前详细说明您的方法。

文案

技术问题都是询问各种数据科学技术概念解释的问题。 技术问题是理论问题,需要了解您将在公司使用的技术。 由于本质原因,它们看起来与编码问题相似。 了解你所做的事情背后的理论非常重要,因此在面试中经常会被问到技术问题。

技术面试问题示例

最受考验的领域是Python和SQL的理论知识。 这并不奇怪,因为这两种语言在数据科学中占据主导地位,而 R 则是对 Python 的补充。

一个例子的 来自沃尔玛的真实技术问题 将会:

Python中有哪些数据结构?=

回答: “数据结构用于存储数据。 Python中有四种数据结构:List、Dictionary、Tuple和Set。 这些是内置的数据结构。 列表用于创建可以包含不同类型数据的列表。 字典基本上是一组键; 它们用于使用键存储值并使用相同的键获取数据。 元组与列表相同。 不同之处在于,在元组中,数据不能更改。 集合包含无重复的无序元素。 除了内置数据结构之外,还有用户定义的数据结构。”

这些都是包罗万象的问题。 它是所有不能完全归入其他类别的问题的类别。 因此,不存在或多或少出现的特定概念。

结论

本数据科学面试指南的编写是为了支持为了解数据科学面试中提出的问题类型而进行的研究。 面试问题的数据取自数十家公司四年来的数据并进行了分析。 这些问题分为九种不同的问题类型(算法、业务案例、编码、建模、概率、产品、统计、系统设计和技术问题)。

作为分析的一部分,我讨论了每个问题类型类别中的一些最常见的技术概念。 例如,最常被问到的统计问题与抽样和分布有关。 每个问题类别都有一个真实问题的实际示例来支持。

本文旨在为您提供面试准备或只是了解有关数据科学的更多信息的重要指南。 我希望我能帮助您对数据科学面试过程感到更加自在。 祝你面试顺利!

原版。 经许可重新发布。

相关新闻:

资料来源:https://www.kdnuggets.com/2021/08/common-data-science-interview-questions-answers.html

时间戳记:

更多来自 掘金队