📜  亚马逊面试经历 |在校园实习

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

亚马逊面试经历 |在校园实习

你好极客,最近亚马逊访问了我们的校园实习和全职,我出现在亚马逊的实习面试中
我个人的经验是,先探索问题,然后逐步思考可能的解决方案。一旦有效的方法击中您,请考虑是否有可能进一步优化它,而不是试图立即跳到正确的解决方案。
检查所有极端案例,最重要的是在与面试官的对话中不要保持完全空白,而是继续告诉你想到的暂定解决方案。

我的整个过程包括 2

  1. 线上回合
  2. F2F 面试

线上回合:
我们的在线回合与亚马逊遵循的通常模式完全不同。我们有三个部分。
第1节:7个代码调试MCQ,非常简单,需要任何编程语言的基本知识,但限制只有时间限制(10分钟),没有负面标记。
第 2 部分:基于能力和定量推理的 24 个 MCQ。他们也很容易,没有负面标记和 35 分钟的时间限制。
第 3 部分:2 个编码问题,时间限制为 45 分钟。
问题 1:在逐行和逐列排序的 2D 矩阵中搜索

Input : mat[4][4] = { {10, 20, 30, 40},
                    {15, 25, 35, 45},
                    {27, 29, 37, 48},
                    {32, 33, 39, 50}}
        x = 29
Output : Found at (2, 1)
Input : mat[4][4] = {{10, 20, 30, 40},
                     {15, 25, 35, 45},
                     {27, 29, 37, 48},
                     {32, 33, 39, 50}}
        x = 100
Output : Element not found

问题 2:具有不同到达时间的循环调度
您必须返回 CPU 完成所有 n 个进程的处理的平均等待时间。
(流程按到达时间排序。)

Input: arrivalTime[] = { 0, 1, 2, 3 }
       burstTime[] = { 10, 4, 5, 3 }
       quntumTime = 3
Output: Average waiting time is 10.0
Input: arrivalTime[] = { 0, 5, 7, 11 }
       burstTime[] = { 10, 7, 1, 9 }
       quntumTime = 4
Output: Average waiting time is 6.75

这三个部分之后是一个反馈表,这是一种人力资源回合。这种反馈也有助于筛选学生。所以,我建议在通过这些反馈告诉你自己时要保持关注和公平一点。

面对面采访:
面试官让我自我介绍。然后他根据我的 CV 和 CS 核心科目(如 OS、DBMS、计算机网络和 OOP 概念)提出了一些问题。然后他问了我3个数据结构和算法的问题。

问题1 :检查两个节点是否是二叉树中的表亲
他让我用 O(n) 编写代码并且只遍历一次树。当一个或两个给定节点在树中/不存在时,您也需要考虑这种情况。

问题 2 :给定一个排序数组,其中所有元素重复两次,并且只有一个元素出现一次。你需要找到那个独特的元素。
让我印象深刻的即时方法是返回所有元素的异或。这是 O(n) 方法。他让我优化它。
然后我给出了基于修改二进制搜索的 O(logn) 解决方案。

问题 3 :在整数的二维数组中,2 表示墙壁,1 表示僵尸,0 表示人类。第二天僵尸将相邻的人类变成僵尸。僵尸与人类相邻上、下、左、右各一个街区。僵尸不能穿过墙壁。
找出感染所有人需要多少天。如果有人从未被感染,则返回 -1。

Input 1: mat[4][5]={{2, 1, 0, 0, 0},
                    {2, 0, 2, 2, 0},
                    {1, 2, 0, 0, 0},
                    {0, 2, 0, 0, 0}}
Output: 8
Explanation:
Day 1: {0, 2}, {1, 1}, {3, 0}
Day 2: {0, 3}
Day 3: {0, 4}
Day 4: {1, 4}
Day 5: {2, 4}
Day 6: {2, 3}, {3, 4}
Day 7: {2, 2}, {3, 3}
Day 8: {3, 2}

Input 2: mat[3][4]={{2, 0, 0, 0},
                    {2, 2, 1, 0},
                    {0, 0, 2, 2}}
Output: -1
Explanation: {2, 0} and {2, 1} never gets infected.

方法:首先扫描整个矩阵并将所有僵尸的位置存储在一个队列中。队列中的所有这些元素都代表级别 1。现在在该队列上应用 bfs,并且每个级别将天数增加 1。应用 BFS 后,如果没有人离开,则返回天数,否则返回 -1 作为所有人不能转化为僵尸。

Code Link:https://ide.geeksforgeeks.org/M8HPFwNxRI

然后他问我有没有什么问题。我向他询问了我们在那里要做的项目类型,以及这些数据结构和算法以及操作系统、DBMS 主题的知识如何应用于实际场景中,以有效地处理数百万用户。他举例说明了他们最近在数据组织方面的变化,并开始详细说明亚马逊的整个工作流程……其中一些我几乎无法理解。
我终于被亚马逊录用了实习。我要感谢 Geeks for Geeks,这对我的准备工作帮助很大。