第 1 轮(在线测评 2 小时 30 分钟):测评由四部分组成,代码调试部分(20 分钟)、编码测试(70 分钟)、工作作风评估(20 分钟)和推理能力部分(35 分钟) )。
编码测试题:
- 给定一个数字 x,以及一个按行和按列排序的矩阵,检查 x 是否存在于矩阵中。
- 给定一个链表,创建该链表的副本并返回一个指向新链表头部的指针。
第二轮(在线面试 30 分钟):
- 关于树和图的小讨论
- 给定一个有向图,检查它是否是一棵树。编写完整干净的代码。
第 3 轮(在线面试 1 小时):
采访者:选择你的任何一个项目,我们再讨论。
对项目进行了详细的讨论。面试官问了很多与方法、实施、结果等相关的技术细节,以及诸如“最具挑战性的部分是什么”等非技术问题。这花了 30 分钟。
设计问题:我们有一个不断生成日志的系统。比如说,每分钟记录一些日志。每个日志都有一个时间戳。日志类型可以是错误、信息等。我们只对错误日志感兴趣。错误也可以有多种类型。
Timestamp | log type | sublog type | noOfInstances |
7/12/2020 12:35:00 | Error | abc | 2 |
7/12/2020 12:36:25 | Error | xyz | 3 |
7/12/2020 12:36:25 | Info | pqr | 2 |
7/12/2020 12:37:20 | Error | xyz | 1 |
在任何时候,我们都希望从当前时间获取过去 t 分钟内的错误类型及其实例数。 t 的值取决于查询。此外,您应该能够说出最近 t 分钟内实例数最多的错误名称。
面试官,然后进一步要求说出最近t分钟内实例数最多的前k个错误名称。
还有一些小问题,例如“您将如何存储数据”、“您将如何执行此操作”等
第 4 轮(在线面试 1 小时):
- 给定一棵二叉树,将其转换为其镜像树。我写了一个递归函数,它的返回类型是 void。面试官进一步要求再写一个解决方案,使用非空返回类型函数。然后是比较两种方法、递归堆栈、最坏和平均情况时间复杂度等的小讨论
- 给定一个 BST、一个节点值和一个整数 K。打印与给定节点距离为 K 的所有节点。与节点距离为 K 的节点可以在所有 3 个方向上。左路径,右路径,通过父路径。面试官进一步要求对二叉树做同样的问题。
我能够一次性回答所有问题并编写无错误的干净代码。收到offer了🙂