DE Shaw 于 2020 年 8 月的第一周在我们的校园举办了 SDE 实习生职位(2 个月)的校园招聘活动。
以下是我的经验总结。
评选过程分为三轮:
第 1 轮:技术测试(90 分钟)|黑客排名
本轮共有三个代码题。一个问题是关于数组的,而另外两个是关于动态规划的。每个问题都有固定的时间限制,不能延续到下一个问题。这三个问题是:
- 给定一个由 n 个数字组成的数组,找到满足 Ai
Aj>Ak 的三元组的数量,其中 I、j、k 是数组的索引且 i - 给你 x 只狮子、y 只老虎、z 只豹子和 w 只黑豹。一排有 m 个笼子,你必须填满所有 m 个笼子,这样没有两只相同的动物彼此相邻。找出这样做的方法总数。给定的约束是:(0<=x,y,z,w<=51)。用DP来解决。
- 这是一个标准的 DP 问题,即三个字符串的 LCS。
我在 25 分钟中的 15-17 分钟内解决了第一个问题,在第二个问题中我完成了 30 分钟,第三个问题我在 35 分钟中的 10-12 分钟内解决了,因此我被选中进入下一轮.
共有 101 名学生入围技术面试,其中 12 名入围。
第二轮:技术面试(第一轮)|代码对(黑客等级)| (60 分钟)
这一轮将在编码轮之后三天进行。有两个面试官组成的小组,他们都很愉快。您可以使用平台的编码板和白板功能来描述您的解决方案。这一轮的问题数量并不是每个候选人都固定的,但基本上取决于面试官。
这一轮需要深入了解我的主要编程语言:C++,以及 DSA 和算法。本轮总结如下:
- 他们问我哪种语言是我的主要语言以及我熟悉的语言。
- 您将如何在 C++ 中实现您自己的向量(动态数组)?我回答了使用链表或使用 new 和 delete 的自扩展数组(向量实现的实际方式)。然后他们问我两种实现的添加、删除、搜索和访问过程的详细实现,它们的时间复杂度,以及它们与另一种方法的比较。
- 与上述问题类似,他们还要求在 C++ 中详细实现有序和无序映射和集合。
- 避免和解决散列冲突的不同方法
- 在没有额外空间的情况下合并两个大小为 n 和 m 的未排序数组
- 当我们需要 DP 和我们可以使用贪婪时,硬币交换问题。
- 其他一些简单的 DP 和 Greedy 问题
- 为给定的语法绘制 NFA、DFA(相同的 2-3 个不同的问题)
- NFA、DFA的使用
- 微处理器的工作
- 计算处理 10 亿条指令的时间,给定每个周期的时间
- 关于指令和流程周期的其他一些问题。
- 关于我简历中的一个项目的一些讨论。
- 什么是垃圾收集器
- C++ 中智能指针的类型及其使用和工作
- 使用指针的缺点,悬空指针问题,野指针。
- 为了在O(1)空间中遍历一棵树
- 运行整数流的中位数。
- 关于 DSA 的更多问题
12 名学生中有 3 名被提升到下一轮技术面试。最重要的因素是您的编码回合分数、态度、信心和沟通能力。您必须对至少一种编程语言有深入的了解。
第三轮:技术面试(第二轮)|代码对(黑客等级)| (60 分钟)
这一轮安排在当天晚上。这一轮也有两个面试官。他们也非常乐于助人,并在适当的时候提供有用的建议。本轮主要基于项目和OOPS。本轮总结如下:
- 详细讨论我最近的项目,它的工作原理,它在工业中的应用,使用的库。然后是一些问题,例如您为什么采用这种方法而不是那种方法,以及为什么使用这种方法或为什么在您的项目中不使用这种方法。
- 您将为升级项目以及如何处理大量数据而进行的更改。
- 关于树遍历的问题
- 如何在仅给出地址的情况下在 O(1) 时间内删除简单链表中的节点
- 中级DP问题。
- 关于基本算法的一些其他问题。
- 解释 OOPS 的所有概念及其在编程语言中的实现
- 在 C++ 中实现Python样式列表(可以在单个列表中获取不同类型的数据)
- 在 C++ 中实现单例类(只能有一个对象的类)
- 静态变量和函数、全局变量、外部变量和常量变量。
- C++ 的其他一些基础知识
- 强类型和弱类型语言、动态和静态语言之间的区别及其示例。
在大多数情况下,还有一个 HR 回合,尽管在我们的情况下没有,可能是因为时间不够。
本轮暑期实习只选了两名学生,我有幸成为其中之一。
每轮结束后,您可以向受访者提出您想要的任何问题。就像您可能会询问公司使用的技术或语言一样。