Nutanix 面试体验(2018 年校内)
整个过程包括5轮:1轮在线编码、1轮调试、2轮技术和1轮HR/系统设计。
在线测试的最低标准设定为超过 8.5 CGPA,因此在一批 450 名学生中,接近 80-90 名学生有资格参加考试。
在线测试中有 2 个问题:
Q.1:给定一棵 n 元树和对该树的一些查询,在每个查询中,您将获得一个节点,您应该打印以该节点为根的子树的前序遍历。
测试用例非常好,以至于您必须在处理查询之前预先存储每个节点的遍历,并且这种预存储也应该只在 1 个树遍历中完成。
Q.2:一个城市用图形表示,V 路口和 E 路连接它们。有两个特殊的路口; 1是办公室,1是房子。一位女士从办公室出发,想通过以下方式回家:
她会先理性地选择一条从当前路口出去的路,然后走上去。如果她已经到了房子,那么任务就完成了,否则她会随机选择另一条路(不是她来到这个路口的那条路)并在上面行走。
上述整个过程由一个动作组成。您应该回答这位女士是否能够使用某种策略在每一步中选择合理的道路到达房子,如果她可以到达房子,那么最佳策略的最少移动次数是多少。
我能够完全完成第一个问题和第二个问题的 8 个测试用例。
本轮选拔16人。
在调试阶段,纸上写了两个问题,我们都应该在程序中找到尽可能多的错误。 1 代码在 C 中实现双循环链表并将列表分成两半。第二个代码是在Java中实现同步,同时使用多个线程从多个文件中读取并写入单个文件。
本轮选拔6人。
在随后的两个技术回合中,都明确表示只有一个问题,您必须在 45 分钟内解决它。如果您能够正确解决问题,那么该特定回合中将会有更多问题,否则您将退出该过程。
第一轮技术问题:你应该从 (1, 1) 到矩阵中的 (n, m) (1 <= n, m <= 10^7)。如果存在,则打印最小路径。从节点 (x, y) 允许的移动是 (x, x+y) 或 (x+y, y)。
我首先建议了 DP 和 BFS 方法,但由于限制,它们还不够好,所以我想出了如果我目前在 (x, y) 处,我将从目标转到 (1, 1) 的方法所以如果 x 是最大值,我在路径中的前一个节点将是 (x, xy),否则 (yx, y)。这样,如果在 x 或 y 遇到 1,那么我将打印路径的其余部分,如果没有,则没有路径。该算法的时间复杂度为 O(max(n, m))。
第二轮技术问题:给定一个数组,你应该找到每个元素的统治。元素的统治是数组中包含最大元素的连续范围。
例如:8 9 5 4 2 6 7 1 5
统治:
8:1 1
9:1 9
5:3 5
4:4 5
2:5 5
6:3 6
7:3 9
1:8 8
5:8 9
我能够在 20 分钟内使用堆栈方法解决问题。
正如我之前提到的,两轮技术轮次都是 45 分钟,所以在解决问题后进行了双向面试,我和面试官讨论了各种话题,比如我的项目、公司和工作、一些技术和算法等。这些会议很棒,因为它们感觉不像是采访,而是更像是在和朋友谈论各种事情。我真的很享受这个过程。
技术回合结束后,最后一轮选出了 5 人。系统设计轮调用了 2 个,HR 轮调用了 3 个。在系统设计回合中,1 人被要求实现 instagram 类型的平台,另一个人的问题是与数据库有关的问题,我记不清了。
在我的 HR 回合中,有人讨论了我的项目。我应该以他可以理解的方式解释我的项目,因为他没有技术背景。这又是一个互动回合,从我的兴趣到我的位置偏好等问题。
经过上一轮,HR轮的人被选为6个月的实习生+全职offer,系统设计的1人被选为6个月的实习生。