亚马逊专访 |设置 57(SDE-1 校外)
嗨极客,我最近为亚马逊招聘。我只是想和大家分享我的面试经历。
总共 1 个书面 + 5 个 F2F
写轮回:
Q1:将排序的整数数组转换为平衡二叉搜索树。这是非常简单的一个,我可以在 O(n) 时间和 O(1) 额外空间内完成。
Q2:编写一个程序来反转单链表的每k个节点,而不使用额外的空间。约束:k>=2
F2F第一轮:
Q1:在 o(log n) 时间内找到排序后的旋转整数数组中的最大元素。
Q2:求二叉树的高度。这是一个非常简单的问题,所以我很快就做了。然后他继续下一个。
Q3:找到自己的方法来平衡不平衡的二叉树。(不能使用现有的方法,如 AVL、红黑或 b 树)。
提示:放置节点没有限制。您可以从任何地方移除任何节点并将其放在任何地方。
我设计了一个使用两个列表的算法。一个列表包含远离根的节点,如果节点处于同一级别,则按级别降序排序,从左到右排序。其他列表包含未完全填充的节点。如果节点处于同一级别,则按级别的递增顺序和从左到右的顺序排序。
删除第一个节点(在 list1 中列出)并作为 list2 中第一个节点的子节点插入。将此节点也添加到列表 2 中。执行此操作直到树的高度变为 log(n)。面试官对此印象深刻,结束了面试。
F2F第2轮:
Q1:有一个包含 N 个单词的文件。该文件中可能有 M 个字谜,每个字谜上有 K 个单词。 K>=1,M>=1,N>=1。您需要编写一种算法,该算法将为每个带有 k 个单词的字谜创建一个列表,并将所有 M 个列表与一个数据结构分组(这是主要区域。我们需要考虑一种数据结构,它将最小化单词的空间和时间复杂度找到合适的列表并插入单词)。
我可以通过跟踪每个列表中的尾指针来在 O(1) 时间内完成插入。但是在链表的情况下找到合适的列表需要o(n),在二叉搜索树的情况下需要o(log(n))。使用哈希表,您可以在 o(1) 中做到这一点,但编写哈希函数在时间上是困难且效率低下的。然后我提出了 Trie 数据结构。有了这个,我们可以很好地降低时间复杂度。但空间复杂度会更高。我把所有的想法都告诉了面试官。他们对此非常满意。并移至下一个问题(无需编写代码 J)
Q2:查找未排序整数数组的最小和最大元素。
非常简单的问题,您可以对数组进行两次传递并找到它,但比较次数将是 o(2n)。他要求我减少它。
我给出了一个算法,它在 O((n/2)*3) 中做同样的事情,它远小于 o(2n)。他们对我的解决方案印象深刻,并问天气我有什么问题。
F2F 第 3 轮:(CS 基础和系统编程)
题目是C++模式,网络编程,Linux,因为我做过网络项目,Linux我这一轮表现不错。
F2F 第 4 轮:(招聘经理轮):
面试官热衷于测试文化契合度。关于我之前的项目的近 10 到 15 个问题,
为什么是亚马逊?
为什么要离开以前的公司?
你在以前的公司采取了什么举措?
您将如何处理与经理的冲突?
您将如何向客户展示您的产品?
F2F 第 5 轮:(酒吧提升者)
这也有文化适应问题,然后是数据结构问题。
Qn:求二叉树中两个节点之间的距离,不给出父指针。我可以在 o(n) 时间复杂度的后序遍历中解决这个问题。他让我在家里编码并通过邮件发送。
Geeks for Geeks 是我的面试准备维基百科。感谢极客的极客。