SDE1 FTE/6M Intern 的亚马逊面试体验(校园内)
第 1 轮:在线编码 + 多选题
面试日期:2019 年 7 月 29 日。
平台:mettl
28个MCQ和2个编码
MCQ 由数据结构、算法、C/C++ 片段的代码输出(指针)组成。
编码问题:
- 从数组中查找平均值、中位数、众数。
- 重新排列数组,使连续对之间的差异之和最小,并返回该总和。
第 2 轮:F2F 问题解决
面试官直接进入提问环节。
- 没有两个元素相邻的最大和
我用 O(n) 时间和 O(1) 空间解释了 DP 方法。他对此很满意,我在纸上编码。
- 数组中的峰值元素
最初,我告诉线性搜索方法,但他告诉我要做得更好。经过一些纸笔工作后,我意识到可以通过分而治之的方法来完成。所以,我告诉他,他让我写同样的代码。
第 3 轮:F2F 数据结构
这位面试官让我自我介绍,还问我最后一轮过得怎么样。然后他立即转向问题。
- 用随机指针克隆一个链表:
起初,看到这个问题我傻眼了,什么都想不出来。但经过一番思考,我告诉他基于 HashMap 的解决方案。由于这是 O(n) 解决方案,他要求我进一步优化空间复杂度。我花了大约 5 到 10 分钟才想出“更改链接”的解决方案。他似乎对这个解决方案很满意。并要求我编码。
我真的建议看看这个问题,因为这需要非常独特和开箱即用的思维。
- 就地旋转矩阵:
这是一个简单的基于实现的问题,他想要空间优化的方法,我也解释过。他没有让我写代码。
第 4 轮:F2F CS 基础
这是最长的一轮,持续了 90 分钟。很佩服这位面试官的提问方式。
这个面试官是个很酷的人。首先我们做了介绍。然后他告诉我要很舒服,他说这将是讨论轮,我们将讨论计算机科学基础知识,但要详细。
他以非常不同的方式问了我所有的问题。在下面列出的所有主题中,他向我解释了这个概念是什么,并问我为什么、何时以及在哪里使用它。基本上,他想知道我对基本原理的理解有多深。
- 他向我解释了什么是界面,并问我为什么、何时以及在哪里使用它?我们详细讨论了它并给出了实际的例子。
- 你将如何实现 printf()函数?
- 什么是Java中的值传递和引用传递?
- 他向我解释了公共的、私人的、受保护的。问我们为什么、何时、何地使用它?我通过给出实际例子和几个类定义来解释它。
- 我们转移到数据库部分。他向我解释了什么是标准化,并再次问我为什么、何时以及在何处使用它。我又举例说明了一遍,他很满意。
- 解释 ACID 的性质。我详细解释了。当我说 NoSQL 数据库没有这个属性时。他问我是否知道NoSQL,我说是的。然后我们讨论了 SQL 与 NoSQL。
- 你如何理解非结构化数据?为什么选择 NoSQL 来处理这类数据?
- 他要求使用实际示例在 SQL 和 NoSQL 之间进行权衡。为什么,何时何地使用 SQL 而不是 NoSQL,反之亦然。我给了他满意的答复。他对此很满意。
- 然后他让我对Quick Sort、Merge Sort进行时空复杂度分析。问我什么时候出现最坏、最好和一般的情况,让我举个例子。
- 您对平衡 BST 的理解是什么?为什么使用它?
- 然后他问我们能否在数组中搜索比二分搜索做得更好。我给了他几种方法:HashMap、Ternary Search、Binary Search 从左开始
在就各种话题进行了长时间的讨论后,他问我是否有任何问题。我问了他几个关于亚马逊工作文化的问题。
第 5 轮:酒吧提升者
这是一次电话采访,在现场 3.5 周后进行,在 AWS Chime 上完成。面试官是一位有20多年经验的非常有经验的人。
他让我自我介绍。当我提到我的实习时,他问我从事什么样的项目,并问你必须编写你现在实现的功能。我尝试对其进行编码,但由于我面前没有文档,也没有 IDE,所以我无法做好。
之后他问了我一个编码问题。连接同级二叉树的节点。我说使用队列进行级别顺序遍历。要求我递归地做。我给了他递归方法,然后他让我编写代码。
最后,我们讨论了在亚马逊工作和领导原则。
我真的建议,电话面试与面对面的 F2F 面试不同。在这种面试中需要不同的技能来破解/做好,我觉得这是我被拒绝的原因。
总的来说,这是一次很好的学习经历。
感谢 Geeksforgeeks。