最近,DE Shaw 访问了我们的校园进行实习和安置。他们根据简历从200名学生中筛选出16名学生。
电话面试(第一轮)-
通话持续了40分钟
开始告诉我关于你自己。我在简历中提到了ACM ICPC rank。所以他问了一些关于 ACM ICPC 的问题(它是什么?有多少轮等等)。之后,他根据我的简历问了几个问题。你为什么迁移到Python?我说因为它可以处理其他编程语言无法处理的大量数字。然后他问我如果我想对非常大的数字(比如 1000 位)执行加法、减法、乘法怎么办。我说通过将数字存储在字符数组中。然后他让我给我你将使用的类声明,然后询问运算符、虚基类、虚函数和虚析构函数的重载。然后他转向数据结构。
1) 给定一个偶数长度的链表,比如 a,b,c,d,e,f。重新排列它,使列表变为:-a、f、b、e、c、d。在 o(n) 时间和恒定空间内完成。
2) 给定一个数组:1,3,2,5。找出应该更改的最小数组元素数,以便数组中的所有元素都严格大于之前的元素
输出:1
即 1,3,4,5
(2 可以改为 4)。
然后他问了一些关于日志文件系统、基于日志的恢复等问题。
电话第 2 轮:
通话持续了 45 分钟。开始讨论我的项目。然后问我对Python和Java了解多少。
然后他问了几个关于数据库规范化的问题。之后他转向了数据结构。
1) 数组包含从 1 到 n 的元素。少了一个号码。找出来。我和他讨论了4-5种方法。
2) 一个数组包含从 1 到 n 的元素。一个数字已被另一个数字取代。找出缺失的和重复的数字(再次讨论了大约 4-5 种方法)。
3) 找出字符串的第一个非重复数字。
4)拼图:-
找出测量不超过 20 公斤的重量所需的最小重量组
我说:1、2、4、8、16
然后他将问题扩展到 40 公斤
我说:1、2、4、8、16、32(即2的幂)
然后他要求做得更好。他给我的提示是可以用 1 和 3 来测量 2
然后我想出了一般的解决方案,即 3、1、3、9、27 等的幂