📜  亚马逊面试体验|套装189(对于SDE-1)

📅  最后修改于: 2021-04-23 16:55:48             🧑  作者: Mango

最近,我接受了Amazon SDE-1职位的采访。进行了两次电话回合,随后进行了4次F2F回合。

第一回合电话:
——————————
他似乎对面试毫无准备。他从一些介绍和有关当前工作的知识转移开始,然后创建了一个二叉树,并要求我为该树编写层级顺序,预顺序,后顺序和顺序遍历。
然后,接着是编码问题。

1)展平多级链接列表。
第一种方法–>使用队列:T = O(n),S = O(n)。编码了。
第二种方法–>与在GeeksForGeeks上相同<展平链表>:没要我编码。但这需要更改数据的结构。

2)展平多级链接列表,但应首先打印深度节点。因此,基本上第一个问题类似于BFS,而这个问题类似于DFS。使用递归很容易做到这一点。

3)进程与线程。输入URL时会发生什么?高级设计。握手协议。 HTTPS协议等

第二轮电话:
——————————
我必须说,采访我的那个人真的很聪明。这个回合超过1小时,共有3个问题。

1)BST到单链接列表的位置。这个问题的略微修改将其编码。

2)在棋盘上寻找可以被车子攻击的方块
有一个NxN的棋盘。棋盘上的每个方块都可以是空的,也可以有一个车鸦。我们知道,一个新手可以水平或垂直攻击。给定一个2D矩阵,其中0代表一个空正方形,1代表一个白嘴鸦,我们必须在矩阵中的所有单元格中填充1,它们代表可以被棋盘上任何白鹅嘴攻击的正方形。在这里可以找到这个问题的简单得多的版本-
布尔矩阵问题

3)一系列建筑物正对着太阳。建筑物的高度以阵列形式给出。您必须告诉所有建筑物哪些都可以看到日落。这很容易。第一座建筑物肯定会看到日落,而其余建筑物则只需保持变量max_height_seen_so_far并检查当前建筑物的高度即可。但是,他然后提出了一个问题,问我如果要从头到尾而不是从头到尾扫描建筑物,我将采取什么方法。我使用了堆栈,并应用了与下一个更大的元素问题类似的逻辑。

捕获

F2F R1:
——————
从介绍开始。有关当前公司,当前工作,当前项目以及设计问题的很多问题。

您将如何设计Microsoft Outlook的会议邀请功能?将每个会议邀请作为对象,并将Web服务器作为邀请的存储空间,设计一种数据结构,以高效的方式接收和发送邀请给用户。必须根据会议时间以排序的方式接收消息对象。我建议使用二叉搜索树,并证明使用此DS是合理的。我给了O(NlogN)解决方案。然后,我被要求对其进行编码。我用C#编码。

其次是很多人力资源问题。

F2F R2:
——————
1)反转数组中的子数组。相当容易。

2)旋转数组中的子数组,其中提供了子数组的开始和结束索引,并提供了“ k”,即要完成的转数。面试官在这个问题上表现得很愚蠢。他想要的只是一个解决方案。他让我一遍又一遍地运行代码,他对这个概念或方法并没有真正的困扰。我认为他与我的解决方案无关(时间为O(n),空间为O(1))。

3)查找一个链表是否有循环。老问题。快和慢的指针。但是获得这种解决方案并不是他真正的动机。他问为什么慢速指针一次只能移动一个节点,以及为什么快速指针一次只能移动两个节点。在讨论的引导下,我被要求为给定的链表找到慢速和快速指针的最佳速度。再次,在讨论的引导下,他问是否给出了链表中有一个循环并且给出了循环的大小,我能找到慢速指针和快速指针的最佳速度吗?

F2F R3:
——————
1)与电话回合中第3季度提出的问题相同,唯一的不同是建筑物的高度在链表中提供。然后用C进行编码。然后,访调员通过将太阳放在最后一栋建筑物之后(以前太阳放在第一栋大楼之前)来扭转问题。使用堆栈。但是,这可以简单地通过反转heights数组并使用为问题的第一部分编写的相同函数来完成。

2)设计一个数据结构来表示组织中员工的层次结构。另外,设计应确保您可以检索到“否”。经理的报告人(不仅是直接报告人,还包括其下属的所有员工)都非常快(期望O(1))。同样,新员工的入职和员工的离职也应该很快。

我建议使用哈希表的n元树。此外,还使用了另一个哈希表,其中键为employeeId,value为n元树中哈希表(或节点)的地址。我的解决方案没有给出任何答案。 O(1)中的报告人的数量以及员工的增减是在O(n)的时间内,其中n是员工总数。虽然没有足够的时间进行编码。

F2F R4:
——————
这一轮有很多人力资源问题。文化信息。当前的项目。他还问编码问题,但是他对解决方案的最优性并没有真正的困扰。

1)交换BST中的两个节点。找到他们。告诉我的方法。没要我编码。

2)按字典顺序打印字符串的所有排列。编码了。我花了很多时间来让他明白代码是正确的😀

亚马逊的所有练习题!