📜  亚马逊面试经历 |设置 295(校园内)

📅  最后修改于: 2022-05-13 01:57:06.857000             🧑  作者: Mango

亚马逊面试经历 |设置 295(校园内)

亚马逊参观了我们的 FTE(全职员工)园区。面试过程从一轮在线编码开始,然后是 4 次面对面的面试。随着我们进入下一轮,难度增加了。所有的面试都是从我的简介开始的。

线上回合:

一场黑客竞赛,有 22 个问题,包括 2 个编码问题和 20 个关于 C、OS、DBMS、网络的 MCQ。
这 20 个 MCQ 主要基于算法分析,例如特定代码片段的时间复杂度空间复杂度、基本 C、基于Java输出的问题、OS Mutex、信号量、IPC、同步等。
以下是我记得的一些问题

  1. 以下哪种排序算法具有最坏情况下的 nlogn 复杂度?
    答:归并排序,堆排序。
  2. 是时候在链表中的给定节点之后插入一个节点了?
    答案:O(1)。
  3. 调用fork()系统调用n次时创建的子进程数?
    回答:2^n-1(我猜)。
  4. int arr[5]={1,2}, cout<答:0,0,0。
  5. 假设搜索的元素始终存在于数组中,使用线性搜索在数组中搜索元素所花费的平均时间?答案:(n+1)/2。
  6. 你会得到一个数组,你必须找出它们中的哪一个代表一个最大/最小堆?
  7. 你是二叉树的两次遍历,你要找出问的遍历吗?例如:Inorder=4, 8, 10, 12, 14, 20, 22. Level order=20, 8, 22, 4, 12, 10, 14 查找预购?答:20,8,4,12,10,14,22
  8. 你有一个二叉搜索树和一个搜索给定键的关键时间? Ans: O(log(n)) 平衡 BST 的最坏情况 O(n) 正常 BST 的最坏情况(这种情况发生在左/右倾斜树上)。

编码问题

  1. 给定一个代表建筑物高度的正整数数组。假设每个建筑物的宽度为 1。您必须找到建筑物的最大矩形面积。
  2. 给你一个字符串,比如说“saideep”,s-1,a-1,i-1,e-2,d-1,p-1 是每个字符的频率。字符串的VALUE定义为每个不同字符的计数平方。上述字符串的值为 1+1+1+1+4=8;您的任务是在删除 'k' 字符后最小化字符串的字符串字符串
    回答:这是一个直截了当的问题,您使用 256 数组来存储每个字符的频率,对于 k 次,您会找到最大频率字符并将其频率递减 1。在 k 次迭代后,打印剩余字符得到的 VALUE函数。

F2F 1(1 小时 30 分钟,技术)

面试官是位女士,大概比我大3-4岁。她问了我两个编码问题:

  1. 给你一棵二叉树,你必须打印它的极端节点。?给我一个健壮的算法,适用于所有情况,解释你的算法的空间复杂度和时间复杂度?
    例如:
    1
        /  \
       2    3
      /  \   \  
     4    5   8 
             /  \
           6    7
    

    输出: ( 1 2 8 6 ) 或 (1 3 4 7)
    Ans:这只是对级别顺序遍历的修改,跟踪一个布尔标志变量并在每次迭代后将其翻转。然后她让我整齐地写出完整的代码。

  2. 您将获得两个仅在每个节点中由数字 0-9 组成的链表。每个链表代表一个数字,你必须将链表代表的两个数字相加吗?
    例如:
    Input:
    First List: 5->6->3 // represents number 365
    Second List: 8->4->2 // represents number 248
    Output
    Resultant list: 3->1->6 // represents number 613
    

    我说我已经知道那个问题她跳到下一个问题

  3. 您将获得一个包含循环的链表,如果存在则检测并删除它?例如: 链表循环检测回答:首先,我给出了一个哈希解决方案,它肯定适用于所有情况。这个想法是,每当我看到一个节点时,我都会在哈希表中查找它是否已经存在于表中,如果不存在,则存在一个循环,我使该节点 ==NULL。
    否则我将在哈希表中插入该节点并移动到下一个节点。
    她对那个解决方案没意见,但它需要 O(n) 的哈希表空间,所以她让我在 O(n) 时间和 O(1) 空间内做。
    然后我得到了那个2指针方法(弗洛伊德循环检测算法),所以我给出了那个方法,通过这种方法我们可以很容易地检测到一个循环,但是删除它需要一些数学(与一维运动学相关)。
    然后她让我整齐地写出完整的代码。

