在线[编码]回合:
测试分为三个部分——编码、技术和能力。它托管在 HackerRank 上。
编码回合有 2 个问题 – 时间限制为 50 分钟。第一个问题是关于二叉树遍历(树以数组的形式存储),第二个问题是基于动态规划(背包问题的变体)。
技术回合有 10 个问题 – 时间限制为 20 分钟。它基于数据结构、操作系统、数据库系统、面向对象的编程和计算机网络。
能力倾向轮有 10 个问题 – 时间限制为 20 分钟。这些是基本的数学问题和一些基于信息的谜题。
在这一轮之后,大约有 15-17 名学生入围。
技术回合 – 1:
面试官看了我的简历后,让我解释一下我在实习期间做的项目。在那之后,我被要求解释我的编译器项目的所有内容(包括编译器的开发阶段和所有使用的数据结构)。
接下来是一个设计问题——你将如何在谷歌浏览器中实现“历史”功能?我预计会提出可能的用例,高效的数据结构来实现功能(如用于存储 url 的基于链表的队列,用于实现历史搜索的 trie 等),然后将它们合并到一个应用程序中。每当我遇到困难时,面试官都会给出提示。
在这之后,他问了我一些关于操作系统的问题,主要是围绕信号量和餐饮哲学家问题。我没有被要求在整个回合中编写任何代码。
技术回合 – 2:
该轮开始时详细讨论了我的并行计算项目——“并行倒排索引”。然后面试官问了我最强大的编程语言(在我的例子中是Java )并问了很多关于语言内部实现的问题,包括它是编译的还是解释的,JVM 字节码解释器,静态函数,作用域,包,继承、接口、抽象类等。强烈建议彻底了解至少一种语言(最好是 C++ 或Java)。学习“编程语言原理”也可能有所帮助。
接下来是来自数据库系统的字符串问题,包括主键、候选键、超级键、1NF、2NF、3NF、多值依赖,以及包括哈希和 B 树在内的索引技术。始终为 DE Shaw 面试彻底准备数据库系统,因为他们几乎对每个候选人都从这个主题提出了很多问题。 (不记得 SQL,只需了解所有类型的查询都在那里)。还建议从 OOP 准备设计模式。
人力资源回合:
他让我详细介绍一下我自己。这持续了大约 15 分钟。然后他问我在 Liv.AI 上的体验如何(我在那里做过暑期实习)。然后他让我告诉他我在大学生活中发现的最有趣的项目以及我在工作时面临的挑战是什么,但用普通人的语言解释它(不涉及技术细节)。然后,他问我为什么要加入 DE Shaw(或任何其他与此相关的工作)而不去接受高等教育。在这一切之后,他向我解释了 DE Shaw 的工作文化,以及如果他们雇用我,我作为一名软件开发人员对我的期望。
面试过程持续了大约3个小时,最终选出了2名学生。
重要课程:
DE Shaw面试必须知道的这些课程:
- 数据结构和算法
- 面向对象编程
- 操作系统
- 数据库系统
- 计算机网络