亚马逊面试经历 | 198(对于 SDE1)
我最近参加了 Amazon Hyderabad 的 SDE-I 职位面试。所有 4 轮比赛均由来自不同团队的不同人员进行。
总共有4轮。
第 1 和第 2 在 DS、Algos、PS
第三轮是部分编码和部分设计
第四轮是管理轮。
以下是每次面试中都会问到的问题:
第一轮:
1. 序列化和反序列化二叉树需要哪些遍历?
那么 BST 呢?
给定二叉树的 InOrder 和 Post Order,构造回原来的树。编写代码。
2. 从连续出现的大量整数中,总是在任何特定时间找到 k 个最小的元素?
3. 有一棵二叉树。
现在您必须将每个节点的数据替换为其左右子节点数据的总和。
但条件是:
仅当 sum > data 时,才应将节点的数据替换为 sum
如果 sum < data,则在节点上保留一些值并相应地调整其左右子节点。例如:node=20,left=4,right = 6。现在 sum = 10。因为 20 > 10,你不应该替换。
而是将节点的数据保持原样,并将左侧数据替换为 (20-6)=14。
现在根=20,左=14,右=6。现在从左边再次检查条件,直到到达叶节点。
第二轮:
1.给定一组字符串。我们需要将所有这些字符串合并为一个字符串。
您将获得一个 merge(str1, str2)函数,其成本是传递的字符串长度的总和。
如何通过使成本尽可能低来合并字符串?
在Heap中编写deleteMin、insert、percolateDown操作的代码。
解决方案:
最初按字符串的长度升序对字符串进行排序。现在取出前两个字符串并将它们连接起来。
将结果字符串保留在已排序的字符串中,并保留其长度。
此处将使用优先队列来实现所需的解决方案。
2. 给定一个大小为 mx n 的矩阵。这里 m 和 n 非常大,假设为 10 万。
您在此矩阵内得到一系列子矩阵。求每个子矩阵内所有元素的总和。
子矩阵位置根据它的:top_left_cell 和 bottom_right_cell 给出。
例如:
输入数组:5 x 6
1、2、3、4、5、6
7、8、9、10、11、12
13、14、15、16、17、18
19、20、21、22、23、24
25、26、27、28、29、30
子矩阵位置:
(3, 4), (4, 5)
这是
16、17
22, 23
o/p 为:78
解决方案:由于将为您提供多个子矩阵,因此对每个子矩阵逐个元素进行处理并不是最佳选择。做一些预处理,比如构建另一个与输入矩阵大小相同的矩阵,它将包含其子矩阵的总和。这样我们就可以在 O(1) 时间内计算总和。
对于上面的例子,求和矩阵是:
1×1 1×2 1×3 1×4 1×5 1×6
2×1 2×2 2×3 2×4 2×5 2×6
3×1 3×2 3×3 3×4 3×5 3×6
4×1 4×2 4×3 4×4 4×5 4×6
5×1 5×2 5×3 5×4 5×5 5×6
现在找到子矩阵的总和:(3, 4) 和 (4, 5)
sum = sum[maxRow, maxCol) – sum(minRow-1, maxCol) – sum(maxRow, minCol-1) + sum(minRow-1, minCol-1)
第三轮:
1. 为用户设计报纸订阅系统。
哪些系统被视为该设计的一部分?
2. 有一个整数流来了。在任何特定时间点,您都需要从中给出第一个不重复的元素。
例如:2、3、1、2、1、3、5
o/p:如果我在第二个位置(3 之后)问你,答案是:2
如果我在第 5 位(1 之后)问你,答案是:3
如果我在第 6 位(第 3 位之后)问你,答案是:“没有这样的元素”
如果我在第 7 位(5 之后)问你,答案是:5
解决方案:
Maintain a LinkedList, with the elements in insertion order
maintain hashMap with input integer as key and value as:
class IntValue {
int count;
LinkedList headNode;
}
Now when an element comes, check if the element is present in hashMap.
If(present in hashMap) {
if(element count == 1)
delete the element from linkedList,
by replacing its data with its next element's data;
} else {
insert the element into hasmap with count as 1
and insert the element into linked list at then end.
}
经理回合:
1.谷歌爬虫问题。
给定一组 N 个文档。
给定 k 个字符串:{str_1, str_2, ..., str_k)
现在返回包含所有 k字符串的文档编号。
2. 给定一棵 N 叉树。镜像树。
为此提供合适的树节点结构并为其编写代码以对其进行镜像。
例如:
i/p:
1
/ / | \ \
2 3 4 5 6
/ / |
7 8 9
o/p:
1
/ / | \ \
6 5 4 3 2
/ | \
9 8 7
我最近两轮表现不佳。所以我被拒绝了。但这完全是一次不错的经历。
感谢 geeksforgeeks 提供了很多问题。如果我们每天一个问题,至少需要一生的时间来为极客准备极客中存在的所有问题。谢谢。