SDE-I 的亚马逊面试体验
在线编码测试:
在hackerearth平台上有三个编码问题。这是70分钟的测试。
1)找到下一个更大的数字与相同的数字集。如果下一个更大的元素不存在,则打印“-1”。
输入:n=327698
输出:327869
https://www.geeksforgeeks.org/find-next-greater-number-set-digits/
2) 给定只有零和一的元素数组,您最多可以执行以下操作一次。
操作:将所有元素从 i 翻转到 j 索引,其中 i<=j。
现在您需要在执行这些操作后打印数组中的最大个数。
输入:
n=6
1 0 0 1 0 0
输出:5
3)给定数组和整数k,你需要告诉数组是否可以在操作任意次数后排序。
操作:您可以将 (i) 索引元素与 (i+k) 索引元素交换任意次数。
如果通过上述操作可以对数组进行排序,则打印已排序的数组或打印“-1”。
输入1:
n=8 k=2
1 2 7 8 3 4 5 6
输出1:
1 2 3 4 5 6 7 8
输入2:
n=8 k=2
1 4 5 6 7 8 2 3
输出2:-1
第1轮:
1)说说你自己。
2)给定二叉树,完整路径定义为从根到叶。该路径上所有节点的总和定义为该路径的总和。给定数字 K,您需要删除二叉树中不位于 sum>=K 的任何路径中的节点。
该函数是用二叉树的根和K给出的,您需要在删除不位于任何路径中且总和> = K的节点后返回根。
输入:
K=8
输出:
https://www.geeksforgeeks.org/remove-all-nodes-which-lie-on-a-path-having-sum-less-than-k/
3)给定旋转排序数组,找到数组中的最小元素。
输入:
n=8
7 8 1 2 3 4 5 6
输出:1
https://www.geeksforgeeks.org/find-minimum-element-in-a-sorted-and-rotated-array/
第 2 轮(视频通话管理轮):
1) 说说你自己。
2) 目前在公司担任的职务。
3)您在公司生活中最喜欢的项目。
4)当你被赋予任务而你无法独自完成并需要其他同事的帮助时。
5) 你从经理那里收到批评性反馈的时间,你是如何改进的?
6) 除了日常工作之外,您在上一家公司所做的额外工作。
7) 你在以前的公司工作中最关键的任务是什么,你是如何做到的?
第三轮:
1) 说说你自己。
2) 客户 ID 和产品 ID 源源不断地到达。现在随时都会有查询。您需要回答查询。
查询:给定产品ID,销售给客户的具有该产品ID的产品的编号。
输入:
当前条目:
PID CID
1 499
3 421
1 645
1 989
2 424
查询:pID=1
输出:3
你将如何空间优化这个问题?
3)数字正在到达流中,并且在 Input 的开头给出了固定的 K。可以随时询问以下查询。您需要回答查询。
查询:查找当前流中的第 K 个最大元素。
输入:
K=3
当前流:8 7 1 2 4 5 9
目前产量:7
https://www.geeksforgeeks.org/kth-largest-element-in-a-stream/
4)在二叉树叶子的左右节点不会为空。一个叶子的右节点将连接到顺序遍历中的下一个叶子节点。并且叶子的左节点将按照顺序连接到前一个叶子。第一个叶子的左边将是顺序遍历中的最后一个叶子,最后一个叶子的右节点连接到顺序遍历中的第一个叶子。
您需要打印才能遍历。
预期时间复杂度:O(n)
预期空间复杂度:O(1)
输入:
输出:
4 2 6 5 7 1 8 3 9 10
5) 编写LRU Cache的优化代码。
LRU 缓存的大小将在输入中给出。
6)什么是多态性?
第 4 轮(Bar Raser 视频通话结束):
1) 说说你自己。
2) 检查一个 BST 是否是另一个 BST 的子树。
函数将以 root1 和 root2 作为 BST-1 和 BST-2 的参数给出,如果第二个 BST 是第一个 BST 的子树,则返回 true 或返回 false。
注意:元素可以重复。 BST 创建时所有小于或等于的元素都将转到节点的左子节点,而较大的元素将在节点的右子节点上。
输入:
输出:真。
结果:被录用!!