在线回合:
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元树。然后他问如何获得图中的最长路径。
第二回合
•当我们在浏览器中输入URL时会发生什么?
•内部联接和外部联接之间的区别。
•垃圾收集器如何在Java中工作?
•关于堆栈和堆的问题(内存管理)。
•我们有n个金币。我们需要合并所有n个硬币以创建一个硬币, 我们可以一次合并两个硬币。合并两个硬币的成本等于这些硬币的价值。我们如何确保将合并n个硬币的成本降至最低。
例如:5, 8, 4, 3, 9, 6
我们将合并3和4, cost = 7 {剩余硬币:5, 8, 9, 6, 7}
然后我们合并5和6, cost = 11 {剩余硬币:11, 8, 9, 7}
然后我们合并7和8, cost = 15 {剩余硬币:11, 15, 9}
然后, 我们将9和11合并, 成本= 20 {剩余硬币:20, 15}
然后我们合并20和15, cost = 35 {剩余硬币:35}
总费用:7 + 11 + 15 + 20 + 35 = 88
如果我们以不同的方式合并了硬币阵列{5, 8, 4, 3, 9, 6}:
合并5和8, 费用= 13 {剩余硬币:13、4、3、9、6}
合并13和4, 费用= 17 {剩余硬币:17、3、9、6}
合并17和3, 费用= 20 {剩余硬币:20、9、6}
合并20和9, 费用= 29 {剩余硬币:29、6}
将29和6合并, 费用= 35 {剩余硬币:35}
总费用:114
我们可以看到, 在第一种情况下, 成本较低。编程以获取合并所有n个硬币的最低成本。
•将BST节点替换为大于或等于该节点的节点总数。
第三轮(招聘经理):
•详细讨论我在当前公司的工作。
•一些行为问题, 例如你如何处理某些情况等。
•设计餐厅预订系统。我还被要求在这方面编写一些sql查询。
第四回合
•
给定一个链表, 编写一个函数来反转每k个节点
(其中k是该函数的输入)。
•
给定一个可能包含重复项的排序数组, 编写一个方法以找到给定数字的开始和结束索引(如果存在)
.
假设我们给出数组:1, 2, 2, 2, 5, 6, 6, 9, 10, 10, 10
如果给定的数字为9, 则开始索引和结束索引将为7。
如果给定的数字为2, 则开始索引将为1, 结束索引将为3。
如果给定的数字为7, 则开始和结束索引将为-1, 因为数组中不存在该数字。
•
编写将给定字符串" aabbbccc"压缩为" a2b3c3"的方法
。它应该是就地压缩, 没有多余的空间可以使用。
•讨论我当前的项目。
•描述你失败, 帮助我们的同事等时的情况。
亚马逊的所有练习题
!