数据工程师(DE)经典面试题

Nov 20, 2021 by Zhang in  Blog

与数据科学家一样,数据工程师平时需要处理庞大的数据集。由于传感器、网站、销售点和其他类型的数据收集的激增,数据工程已经发展成为一门学科,而且目前需求量巨大。

数据工程师专注于为数据科学家的分析准备大量复杂数据集。同时,数据工程师在向机器学习模型提供数据方面发挥着重要作用。事实上,如果公司要将数据转换为有用的程序,最先接触的就是数据工程师。

但这门学科学起来简单吗?在数据工程师工作面试中你会遇到哪些问题?为了找到答案,我们采访了几位专家。

优秀的数据工程师具备哪些品质?

大数据研究所(Big Data Institute)执行董事杰斯•安德森(Jess Anderson)表示,数据工程师的必备技能取决于不同公司的需求。 Anderson公司需要的是“充分了解公司正在使用的框架,同时,能够创建复杂的数据系统也很重要。”

在招聘数据工程师时,Illumisoft 的创始人兼首席执行官丹·普林斯(Dan Prince)看重的是能够轻松有效地传达复杂想法的能力。换句话说,同理心和沟通等“软技能”是数据工程师的关键。公司还注重候选人掌握问题、理解问题背景并提出正确问题的能力。

“我还希望这些候选人有一些主动参与项目的经验经验,”普林斯说。“许多学生在完成大学或学位课程后,从未尝试将他们学到的知识应用至学术界以外的工作中。我们公司需要的是那些敢于尝试的学生,如果他们敢于推销自己,那就更好了。”

Unit8 SA 的数据科学家 Rudolf Höhn 告诉 Dice:“我们希望招来的数据工程师是技术人员,但也能与非技术人员沟通,例如项目客户。他们可能会跟客户打交道;因此,有一点很重要,他们能够清楚地表达自己的想法,尤其是在商业人士面前。”

数据工程师应该具备哪些技能?

所有数据工程师都应该掌握编码技能,”mParticle 工程副总裁 Melissa Benua 说,“尽管语言本身并不重要,候选人还是应该熟悉分布式系统设计原则。同样,他们应该拥有丰富的数据库经验,同时擅长编写 SQL——尤其是处理大型数据集的查询(高性能,低成本)——以及基本的数据库管理。AI/ML知识是加分项,通常不会被列为必备技能。”

StackPath(边缘计算平台服务提供商)的人才招聘经理 Tee Selesi 补充道:“我们公司对分析数据集和发现趋势的需求不断增加,因此我们还是非常想要面试具有软件编程、数据建模和数据分区背景的候选人。优秀的候选人还需要深入了解大型数据集带来的优化/约束。

Anderson 补充道:“候选人应该至少掌握中级编程技能,至少拥有使用Apache Spark等批处理系统的经验。

Prince 补充道:“候选人必须拥有使用 Apache Hadoop 和 Spark、C++、Amazon Web Services 和 Redshift 等行业工具的经验。候选人还必须了解不同的数据库系统,包括关系型和非关系型数据库,同时了解数据仓库解决方案、ETL 工具、机器学习和数据 API,适当了解一Python、 Java 及扩展编程语言。除了沟通技巧、表达技巧和主动参与项目的经验以外,清楚了解分布式系统、算法和数据结构知识也是加分项。”

数据工程师的面试通常会出现哪些问题?

Anderson、Benua、Selesi 和 Educative Fahim ul Haq 首席执行官为数据工程师面试提供了以下问题:

  • 你是否有过将非结构化数据转换为结构化数据的经验?
  • 如何验证数据从一个数据库迁移到另一个数据库?
  • 什么是Hadoop?Hadoop与大数据有什么关系?你能描述一下Hadoop的不同组成部分吗?
  • 你通常会使用哪些 Python 库处理数据?
  • 你认为自己是以database还是以pipeline-centric为中心?
  • 请告诉我们你所构建的分布式系统。你是如何设计的?
  • 你如何处理与同事的冲突?你能给我们举个例子吗?
  • *Python函数中的args 和 **kwargs 是什么意思?
  • 设计一个类似 YouTube 或 Netflix 这样的视频流媒体服务。
  • 设计一个面向消费者的数据存储解决方案,例如 Google Drive 或 Dropbox。
  • 你是否有使用 PostgreSQL 或其他 RDBMS 的经验,并对 NoSQL 数据库有大致的了解?
  • 你是否有在 Linux/Unix Python 和/或 Golang 上编写 ETL 工作流脚本的经验?
  • 你是否有使用 Kakfa(或类似公司)构建和维护数据管道的经验?
  • 你是否有在 SQL 中编写分析 (OLAP) 查询的经验?
  • 你是否有 Spark 的实践经验?
  • 你是否有使用 GCP、AWS 和 Azure 等云平台的经验?
  • 你是否有使用 Docker 和/或 Kubernetes 的经验?
  • 请介绍一个你的数据工程项目,最好是你从从构想到正式投入使用并将其投入生产都全程参与项目。
  • 请描述一下从队列中读取数据并定期将数据上传到 S3 的管道是如何运行的。你会如何扩大数据规模?
  • 设计一个可以与 Google Analytics 竞争的 SaaS 平台。如何实现扩展?在首先需要解决问题中,你会做出怎样的权衡?
  • 根据我所提供的数据集,编写 SQL 来回答这些相关的业务问题。
  • 为什么选择 S3 而不是 NoSQL 数据库?
  • 为什么要选择 NoSQL 数据库而不是关系数据库?
  • 如何判断 Spark 作业中的性能问题?
  • 什么是随机排序?
  • Spark S3 有何不同?

面试结束后的编码任务(2-3 小时):编写一个管道,用于读取输入文件并生成聚合统计信息(类似于数据库中的分组查询,但需要自己编写流程)。根据级别的不同,交付物可以是一个基本管道,也可以是一些可扩展的解决方案。

如何学习成为一名数据工程师?

我们的专家普遍同意学习数据工程的最佳方法是学习编码,然后熟悉数据工程师使用的平台。该学科以代码为中心,因此了解 SQL、Python 和 Java 至关重要。

我们采访的所有专家一致同意,数据工程师本质上是问题解决者。Benua 指出:“Hackerrank 等工具可以帮助候选人提升特定的问题解决技能,”并补充道:“好的面试通常基于在工作中获得的技能和经验,而不是基于记忆算法或程式化的复杂编码问题。我们经常看到候选人利用云提供商(尤其是 GCP 和 AWS)的免费试用或积分练习基本技能,尝试建立自己的基本ETL管道 (ETL Pipeline)或简单服务。”

作者:Nate Swanner

北美求职60秒:选择跳槽前需要考虑哪些因素?(6月第1周)

Jun 09, 2023

本期话题,带你了解“​选择跳槽前需要考虑哪些因素?”

北美求职60秒:公司如何通过ATS系统自动筛选求职者简历?(10月第2周)

Oct 18, 2023

本期话题,带你了解“公司如何通过ATS系统自动筛选求职者简历?”

如何赢得Scrum Master岗位面试

Apr 24, 2023

Scrum是一种用于软件开发、市场营销和其他领域的项目管理工具。实践Scrum的团队会将一个项目分解成更小的任务,并在短时间内完成它们,这就是所谓的“sprint”。

Leave a Comment

Your email address will not be published. Required fields are marked *

Comment *