第 0 轮:在线编码测试(90 分钟 – 4 道编码问题)
- 行程编码
Input : aaaaaabb Output : a5b2 Input :aaaaabccc Output :a5bc3
- 链表对和计数
Input : list = 0 -> 2 -> 5 -> 7 -> 4 -> 6 -> 10 -> 20 -> -10 -> Null Sum = 10 Output : 3 Explanation: (4, 6) (0, 10) (20, -10)
- 将双向链表旋转 N 次
Input : NULL <= a =><= b =><= c =><= d =><= e =><= f =><= g =><= h => NULL Num = 4 Output : NULL <= e =><= f =><= g =><= h =><= a =><= b =><= c =><= d => NULL
GeeksforGeeks 链接
- 给定二叉树,如果 x 存在,则查找 x 节点的级别,否则返回 0。
GeeksforGeeks 链接
1 个月后,招聘人员要求进行 f2f 轮次。同一天有4轮。
第 1 轮:招聘经理轮(行为 + 设计)(1.5 小时)
介绍、项目和大量行为问题
- 项目最大的挑战,你是如何解决的? (选择最近的和最好的)
- 告诉我你指导某人的时间?
- 告诉我什么时候你的经理不在,你不得不做出一些重要的决定?
- 告诉我什么时候你必须自己深入研究某事?
很多其他行为问题。最后给出了一个需要解决的设计问题。
设计:
将 Splitwise 应用程序与 Amazon Pay(或 Paytm)集成
1)一个人可以支付给另一个人,钱直接存入另一个人的银行账户。
2) 一个人也可以发送提醒给另一个人拥有钱。
第 2 轮:设计轮(1.5 小时)
- 详细讨论项目及其设计,您将如何扩展项目以支持 n 个用户。重点是可扩展性和分布式设计。
- 设计作业调度程序、可扩展性、容错性、高可用性、调度程序如何获取作业、
您将如何处理一项工作可以运行 30 分钟,一项工作可以运行 30 小时,您将如何在服务器上分配工作。
根据频率和时间,您将如何执行它们?
您将如何通知用户有关开始/停止或完成工作的信息?
您的系统如何知道作业是否因未知原因被终止/终止?
第 3 轮:编码轮(1.5 小时)
- 给定数组和链表,其中元素来自数组但也可以重复。
按顺序对链表进行排序,元素出现在数组中。预计 O(n) 复杂度。期望在纸上完成运行代码。所有边界条件检查都是预期的。Input : arr = {5, 1, 3, 2, 8} list = 3 -> 2 -> 5 -> 8 -> 5 -> 2 -> 1 -> X Output : 5 5 1 3 2 2 8
GeeksforGeeks 链接
第 4 轮:编码轮(1.5 小时)
- 给定一个 n 叉树,基本上是一个图,但连接并且不包含循环。
每条边都有一个权重,识别从所有顶点到所有顶点的所有路径,然后是所有路径的总和。
将最终结果作为所有路径的总和。Ex: 10 20 A-------B--------E 30/ \40 \ 50 / \ \ C D F Here all paths and their sum are as follows: Ans should be sum of all of them. A-B = 10 A-E = (10+20) A-F = (10+50) A-C = 30 A-D = 40 B-E = 20 B-F = 50 B-C = (10+30) B-D = (10+40) C-D = (30+40) C-E = (30+10+20) C-F = (30+10+50) D-E = (40+10+20) D-F = (40+10+50) E-F = (20+50)
先写数据结构来解决这个问题,然后是高效算法,然后在纸上完成工作代码。
总的来说,这是一次积极的经历,招聘人员让我了解进度和下一轮。前四轮打得很顺利,但我没能解决第五轮的问题,之后就被淘汰了。
非常感谢 geeks 为 geeks 提供如此大量的收藏来练习。
建议:
- 请为行为问题做好准备。为所有问题准备一两个示例。大多数都可以在这里找到:http://kraftshala.com/how-to-raise-the-bar-in-the-amazon-interview/
- 认真准备设计回合,他们在您的设计中寻找可扩展性、高可用性和分布式系统架构。
- 对于编码,请准备好您的基础知识并使其深入,练习使用笔和纸编写代码。