多商品交易所(MCX)面试经验
第一轮:电话面试
- 描述你自己——你目前的角色是什么,你在当前公司从事的项目以及使用的技术。
- 他问我是否知道Java。我说没有专业经验,但对Java核心有一定的了解。
- 讲述一些Java 8 的特性——我说的是 Streams 并试图解释它。接下来我讲述了接口中的默认方法。
- 他问我是否知道 Streams 在内部是如何工作的。我说我不知道。
- 关于 lambda 函数,它们是什么——我告诉过它们是匿名函数,当我们不想创建一个不会被多次使用的单独函数时使用它们。举了一个例子,并说明 lambda函数是函数式编程的一个概念(我不太了解)。
- 解释运行时和编译时多态性。
- 解释什么是 OOPS 中的封装。
- 抽象是什么意思?抽象类和接口的区别。
- 您在公司中使用过多线程吗?举一个你用过的例子(他想要我在当前公司工作的项目的例子)。
- 给定一个奇数长度的单链表,找到其中的中点,即找到列表中间的节点。他说我不能使用超过1个循环。
我的解决方案(效率低,但只使用一个循环):int getMiddleValue(Node head) { Node p = head; int cnt = 0, i = 0; boolean flag = false; while (true) { if (!flag && p != null) { p = p.next; cnt++; } else if (p == NULL) { p = head; flag = true; } else if (flag) { if (i < cnt / 2) p = p.next; else return p.val; } } }
最佳解决方案:使用两个指针,一个指针跳转距离为1,另一个指针跳转距离为2。当另一个指针到达链表末尾时,第一个将在中间。
- 在不使用模数、除法或乘法运算符的情况下检查一个数是否为素数。允许任意数量的循环。
提示:除法只是一系列减法。解决方法:通过反复减法求余数。当数字变为负数时,除数 - 数字是余数。public int getRemainder(int number, int divisor) { while (number >= 0) { number -= divisor; } return divisor - number; }
- 解释递归。使用递归时需要注意什么?突破递归的基本情况。递归使用什么数据结构?堆。给定一个带有单个参数 n 的函数显示。使用递归打印从 1 到 n 的数字。提示:堆栈。
public void display(int n) { if (n == 0) return; display(n - 1); System.out.println(n); }
第二轮:面对面面试
- 描述你自己。
- 关于简历、在当前公司工作、使用的技术的问题。我曾经使用过 C++,所以他们问我是否对Java感到满意。
- 关于一些项目的问题。在一个项目中,我说我使用了朴素贝叶斯,他们让我写公式。
- 你在项目中使用了接口/继承吗?我说不也不继承。
- 什么是封装?你知道多线程吗?我说是的,因为我在 C++ 中使用过多线程,并且说在Java中这并不困难。
- Array 和 ArrayList 的区别。
- 以反向或逆时针方向移动给定移位值的数组。
- 我是否知道 SQL 以及我知道多少。
- 他们问我是否愿意编写涉及过程、连接等的复杂查询。
- 你对人有多好?在团队中工作?你喜欢挑战并且可以应对吗?无论您是喜欢挑战的人还是只是将其视为负担的人。我说我两者都有,他们笑了。
- 您是否愿意从头开始从事项目?我说我可能需要一些帮助。
面试持续了不到30分钟。
第三轮:面对面面试
- 首先,与小屋中的一个人进行了互动。她询问了有关教育、工作经验、工作项目的问题。她询问当前和预期的 CTC。他们说如果我没有按时获得当年的加薪,他们会考虑我最近一次更新的工资。我听了之后有点不高兴。
- 然后,她带我去了另一个已经有四个面试官的小屋。
- 首先他们问我工作经验。由于我使用过 C++,他们从头到尾询问了我的编译过程。
- 他们说这个角色是Java ,所以让我从 1 到 10 给我的知识打分。我给 7 分,所以他们问为什么,我说我知道核心Java ,但可能还有很多我不知道的概念。
- 他们问我在哪里使用过Java,我在一个项目中说,偶尔在竞争性编程中。
- 他们询问了套接字编程和步骤。正如我在讲述这些步骤时,他们询问了有关文件描述符和套接字的一些信息。我从未在Java中使用文件描述符和套接字。后来我发现在Java SE 中有一个单独的类 FileDescriptor。
- 他们问我是否有任何 UI 经验,我说曾在 Netbeans 上使用过Java Swing。他们问我是否有 Angular JS 经验,我说没有,但知道基本的 Web 技术。
- 他们说我可以离开那一天。
再次,采访持续了不到30分钟。
第四轮:电话面试
- 描述你自己并描述你的工作。
- 在公司的项目中如何确保低延迟?
- C++ 和Java中的 OOPS 之间的区别。
- 为什么要找工作变动?
几天后收到offer。