我在 LinkedIn 上收到了 Oracle HR 的面试邀请,流程花了一天时间完成了所有 4 轮。所有回合都是技术性的,每回合需要 60 到 90 分钟。
第 1 轮:第一轮是基本筛选轮,面试官以介绍和一些基本的Java问题作为热身开始。然后面试官跳到编码问题,问了两个编码问题,我必须讨论这种方法,并且必须为此编写代码。
- 查找已排序数组中元素的索引。已排序数组中的一些相邻元素被交换。
我通过对 3 组元素使用二分搜索在 O(logn) 时间内给出了一个解决方案。我在 GeeksforGeeks 上找不到这个问题,也许你可以在那里搜索。 - https://www.geeksforgeeks.org/length-of-longest-consecutive-ones-by-at-most-one-swap-in-a-binary-string/
在这里,我错过了一些边缘情况,例如数组中全为 1 或 0 时。但是面试官已经给出了一些提示所以修复了我的代码。后来同样的问题面试官扩展到最多k个替换。
第二轮:第一轮结束后第二轮开始,面试官先讨论了我之前的工作几分钟,然后开始了一个编码问题。这里还问了两个编码问题。
- https://www.geeksforgeeks.org/merging-intervals/。我已经给出了堆栈的解决方案。
- https://www.geeksforgeeks.org/split-the-given-array-into-k-sub-arrays-such-that-maximum-sum-of-all-sub-arrays-is-minimum/
第3轮:面试官从OOP问题开始,多线程,我以前工作中在哪里使用多线程?关于缩放的一些问题。面试官从一个设计问题开始。
- 您必须开发一个日历系统,可以将员工的工作时间(每天的开始时间和结束时间)存储在数据库中。当新员工到来时,您的系统必须适应它。我必须为此设计架构,并且必须编写代码以找到 k 位员工参加会议的最早一小时时间。 (这是我们必须合并区间的前一个问题的一种变体)。
- 第二个问题是海峡正向编码问题。 https://www.geeksforgeeks.org/josephus-problem-set-1-a-on-solution/
第 4 轮:我被告知这将是最后一轮,从我的介绍开始,然后讨论我的项目。
- 在那之后,面试官开始解谜问题。 https://practice.geeksforgeeks.org/problems/the-3-5-litre-die-hard-water-puzzle
- 下一个问题是设计问题,制造商可以制造自行车、笔记本电脑、电吹风、Wasgihmachine 等任何东西。如果他想制造笔记本电脑,那么他需要一些备件,如 RAM、主板、LCD/LED 等。 注意:这些备件可能还需要一些其他备件,如主板需要 CPU 等。这些备件可以是任意数量的,例如笔记本电脑需要 1 个主板和一些 USB 端口,比如说 3。我必须设计它的数据库存储产品和备件及其关系的模式,对象模型和我必须编写代码来查找特定备件的数量。注意:这可能是一个子备件,例如一辆自行车需要 2 个轮子,每个轮子需要 2 次制造,然后 findSparesParts(laptop, break) 必须返回 4。我通过将产品(备件也是最终产品)组织成图形并使用图形遍历我给出了 findSparesParts() 的定义。
结果:选中