我在 Amazon Hyderabad 接受了 SDE 2 角色的面试。
第 1 轮(在线测试,Hackerrank):
- [中] 一个大问题的陈述,很像烂橙子问题。有一个文件需要在矩阵中表示的所有系统之间传输,而不是橙色。
- [简单] 问题陈述要求根据问题的用例使用自定义比较器对自定义对象数组进行排序。
第 2 轮(F2F,技术):
- 下一个更大的排列
- 我做了一个关于Java反射和类加载内部的项目,面试官对整个架构和实现很感兴趣。
- 领导力问题,您最后一次意识到优秀领导者的重要性是什么时候
第 3 轮(F2F,管理和 HLD) :
B2B 业务的一个用例,其中亚马逊将在其平台上招募多家公司。每家公司都有一些特征(公司信息合作伙伴)用于对其进行评级,我们有“n”个合作伙伴可以通过 API 提供这些特征。每个 CompanyInfo 合作伙伴都会返回一些不同的字段集(尽管影响相同的因素)。评级用于向合作伙伴提供附加服务。设计一个系统,所有此类合作伙伴和公司的入职流程都是无缝的。在任何时候,他都应该能够查询系统的任何特征和过滤器(收入、员工人数等)。他想了解我如何概括整个模糊的问题陈述并向他提出同样的疑问。我们对我将要提出的微服务进行了详尽的高级讨论。
还有行为问题。
第 4 轮(F2F,技术,LLD) :
在 Google 搜索中设计一个功能,该功能可以在任何时间点从日志服务器返回“k”个最常访问的网站。每当访问特定网站时,日志服务器都会提供触发器。低级实现是对数组中 K 个最频繁元素的扩展。我从排序开始,然后转移到堆,在挣扎后花了我时间到达那里。考虑到此功能以及设计中涉及的所有设计原则,我被要求为每个操作编写 API。
讨论微服务、单体系统、单例模式、不变性的概念。
第 5 轮(F2F,技术) :
- 字梯问题。如果字典不变,我被要求优化查询。我缓存了图表并为每个查询运行 BFS。
- 前一个问题的扩展,他想要具有合适方法、方法签名、消费类的生产就绪代码。他想看看我是否可以编写可读且可扩展的代码。
- 关于亚马逊领导力原则的问题
- 您最后一次因时间不够而不得不妥协要求是什么时候?
- 上次你不能按时交货。
一周后接到了最后一轮的电话(Bar Raiser)。
第 6 轮(视频通话,Bar Raiser) :
这一轮完全是行为轮。包括有关我在当前组织中所做工作的问题。
我记得的一些问题是:
- 一项您引以为豪的贡献,并产生了重大影响。
- 您与经理或领导在设计方面发生冲突的案例。
- 一个你把事情搞砸的案例,你是如何处理的。您的经理对此有何回应?
- 你在与经理密切合作时学到的东西。
- 为什么是亚马逊?
有很多问题想不起来了。亚马逊有一套他们遵循的领导原则,并相应地尝试了解你。做你自己,不要对你的工作撒谎。因为相信我,你会陷入深潜。
我这边的一些准备建议
- 设计问题很宽泛,故意模糊,提出相关问题以更好地理解问题。如果你提出正确的问题,面试官会很高兴。
- 设计问题没有完美的解决方案。重点是了解您在解决实际用例方面的能力如何。
- 为领导力和行为问题做好准备。他们确实有所作为。
- 不要急于进入流行语(正如 Tushar Roy 在其准备设计访谈视频中提到的那样)。你急于使用基本知识进行一致性哈希,面试官可能会割破你的喉咙 😛