亚马逊面试体验 SDE-1
第 1 轮(HackerRank 在线)
时长:90 分钟
20 道 MCQ 问题,主要基于操作系统、数据结构和算法以及一些谜题。
2个编码问题:
- 我不记得确切的问题陈述,但归结为在有向图中找到循环。
- 这是一个关于字符串的简单的基本实现问题。 (不记得问题陈述)。
我们在海得拉巴被称为现场进行进一步的 F2F 回合。
第 2 轮 (F2F) 持续时间 = 70 分钟:从我的简历开始,用了大约 5 分钟的时间问了几个问题,然后从问题陈述开始。
所以这一轮提出了3个问题:
- 给定一个数组和一个正整数 k,找到每个大小为 k 的窗口(连续子数组)的第一个负整数。
从简单的方法开始,然后给出类似于滑动窗口最大值的优化解决方案。
- 给定一个大小为 M x N 的矩阵,有大量查询来查找子矩阵和。查询的输入是求和的子矩阵的左上和右下索引。对于每个查询,我们必须在 O(1) 中找到总和。
解决了这两个问题后,面试官还有一些时间,所以他问了第三个问题。
- 考虑一个长度为 L 的管道。该管道在其 N 个不同位置有 N 个水滴。每个水滴都以不同的速率向管道末端 (x=L) 移动。当一个水滴与另一个水滴混合时,它假定与它混合的水滴的速度。确定从管道末端流出的液滴数量。
在所有需要的澄清之后,我无法一口气理解问题陈述,我给出了解决这个问题的数学方法。他对解决方案深信不疑,但强调哪种数据结构可以更方便地解决这个特定问题。经过一些提示后,我告诉它可以使用堆栈来解决。
第 3 轮 (F2F) 时长 = 75 分钟:他开始时对我之前的工作经历提出了几个问题,但几乎没有持续 5 分钟,然后面试官开始提问。
这一轮提出了2个问题:
- 给定一个字符流,从流中找到第一个不重复的字符。您需要随时告诉 O(1) 时间中的第一个非重复字符。
我给出了第一种使用 hashmap 和 Dequeue 来解决这个问题的方法,但面试官告诉他不想对结果进行任何处理,如果重复,这种方法需要从 dequeue 中轮询字符。之后,我给出了一种使用 Hashmap 的方法,其中每个字符都将映射到双向链表的一个节点。如果我们在流中遇到重复字符,那么我们可以从 DLL 中删除该字符,因为我们可以从 hashmap 中获取节点地址。 DLL 的头部将是我们的结果。
这个问题用了将近半个小时。
- 打印二叉树中最长的叶子到叶子的路径。
我给出了最优化的解决方案,因为第一个问题所花费的时间很长。
第 4 轮 (F2F) 时长 = 70-80 分钟:从我的简历和以前的工作经验开始。问了关于 OOPS 和 SDLC(我的简历中提到过)的问题。 10 分钟后,他开始提出解决问题的问题。
本轮共问了2个问题:
- 对 LinkedList 进行排序。
我在链表上给出了合并排序的解决方案。
- 鉴于要准备某种成分,我们可能需要另一种成分,即
- 要准备成分 A,我们需要成分 B.(A -> B)
- 要准备成分 B,我们需要成分 C.(B -> C)
- 要准备成分 C,我们需要成分 A.(C -> A)
我们必须确定我们是否能够准备这道菜。所以归结为在有向图中找到循环。在第 3 轮现场轮次之后,被选中的候选人被告知他们将进行视频通话轮次(Bar raiser)。经过大约一个月的漫长等待后,进行了提高标准的回合。
第 5 轮提高标准轮 = 70-80 分钟:从介绍面试官开始,然后告诉他会问几个问题,然后我必须用我以前公司经验的例子来回答。之后他会问一个编码问题。
所以面试官问的问题是:
- 告诉我一个客户非常努力的情况,因为同样的原因,您必须非常快速地交付结果。
- 告诉我您在以前的组织中解决的问题?之后,他问我为什么只选择这个特定的问题。
经过大约 30 分钟的讨论,他提出了一个编码问题,要在共享的代码编辑器上解决。
- 我们必须将大小为 n 的数组旋转 r。他期待一个 O(n) 就地解决方案。我为这个特殊问题提供了杂耍算法解决方案。
大约一周后,我收到一封邮件,上面写着“恭喜!我们很高兴地通知您,亚马逊正在提供软件开发工程师的职位”。