📜  Nutanix 面试经历——校园实习

📅  最后修改于: 2021-09-17 16:17:54             🧑  作者: Mango

Nutanix Technologies 来到我们的校园 BITS Goa 进行校园招聘流程。他们进行了多轮筛选,最终选出了3名候选人。

在线测试:Hackerrank平台

我们被分配了 1 小时来解决两个问题。

第一个问题:给定n个具有特定技能值(正整数数组)和m个任务(正整数数组)的裁缝,我们需要找出裁缝一起完成m个任务所需的时间。

如果裁缝的技能值 >= 任务值,则他可以完成 1 个任务。 1 名裁缝完成 1 项任务需要 1 小时。 eg Tailor: 4 5 6 task: 5 5 6 will take 1 hr if skill 4 5 6 is given task NULL 5 5 / NULL NULL 6 (2 hrs) : 然后裁缝可以分配任务,每人拿一个技能值,以便消耗的时间最少(在这种情况下为 2 小时)。

这是二分搜索的一个很好的问题。它可以建模为 https://www.spoj.com/problems/AGGRCOW/,您需要在其中对答案本身应用二分搜索(即完成时间)。

第二个问题:这是一个动态规划问题

这个问题有一个故事。我只是说出问题的症结所在。给定一个具有 *(表示可用)或 #(表示不可用)块的二维矩阵。给出了一个整数 k。需要考虑所有连续的 k 个可用块,无论是垂直的还是水平的。将有一些(连续的)块可以重叠,其连续性大于等于 k。任务是根据输入矩阵找到任何块可以具有的最大重叠数。为了解决这个问题,理解这个问题非常重要。

将 3 个等维的 2D 矩阵作为输入所需的答案。 1 表示垂直连续块计数(>=k)。 1 表示水平,1 表示所有最终重叠。

任何能够解决 1 个完整问题和其他至少一半测试用例的学生都将入围。包括我在内,这一轮有14名这样的候选人入围。

第 0 轮:调试轮

在 14 名学生中,我们有一半将被淘汰出这一轮。我们获得了 2 个关于信号量和互斥锁的 OS 概念的 c++ 面向对象代码。这不是OOP调试,而是基于OS同步逻辑错误的调试。我们被要求指出错误并提出更正建议。有几个地方缺少分号,但被告知只能指出逻辑错误

在第一个问题中,我们不得不考虑互斥锁和异常处理。

在第二个问题中,对 Semaphore 的生产者-消费者问题做了一个小的调整。

在总共 10 个错误中,我能够指出这两个问题的 4/6 和 4/4 错误。在稍后的一轮中讨论了这些方法。面试官告诉我,我是这一轮得分最高的人之一。

第一轮:技术轮

面试官有秒表。他一解释完每一个问题,计时器就开始了。 (他不应该提到这个。我只是注意到了)

第一个问题:从给定的层序遍历构造 BST

第二个问题: https://www.geeksforgeeks.org/given-sorted-dictionary-find-precedence-characters/

我花了一段时间才弄清楚第一个问题的方法。面试官给了一个小小的提示,让我找到了正确的解决方法。不过我很快就解决了第二个问题。他让我为这两个问题编写伪代码。我做到了,而且很高兴。

第 2 回合:恢复回合

这一轮是基于简历的轮以及一些 HR 问题。

面试官是一位在 Nutanix 工作的 23 年经验丰富的工程师,并根据我在项目和案例研究中的解释提出了非常聪明的问题。 (顺便说一句,这是 GFG 无法帮助您的唯一一轮比赛😛)会议持续了 40 – 45 分钟。最后,他告诉我,他喜欢我在简历中提到的案例研究和项目中热情地解释我的工作和贡献。这是非常吸引人的回合,他的许多问题都试图检查我适合公司的哪个部门。采访结束后,他很高兴。

第三轮:设计轮

在本轮开始之前,面试官讨论了我的调试轮方法,并指出了我遗漏的错误。

在这一轮中,我被要求使用适当的数据结构实现 LRU 缓存。 https://www.geeksforgeeks.org/lru-cache-implementation/

之后,他要求提供更多可用于缓存的算法以及实现它们的方法。我告诉他 LFU(最不常用)。然后继续讨论两种技术之间的差异、优缺点以及对问题的进一步调整。

在一轮结束时,他问我是否有任何问题要问他。我有几个问题,他回答得很好,还作为我未来软件工程职业的导师给了我建议。

当我陷入困境时,所有面试官都试图帮助我寻找答案。我发现对 NUTANIX 团队的整体采访非常有用,而且轮次进行得非常顺利。最后,我是被选为 NUTANIX Technologies, Banglore 的 3 名候选人之一 🙂