亚马逊专访 |设置 89
线上回合:
1) 程序检查两个矩形是否重叠。
2) 程序查找一个给定的字符串,比如 S,是否包含另一个给定的字符串,比如 P。
3)编写一个程序来检查硬币是否可以加起来为给定的数字,如果是,则打印总和为给定总和的硬币。
电话回合:
1)给定一个单链表,修改前半个节点的值,使得第一个节点的新值等于最后一个节点的值减去第一个节点的当前值,第二个节点的新值等于倒数第二个节点的值减去第二个节点的当前值值,同样适用于前半节点。
Ex:
1) 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7
Modified list:
6(7-1) -> 4(6-2) -> 2(5-3) ->0(4-4) -> 5 -> 6 -> 7
2) 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8
Modified List:
7 -> 5 -> 3 -> 1 -> 5 -> 6 -> 7 -> 8
2)反转二叉树的交替层节点。
Ex: Given tree:
a
/ \
b c
/ \ / \
d e f g
/ \ / \ / \ / \
h i j k l m n o
Modified tree:
a
/ \
c b
/ \ / \
d e f g
/ \ / \ / \ / \
o n m l k j i h
面对面回合:
第1轮:
• 对我认为最有趣或最具挑战性的一个项目进行彻底的讨论。
• 假设我们需要一项服务来每天在某个特定时间执行某项任务。我们如何确保每天在指定的时间服务会执行该任务?
• 设计一个支持在恒定时间内推送、弹出和检索最小元素的堆栈。
• 编程以获得二叉树中两个节点之间的最大距离。面试官进一步将这个问题概括为 n-ary tree。然后他问如何在图中获得最长的路径。
第 2 轮:
• 当我们在浏览器中输入网址时会发生什么?
• 内连接和外连接之间的区别。
• 垃圾收集器在Java中是如何工作的?
• 关于堆栈和堆(内存管理)的问题。
• 我们有n 个金币。我们需要合并所有 n 个硬币以创建一个硬币,我们可以一次合并两个硬币。合并两个硬币的成本等于这些硬币的价值。我们如何确保合并 n 个硬币的成本最小。
例如: 5 ,8 , 4, 3, 9, 6
我们将 3 和 4 合并,cost=7 {剩余硬币:5,8,9,6,7}
然后我们合并 5 和 6,cost=11 { Remaining coin: 11,8,9,7}
然后我们合并 7 和 8,cost=15 { Remaining coin: 11,15,9}
然后我们合并 9 和 11,cost=20 { Remaining coin: 20,15}
然后我们合并 20 和 15,cost=35 { Remaining coin: 35}
总费用:7+11+15+20+35 = 88
如果我们以不同的方式合并硬币数组 {5, 8, 4, 3, 9, 6}:
合并 5 和 8,cost=13 {剩余硬币:13, 4, 3, 9, 6}
合并 13 和 4,cost=17 {剩余硬币:17, 3, 9, 6}
合并 17 和 3,cost=20 {剩余硬币:20, 9, 6}
合并 20 和 9,cost=29 {剩余硬币:29, 6}
合并 29 和 6,cost=35 {剩余硬币:35}
总成本:114
我们可以看到,在第一种情况下成本较低。程序以获得合并所有 n 个硬币的最小成本。
• 用大于或等于节点的节点之和替换BST 节点。
第三轮(招聘经理):
• 详细讨论我在当前公司的工作。
• 一些行为问题,例如您如何处理某些情况等。
• 设计餐厅预订系统。我还被要求在这方面编写一些 sql 查询。
第 4 轮(提高标准):
• 给定一个链表,编写一个函数来反转每k 个节点(其中k 是函数的输入)。
• 给定一个可能包含重复的排序数组,编写一个方法来查找给定数字的开始和结束索引(如果存在)。
假设我们给出数组:1,2,2,2,5,6,6,9,10,10,10
如果给定的数字是 9,那么起始索引和结束索引将为 7。
如果给定的数字为 2,则起始索引为 1,结束索引为 3。
如果给定的数字是 7,则起始索引和结束索引将为 -1,因为数组中不存在该数字。
• 编写一个将给定字符串“aabbbccc”压缩为“a2b3c3”的方法。它应该是就地压缩,不需要使用额外的空间。
• 讨论我目前的项目。
• 描述一个你失败的场景,你帮助我们的同事等的场景。
如果您喜欢 GeeksforGeeks 并愿意做出贡献,您还可以撰写文章并将您的文章邮寄至 review-team@geeksforgeeks.org。在 GeeksforGeeks 主页上查看您的文章并帮助其他 Geeks。