数据科学面试中传统的 CS 问题有多普遍?

数据挖掘 算法
2022-03-05 18:09:13

我已经开始面试数据科学职位,我注意到很多公司都会问传统的计算机科学问题。我没有正规的 CS 教育。事实上,我在大学时主修商科,情况恰恰相反。我对二进制搜索、冒泡排序或动态编程等传统 CS 算法一无所知。

我在机器学习/数据科学方面有很强的背景,但我所知道的几乎所有事情都是通过多年的谷歌搜索、做有趣的 ML 副项目、Kaggle 以及通常以艰难的方式学习的东西。我知道数据科学家需要能够编码。具有讽刺意味的是,我是一名专业的软件工程师,我整天都在编码。我只是没有理论背景。在我开始认真申请数据科学工作之前,我是否需要阅读诸如《算法简介》之类的内容并复习 CS 本科生的工作?


请注意:我知道这里还有很多其他问题,关于学习什么才能成为一名优秀的数据科学家,但这个问题略有不同。我个人不同意传统 CS 算法的知识与大多数日常数据科学工作相关,并且了解这些知识会让你成为更好的数据科学家。

大多数机器学习算法(梯度提升、随机森林、线性模型、SVM、神经网络等)都可以在易于使用的库中使用,例如 caret (R);scikit-learn 和 TensorFlow (Python);或 H2O 和 MLlib (Scala/Java)。还有一些易于使用的工具,如 Spark,可以使这些算法扩展。我觉得理解学习算法(如梯度下降)如何工作是相关的,但我不同意递归或动态规划是相关的。我错了吗?我应该更开放吗?

1个回答

这取决于您是否要编写生产代码,甚至是由其他人实现的伪代码。如果是这样,是的,您需要计算机科学技能。如果您只打算分析数据,从技术上讲,您可以不使用它,但有些公司(例如 Facebook)希望所有技术员工都了解计算机科学。

计算机科学甚至对纯粹的分析师也很有用,因为它将帮助您实现库中未涵盖的算法。

例如,我使用递归和动态编程,但我编写了生产代码。这是我的可交付成果,经过分析和原型设计。