DE Shaw 采访 |设置 3
第一轮:(电话面试)(45分钟)
1.说说你自己。
2. OOPS 抽象、封装和示例等概念。
3.多态性——静态和动态。为什么名称是静态和动态的。再次以示例。
4. Java中的final关键字是什么?
Ques: Suppose we have -- > final ArrayList
答:是的,这是一个有效的操作。我们可以添加/删除。唯一的限制是我们不能让 list 指向其他 ArrayList 对象。例如,我们不能做 list = list1。
5.什么是悬空指针以及如何纠正这个问题。
6.你如何获得文件中的总字数(在 Unix 中)。
7.给定两个字符串..你需要判断它们是否是彼此的排列。各种方法及其复杂性。
8.给定一个字符串。您需要打印第一个非重复字符。我告诉他我们将使用计数数组,count[256]。
反问:您将如何降低空间复杂度。我告诉他我们可以使用哈希表。那样的话,我们只需要与不同字符数相等的空格。
9. 200 层楼的建筑..给了一个鸡蛋(是的,只有一个鸡蛋)......找出哪个级别的鸡蛋会在尝试次数少于 200 时打破。(仍然没有任何答案:D)
10.给出四个数字:1 3 4 6 = 24。使用任何数学运算符。我问他我可以用 C 语言编写这个表达式并从那里运行它以获得所需的结果。他说是的,你可以。
然后我取了 4 个整数变量(1,3,4,6)和另一个整数变量结果。现在,1/3 = 0(C 整数除法)。所以简单的 4*6 会给我 24。非常简单:D。他说没关系,但只能尝试使用数学运算符。 (无编码:D)
答案:(1^3) * (4*6) = 24
代码:(将通过电子邮件发送)
11.编写注释良好的代码以螺旋顺序打印矩阵。还要写一些测试用例。
——————————————————————————
第 2 轮:(内部面试)(45 分钟)
——————————————————
1.各种基本概念的讨论,如什么使Java平台独立语言、为什么 C 依赖于平台、JDK、JRE 和 JVM 之间的区别、什么是字节码(在Java中)和讨论是这样进行的。
2.什么是函数指针?它在哪里使用。编写代码来实现相同的功能。
3.是否可以在没有 catch 块的情况下使用 try-finally 块?以及其他几个关于异常处理的类似讨论。
4.什么是流程?什么是各种进程调度算法。设计一种数据结构,可以有效地根据进程的优先级来调度进程。他们进一步补充说,某些进程的优先级可以随时更改,我们应该能够选择具有最高优先级的进程(最小堆概念)。也可以有许多相同优先级的进程。关于方法的一些讨论。
5. extends 和 implements 有什么区别?关于抽象类和接口的一些讨论。
6.为什么Java不支持多重继承?我们如何在 C++(虚拟继承)中解决钻石戒指问题。在多重继承的情况下如何从类中访问特定函数? (答案:使用范围解析运算符)
7. #define MAX 30 和 const int max = 30 有什么区别。
8.什么是“注册”存储类?如果我们声明了任何变量寄存器并且没有可用的空闲寄存器,会发生什么?编译器会抛出任何类型的错误/警告吗?
9.在 C 语言中,我们在哪里可以找到 printf() 的定义。关于头文件和流程执行步骤(如预处理、编译、加载、链接等)的一些讨论。
10.我们在Java中有析构函数吗?我们可以在Java中显式销毁对象吗?
11.给定一个二叉完全树,如:
5
/ \
3 6
/ \ / \
1 7 2 4
将其转换为级别顺序排序树,如:
1
/ \
2 3
/ \ / \
4 5 6 7
代码是必需的。
——————————————————————————————-
虽然没有拿到offer,但是体验很好。如果您想破解 DE Shaw,请对您正在研究的任何技术有一个清晰的概念。有关准备Java/C++,请参阅 http://javarevisited.blogspot.in/ 和 http://www.learncpp.com/。