Nutanix 最近来到我们学院招聘实习生。大约有 130 人参与了编码轮次,其中 12 人被选中进行面试。考试时间为 1.5 小时,有 2 个问题。
编码回合:
Q1:https://www.geeksforgeeks.org/minimum-positive-points-to-reach-destination/
我个人觉得这个问题很难回答。我的想法是将 dp[i][j] 表示为从 [0][0] 到达索引 [i][j] 的最小点数。但是,如果您深思熟虑,您就会知道为什么它错了,或者换句话说,不会产生最佳答案。 3个测试用例通过。
Q2:给定一个带有 x 和 y 坐标的点列表,你必须计算有多少点不受任何其他点的支配。如果 p(x)>q(x) AND p(y)>q(y),则称点“p”支配另一个点“q”。
我没有花太多时间来解决这个问题。所有测试用例都通过了。
第一轮面试:
三个人同时在三个不同的隔间里面试。他们都向同时接受采访的学生提出了相同的问题。基本上三个人去了,然后三个人都出来了,接下来三个人去了,以此类推,再重复两次。所以对同时面试的学生同样的问题,他们会为下一组的学生改变问题。
在向我提出问题之前,我会写下向他人提出的问题:
1. 给定一个链表和一个给定节点的指针,如何删除这个节点。请注意,没有给出指向其他节点的指针,甚至没有给出头部。只是这个给定的节点。 : https://www.geeksforgeeks.org/in-a-linked-list-given-only-a-pointer-to-a-node-to-be-deleted-in-a-singly-linked-list-how -你要不要删除它/
2.给定一个有向图,找到母顶点:https://www.geeksforgeeks.org/find-a-mother-vertex-in-a-graph/
3. 给定一个大小为 n 的数组,找出重复的数字。数字在 0 到 n-1 的范围内,并且可以有多个数字重复。:https://www.geeksforgeeks.org/find-duplicates-in-on-time-and-constant-extra-space/
一些更简单的问题我不记得了。无论如何,有人问了我以下问题:
1. 给定一个交换了两个节点的 BST,找到这两个节点,然后将它们交换回来(注意你必须交换节点,而不仅仅是其中的值)。
他让我编写解决方案,我做到了。他对解决方案很满意。
2. 给定一个无向图,并且每个顶点都具有与其关联的某个值,找到以总值(意味着该连接组件内所有节点的值的总和)为素数的连接组件的数量。
3. 这是最棘手的问题。他让我实施 Sieve。我刚开始,他就问我在做什么。我告诉他我做了一个大小为 10^6 的数组。然后他问“什么类型的”。我说int。他问有没有必要?我说不,并让它变成布尔值。他说:“你能不能做得更好”。起初我没有得到这个问题。然后他给了我一个提示说bool代表什么?我说是或否。然后他问我需要多少位来表示,我说1位。像 0 表示否和 1 表示是。所以他说使用1位。我不知道任何可以具有给定位数的大小的数据结构(尽管存在一个,我后来才知道)。所以我说如果我能做一个大小为 10^6 位的整数,那么我就可以做到。但是不可能构造这样的整数。我什至说如果我有这样的 int,那么我可以设置和取消设置位来做所需的事情。然后他创建了一个结构体并传递了一个指向数组的指针和一个值“z”。他问我数组的大小,稍微讨论了一些小错误,我说10^6/(4*8);他说对了。然后他让我设置位“z”。所以我做了两个 int x, y; x=z/32; y=z%32;并设置 arr[x] 的第 y 位。他让我也写代码片段来重置它。我做到了,他很高兴。
基本上我的第一次伤口很好。在他开始问我问题之前,他甚至问我要解释我的任何项目,就像任何最喜欢的项目一样。我向他解释了一个与正交拉丁方有关的问题。他很高兴知道我做了什么。
在 12 人中,有 6 人被选中进入第二轮。
第二轮面试:
三个人先走了,紧接着是三个人。由于没有任何可能与先行者讨论任何问题,因此他们向所有人提出了完全相同的问题。
这是一场技术+人力资源回合。
只问了一个技术问题,这很简单。
问:给定一个具有 Left*、Right*、Value、Locked 属性的 BST,其中 lock 和 value 为 int,找出给定节点是否可以锁定。可以锁定的节点不是它的祖先,也不是子树中以该给定节点为根的任何节点被锁定。
我首先告诉我会遍历直到给定节点(给定节点的指针已给出,所以我有值,可以进行遍历)。我会检查在到达该节点之前是否有任何节点被锁定。如果是,只需停止并打印“不可能”。如果没有祖先被锁定,只需以该节点为根对子树进行一些遍历,然后查找是否有任何节点被锁定。如果是,则打印“不可能”。否则打印“是”。她问复杂度,我说 O(Log(N)) 到达节点,O(N) 遍历子图。基本上是蛮力类型。她要求优化它。我问我是否可以在“struct Node”定义中再引入一个属性。她允许了。然后我说我可以进行预计算并查找是否有任何以该节点为根的节点的子树在其子树中锁定了任何节点。如果是,我会设置这个新属性。然后当查询被触发时,只需在 O(logN) 时间内到达该节点,检查途中的祖先。如果成功到达,请检查这个新引入的属性。她对解决方案很满意。要我编码它,我做到了。然后是几个一般的人力资源问题。
我真的发现他们很冷酷很酷的人。一切都很顺利😉😀
6人中,最终选出了2人。我很享受整个过程。