亚马逊面试经历 |套装 405 (SDE-II)
第 1 轮:在线编码测试(时长:1 小时 30 分钟)
问题 1:给定一个 n*n 大小的矩阵,任务是以对角线模式打印其元素。
问题 2:懒惰的调酒师
有 N 种可能的饮料。(n1,n2..)
有C个固定客户。
每个客户都有固定的最喜欢的饮料。
调酒师必须尽可能少地制作饮料以满足所有顾客的需求
例子:
客户1:n3,n7,n5,n2,n9
客户2:n5
客户3:n2,n3
客户4:n4
Cust5: n3,n4,n3,n5,n7,n4
输出:3(n3,n4,n5)
关于职业杯上的懒调酒师的讨论
在线编码轮应该在家里进行。 HR 分享了链接,并给了 3 天的时间尝试一次并提交。
我解决了第一个问题并被选中参加面试流程。
第 2 轮:技术轮(时长:1 小时)
问题一:
下一个更大的元素
我从幼稚的方法开始,最后我们讨论了使用堆栈的解决方案。
我们还讨论了每种方法的复杂性。
问题2:
面试官:你知道HashMap吗?
我:回答了所有与HashMap相关的信息。解释了如何在内部为每个存储桶维护单链表。讨论了插入和检索的复杂性。
采访者:HashMap中没有维护插入顺序。编写代码来维护插入的顺序。
我:我们可以直接在Java中使用LinkedHashMap。该数据结构满足要求。
采访者:LinkedHashMap 内部是如何工作的?
我:解释了 LinkedHashMap 的内部结构。阐述了它是如何在HashMap机制之上维护双向链表来维护插入顺序的。这有助于了解Java数据结构的内部结构
问题 3:
你在团队中遇到过冲突吗?例如,如果您的团队成员正在尝试实施次优解决方案,而您不希望他/她这样做。你是如何处理这种情况的?
问题4:
最大和连续子数组
讨论包括幼稚的方法,使用维护单个变量和每个变量的复杂性的解决方案。
对于问题 1 和 4,面试官要求我在纸上编写生产就绪代码。期望包括涵盖所有极端情况和输入检查等。
第三轮:技术轮(时长:1小时)
面试官:告诉我你选择的数据结构。我会就此提出问题。
我:我们可以对链表有问题吗?
问题一:
这位面试官也是从 Hashmap 开始的。我们再次进行了我在第 3 轮问题 2 中进行的所有讨论。
为 LinkedHashmap 设计您自己的数据结构,并为插入元素编写生产就绪代码。
问题2:
为什么是亚马逊?
问题 3:
想象一下,我们有一个顶部打开的大盒子,里面放了一些小盒子。盒子的侧视图之一是这样的。
现在,如图所示,目前重力正在向下作用。
发生了一些环境变化,现在重力开始作用于所示图像的右侧。
让我们考虑数组中的初始数据。例如,图中的数组内容为 [3,2,3,2,1,4]。
考虑所有框的最终位置(数组中的最终元素)并设计算法来解决问题。我们可以只讨论算法。无需编写代码。
我们讨论了纸上盒子的最终位置,最后我发现它只不过是数组的排序。我回答必须使用合并排序。面试官问我为什么不快速排序?我们讨论了算法的复杂性和由于在快速排序中选择枢轴而发生的问题。
第 4 轮:设计轮(招聘经理)(时长:1 小时)
问题一:
面试官让我选择他可以提出设计问题的区域。
1. 在线游戏
2. 库存管理
3. Ola、Uber等出租车服务。
我选择了第二个选项。
面试官让我设计自动停车场
我们从要使用的类开始。讨论数据库结构。许多其他方面,例如如果我拥有许多停车场会怎样。如果一次只有一辆车来怎么办?如果我有多个车道可以进入停车场怎么办。如果在给定时间有很多车辆驶来怎么办?
我们讨论了线程同步、线程池、线程队列。
问题2:
说说你现在的工作吧。
第 5 轮:行为轮,提高标准(由两名经验丰富的人参加)(时长:1 小时)
问题一:
自我介绍。
问题2:
与以前的雇主讨论我以前的项目。
问题 3:
1. 与现任雇主讨论我目前的工作。他们要求我全面了解我目前的项目。我通过包含在我的项目中实现的许多设计模式来回答这个问题。
2. 告诉我们您为项目做出的贡献。我在可用框架之上实现了一些 IPC。他们问我 IPC 在内部是如何工作的?如果没有提供基础设施,你将如何实施它。我解释了 IPC 背后的操作系统概念。
3.如果需要在发布的产品质量或发布日期进行权衡,您会选择哪一个。
4. 你如何处理团队中的冲突?
问题4:
你了解家具吗?如果是,请设计一个。 (太模糊的问题)
我们讨论了更多关于需求的内容,因为我根本不清楚。想出了一些类别的家具。
编写 SQL 查询以从数据库中检索尺寸(宽度、高度、长度)与给定尺寸匹配的家具。最初,我编写了一个严格的 SQL 查询来匹配精确的维度。然后,面试官问我如果你搜索以上尺寸的家具,谷歌搜索将如何工作。我回答说它也提供其他尺寸相似的家具。我修改了我之前的查询,使其具有类似于 Google 结果的内容。
结果:我被选中了。
笔记:
1. 每次面试都是从面试官和我的简单介绍开始的。
2. 每个面试官都很友好和支持。面试时没有压力,紧张。这就像一个正常的技术讨论。面试官在需要时给出提示以找到答案。
3. 我们在每一轮讨论了面试官在亚马逊的工作。
4. 每一轮结束后,我都会询问自己的改进领域。喜欢它可以是任何东西,我应该多读什么,我应该发展什么技能。 (这与面试反馈无关,因为我知道它总是对受访者保密)。
5.不要在面试官一给你问题就开始解决问题。如果您不清楚要求,请提出问题。
6. 第五轮是用来检查受访者在不同情况下的行为。
7. 大多数时候,面试官并不期待正确的答案,而是评估你的思考过程。继续谈论你脑海中发生的任何事情。最重要的是准备好你的简历。