第 1 轮(在线编码轮):该轮包括 3 个必须在 70 分钟内解决的编码问题。
总和大于给定值的最小子数组。 (https://www.geeksforgeeks.org/minimum-length-subarray-sum-greater-given-value)
- Linkedlist 问题,我们必须反转列表的两半,关于中点。如果列表的长度是奇数,则中间节点的位置不应改变。最后,返回修改后的列表。注意:不要新建列表,修改现有列表。
- 树问题,如果 tree2 是 tree1 的子树,则我们必须实现一个函数来返回子树中节点的总数,否则返回 0。如果 tree2 的根节点存在于 tree1 中,则称 tree2 是 tree1 的子树,并且所有它的后代与 tree1 中的相同。 (https://www.geeksforgeeks.org/check-binary-tree-subtree-another-binary-tree-set-2)
Node:
- 如果 tree1 或 tree2 为空,则返回 -1。
- 如果 tree2 不是 tree1 的子树,则返回 0。
编码回合的平台是 cocubes。我能够解决所有 3 个问题并要求面试。有2个问题的候选人也被要求面试。共有82名候选人入围面试。所有面试都是在线的。
第二轮(技术面试,大约 1 小时 10 分钟):最初,我们互相打招呼。我们在面试开始时就我过去的教育和工作经验进行了一些正式的交谈(我有 2 年的工作经验)。之后,他直接跳到了DSA问题,如下——
- https://www.geeksforgeeks.org/a-boolean-matrix-question/
- 打印二叉树中任意两个节点之间的路径
我已经解决了第二个问题,并且知道了 2-3 种方法,但我还没有遇到第一个问题。我花了一些时间来分解第一个问题,并找到了他非常满意的 O(n) 空间解决方案。他告诉我第一个问题也有一个 O(1) 空间解决方案。他通过提供一些提示让我感觉很舒服,经过一段时间的思考,我为他提供了 O(1) 空间解决方案。
在 DSA 部分之后,他陷入了我在简历中提到的Java问题。他让我在Java给自己打 10 分,所以我给了 6/10。
他问了一些基本的Java编程相关的问题,比如——
- c++和Java的区别
- 什么是 JVM,它是如何工作的?
- 为什么Java是平台无关的?
- Java中的抽象类和接口是什么,它们有什么区别?
- 什么是Maven? – 在这里我完全空白(我没有使用 Maven)。他通过告诉我为什么在Java项目中使用它来帮助我(主要是保留依赖项)。现在他从这里提出了一个问题,他告诉我如果有多个 .jar 文件并且 .jar 文件之间存在依赖关系,你将如何找到冲突的依赖关系。比如a.jar依赖b.jar,b.jar依赖c.jar,等等。我很清楚拓扑排序以及它如何用于保持依赖关系,所以在直接跳到解决方案之前,我问他循环中是否涉及依赖关系。他的回答(没有循环依赖)迫使我采用拓扑排序,然后一切顺其自然。
所有代码都必须写在在线谷歌文档上。我被要求参加第 2 轮。
第三轮(技术面试,约1小时):我们在面试开始时互相介绍。
- 他让我简要解释一下我最喜欢的任何一个项目。
- 然后他问了一两个 SQL 查询。我无法解决其中一个查询。
- https://www.geeksforgeeks.org/print-left-view-binary-tree/
- https://www.geeksforgeeks.org/queue-using-stacks/
所有代码都必须写在在线谷歌文档上。
任何选定的学生都没有进行人力资源轮次。一共9个同学拿到offer,我就是其中之一。
提示:
- GeeksforGeeks 的“必须做”和“困难的练习题”这两个部分都有很多问题需要面试。
- 与 OS 和 DBMS 相关的 CS 基础知识将为配置文件增加价值。