F2F 2(1小时30分钟技术):

他给了我两个编码问题

  1. 你得到一个具有不同字符的字符串,你必须打印它的所有排列?
    例如:输入: “AB”
    输出: AB,BA
    这是一个直截了当的问题,我给了他一个回溯方法,他让我用一个例子来解释回溯是如何工作的。我通过各种涉及极端情况的例子来解释他,并确保它适用于所有情况。然后他让我整齐地写完整的代码。
  2. 给你一个迷宫,描述山羊到达它的房子的方式。迷宫通常是一个 M*N 网格,仅由 0 和 1 组成。山羊最初位于迷宫中的 (0,0) 点,它必须到达点(M-1,N-1)。山羊唯一可能的移动是向右,向下,向右向下(对角线),即从点(i,j)山羊可以移动到(i + 1,j ) 或 (i,j+1) 或 (i+1,j+1) 点。山羊一次只能迈出一步。你的任务是找出山羊到达它家的路径的数量。
    点 (0,0) 和点(M-1,N-1) 显然是 1。1 表示该点可以使用,0 表示该点被阻塞,因为我们无法不惜一切代价到达该点.
    答:
    我最初给了他一个递归解决方案,并向他解释了该解决方案的缺点,即解决该问题需要成倍的时间。
    然后我解释了我如何使用动态编程来解决这个问题,并给了他一个 DP 解决方案。他对我的解决方案印象非常深刻,并问我该解决方案的时间和空间复杂性。然后他要求我整齐地编写完整的代码。

F2F 3(1小时技术):

面试官看了我的简历和我之前的面试表现,然后说自我介绍。我自我介绍:他问我有没有实习过。我说不,先生,我在一些公司有机会,但我没有抓住它。然后他问我今年夏天你学到了什么,我说我为实习做了准备,我做了1-2个小项目。
然后他问我为什么不带那个实习生。我告诉他我不喜欢那些公司的招聘过程本身,我如何在公司工作。我说他们都要求记住我非常薄弱的概念,甚至没有问我一个逻辑问题。他甚至没有不要问我单个编码问题。

他说让我们开始我们的流程,因为你的编码技能,但在这一轮中,我会问你一些理论问题。

他问我

  1. 触发器和存储过程的区别?
  2. 线程和进程的区别?
  3. 定义死锁和竞争条件?
  4. 如何检测死锁?
  5. 什么是资源分配图以及它与死锁的关系,该图中的节点是什么?
  6. 他问我知道的所有数据结构是什么,并给出了他们的实时示例?
  7. DBMS 中的索引
  8. 索引类型
  9. DB中如何进行索引(b-tree和b+trees)
  10. 视图、视图类型及其优势

然后他给了我一个编码问题:您必须将数组的每个元素替换为其右侧较小的元素。如果这样的元素不存在,请不要替换它。
Ans:我给了他一个堆栈解决方案,他非常满意,并要求我编写代码来处理极端情况。然后他让我整齐地写完整的代码。他对我的代码很满意,并让我在外面等下一轮。

F2F 4(人力资源+技术):

他首先让我介绍自己并给出了一个编码问题。这是一个难题给定小子矩形的尺寸。
他向我解释说,它需要建造 SLICING TREE,然后打印平面图。他问你将使用哪些数据结构来构建它,并让我考虑一下。

Ans:我给了他一个基于堆栈/队列的方法。我告诉他我将按长度/宽度对子矩形进行排序,并以 d=递增的顺序将它们推入堆栈。 .他对我的算法非常满意,并要求我对其进行编码。我将其完全编码并展示给他。 .我刚刚解决了这个问题,我没有打印我们实际问题的平面图。 .i 然后在其中实现了打印函数。
他说他面试完了,问我有什么问题。
我向他询问了他目前正在从事的那种项目以及一些关于技术的随意讨论。

PS:- 每个人都知道该算法,但它的实现需要使用健壮、干净的代码来覆盖所有测试用例。它们肯定会给出我们的代码无法执行的极端情况,因此请确保您编写通用代码。确保提出任何疑问如果有的话,可以澄清给定的问题/场景。面试官很有帮助,如果你受到打击,他们会给你提示。

感谢GeeksforGeeks 。 .它对我的准备帮助很大。

如果您喜欢 GeeksforGeeks 并愿意做出贡献,您还可以撰写文章并将您的文章邮寄至 review-team@geeksforgeeks.org。在 GeeksforGeeks 主页上查看您的文章并帮助其他 Geeks。

亚马逊的所有练习题!