”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 我的 Amazon SDE 面试经历 – 5 月 4 日

我的 Amazon SDE 面试经历 – 5 月 4 日

发布于2024-11-08
浏览:235

我的 Amazon SDE 面试经历 – 2024 年 5 月

2024 年 5 月,我有机会面试亚马逊的软件开发工程师 (SDE) 职位。这一切都始于一位招聘人员通过 LinkedIn 联系我。我很惊喜,因为它总是令人兴奋。

一切是如何开始的

招聘人员专业且清晰,为我提供了有关流程和角色的所有必要细节。交换了几条消息后,我收到了第一轮面试的测试链接,这是一个编码评估。该评估在 HackerRank 上托管,包括两个编码问题。

第一轮 - 编码测试

问题很简单,但有点冗长。详细介绍如下:

1。第一个问题:条形码生成
任务是根据一些预定义的参数生成条形码。虽然这个问题本质上并不复杂,但需要注意细节以确保满足所有条件。我有条不紊地解决了这个问题,将其分解为更小的部分,并用 JavaScript 实现了一个解决方案。重点是效率和清晰度,确保生成的条形码符合预期的格式和约束。

2.第二个问题:具有部署状态的数组处理

这更多的是数据操作任务。输入由对象组成,每个对象都有一个部署 ID 和一个部署状态。我的目标是根据这些输入返回一个数组。虽然问题看起来很简单,但它也存在一些边缘情况。例如,有些物品缺少钥匙,乍一看并不明显。然而,在提交我的初始解决方案后,我意识到需要考虑这种边缘情况。我很快修改了代码来处理这些情况,确保丢失的键不会导致错误或不完整的结果。

My Amazon SDE Interview Experience – May 4
我使用 JavaScript 解决了这两个问题,并且确信我的解决方案通过了所有测试用例,包括隐藏的测试用例。

如果候选人解决​​了所有编码问题并通过了所有测试用例,亚马逊往往会推动候选人在这个过程中前进。

之后接到招聘人员的电话,说他正在推进面试流程,这将是现场面试。我有 5 天的时间来准备。

过去三年我一直在远程工作,从未去过办公室,所以我更害怕的是办公室而不是面试??

进一步的面试

我去了亚马逊办公室,那里已经没有几个候选人了。我们都去面试了。那天我进行了3轮技术面试。

1. 故障排除回合

第一轮是一次以故障排除为重点的面试。我一走进房间,就受到了一位非常支持我的面试官的欢迎。他在整个会议期间一直保持微笑,这有助于缓解我的紧张情绪。

他递给我一张纸,并提出了几个与系统故障、网络和网络层相关的问题。他使用的方法特别有趣。他让我首先考虑基本的解决方案——本质上是鼓励我从头开始解决问题。当我给出答案后,他稍微改变了场景,每一步都增加了更多的复杂性。

例如,在讨论网络故障后,他将对话转移到网络的更深层次,并问如果标准解决方案不起作用我会怎么做。这促使我创造性地思考并考虑系统中的各种故障点,从最常见到更复杂的问题。

面试让我在外面等,然后一位招聘人员来了,说我要去第二轮。

2. DSA 轮

下一轮是深入研究数据结构和算法(DSA)。这次,我的面试官是亚马逊的一位高级SDE。她递给我一张纸,并提出了一个相当大且复杂的问题。当我通读它时,我很快意识到主要目标是找到图中的最短路径。此类问题在面试中很常见,但当涉及边缘情况时可能会变得棘手,她肯定会包括在内。

我问了一些澄清问题,以充分理解问题及其各种场景。一旦我有了信心,我就开始研究解决方案——直接在纸上写伪代码。当我解释我的方法和逻辑时,她不断深入探究,询问我为什么做出某些决定以及我如何处理图表的不同部分。我向她介绍了我的思考过程,讨论了权衡和优化。幸运的是,我能够完整、正确地解答这道题。

一旦她对我的图形解决方案感到满意,她就问我有关时间和空间复杂度的问题,我向她分析并向她解释了这一点。很有成就感,觉得这一轮进展顺利。

然而,她很快转向另一个更具挑战性的问题——这次涉及动态规划(DP)。这个问题涉及到一个矩阵,其中不同的作物需要以遵循一定规则的方式种植。这是一个更复杂的问题,我花了一些时间来完全理解它。我问了几个问题,以确保涵盖所有限制和边缘情况。

我编写了一个伪代码解决方案,但它没有完全优化。她给了我一些测试用例,虽然我的代码在其中大约 80% 上运行成功,但仍有一些边缘用例失败了。我此时变得紧张,她注意到了这一点。幸运的是,她提供了有用的提示,我尝试进一步优化我的解决方案。尽管我尽了最大努力,但我无法完全解决这个问题,可能是因为我的神经占据了主导地位。

我又在外面等了,我对这一轮不是很高兴也没有信心,但是招聘人员又来了,说我的下一轮是系统设计。我好开心啊!

3. 系统设计回合

当天的最后一轮是系统设计面试,这是迄今为止最紧张、最疲惫的会议。面试官是亚马逊架构团队的一员,从一开始我就知道这一轮将具有挑战性。我们首先讨论了我的简历,重点讨论了我过去的项目以及我在之前工作中做出的设计决策。他问了几个关于我所开发的系统架构的问题,探讨了我的设计选择和我所做的权衡的细节。

经过初步讨论,他要求我为教育技术平台设计一个系统,特别关注视频流功能。目标是设计一个系统,教师可以在其中传输实时视频课程,学生可以在线参加这些课程。

我们从高层架构开始,讨论视频服务器、数据库和 API 等主要组件。我解释了我处理大量用户并确保流畅的视频流体验的方法。他不断询问可扩展性、可靠性和延迟问题,这对于实时视频平台至关重要。

当我们讨论完高层设计后,他将话题转向低层细节。这是讨论变得更加技术性的地方。我们探索了各种方法来优化系统、处理边缘情况,并确保即使在最坏的情况下也能为用户提供无缝体验。我必须迅速思考,为不同的问题提供解决方案和替代方案,包括处理用户流量峰值并确保最短的停机时间。

面试官不断地呈现不同的场景——如果视频服务器宕机了怎么办?您将如何处理网络拥塞?如何确保不同地理区域的学生的低延迟?每个场景都需要详细的答案,我发现自己完全沉浸在讨论可能性和设计模式中。

整个采访持续了大约1.5个小时,结束时我已经筋疲力尽了。这是一次精神上的疲惫,但也是我经历过的最有洞察力的采访之一。我们探索了各种架构挑战,感觉更像是一次协作解决问题的会议,而不是传统的采访。

所以我早上 9 点去了亚马逊办公室,晚上 5 点出来,我已经完成了所有轮次,招聘人员说他正在推进管理轮次, 尚未安排。

My Amazon SDE Interview Experience – May 4

无论如何忘了告诉你一件事,请在参加面试之前了解亚马逊的所有原则,他们每轮都会至少问2个问题。所以请也准备一下

版本声明 本文转载于:https://dev.to/naweli_verma/my-amazon-sde-interview-experience-may-2024-3nf6?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • CSS可以根据任何属性值来定位HTML元素吗?
    CSS可以根据任何属性值来定位HTML元素吗?
    靶向html元素,在CSS 中使用任何属性值,在CSS中,可以基于特定属性(如下所示)基于特定属性的基于特定属性的emants目标元素: 字体家庭:康斯拉斯(Consolas); } 但是,出现一个常见的问题:元素可以根据任何属性值而定位吗?本文探讨了此主题。的目标元素有任何任何属性值,属...
    编程 发布于2025-07-05
  • 为什么不使用CSS`content'属性显示图像?
    为什么不使用CSS`content'属性显示图像?
    在Firefox extemers属性为某些图像很大,&& && && &&华倍华倍[华氏华倍华氏度]很少见,却是某些浏览属性很少,尤其是特定于Firefox的某些浏览器未能在使用内容属性引用时未能显示图像的情况。这可以在提供的CSS类中看到:。googlepic { 内容:url(&#...
    编程 发布于2025-07-05
  • 如何同步迭代并从PHP中的两个等级阵列打印值?
    如何同步迭代并从PHP中的两个等级阵列打印值?
    同步的迭代和打印值来自相同大小的两个数组使用两个数组相等大小的selectbox时,一个包含country代码的数组,另一个包含乡村代码,另一个包含其相应名称的数组,可能会因不当提供了exply for for for the uncore for the forsion for for ytry...
    编程 发布于2025-07-05
  • 左连接为何在右表WHERE子句过滤时像内连接?
    左连接为何在右表WHERE子句过滤时像内连接?
    左JOIN CONUNDRUM:WITCHING小时在数据库Wizard的领域中变成内在的加入很有趣,当将c.foobar条件放置在上面的Where子句中时,据说左联接似乎会转换为内部连接。仅当满足A.Foo和C.Foobar标准时,才会返回结果。为什么要变形?关键在于其中的子句。当左联接的右侧值...
    编程 发布于2025-07-05
  • Python高效去除文本中HTML标签方法
    Python高效去除文本中HTML标签方法
    在Python中剥离HTML标签,以获取原始的文本表示Achieving Text-Only Extraction with Python's MLStripperTo streamline the stripping process, the Python standard librar...
    编程 发布于2025-07-05
  • 如何将来自三个MySQL表的数据组合到新表中?
    如何将来自三个MySQL表的数据组合到新表中?
    mysql:从三个表和列的新表创建新表 答案:为了实现这一目标,您可以利用一个3-way Join。 选择p。*,d.content作为年龄 来自人为p的人 加入d.person_id = p.id上的d的详细信息 加入T.Id = d.detail_id的分类法 其中t.taxonomy =...
    编程 发布于2025-07-05
  • 如何简化PHP中的JSON解析以获取多维阵列?
    如何简化PHP中的JSON解析以获取多维阵列?
    php 试图在PHP中解析JSON数据的JSON可能具有挑战性,尤其是在处理多维数组时。要简化过程,建议将JSON作为数组而不是对象解析。执行此操作,将JSON_DECODE函数与第二个参数设置为true:[&&&&& && &&&&& json = JSON = JSON_DECODE($ j...
    编程 发布于2025-07-05
  • 找到最大计数时,如何解决mySQL中的“组函数\”错误的“无效使用”?
    找到最大计数时,如何解决mySQL中的“组函数\”错误的“无效使用”?
    如何在mySQL中使用mySql 检索最大计数,您可能会遇到一个问题,您可能会在尝试使用以下命令:理解错误正确找到由名称列分组的值的最大计数,请使用以下修改后的查询: 计数(*)为c 来自EMP1 按名称组 c desc订购 限制1 查询说明 select语句提取名称列和每个名称...
    编程 发布于2025-07-05
  • 您可以使用CSS在Chrome和Firefox中染色控制台输出吗?
    您可以使用CSS在Chrome和Firefox中染色控制台输出吗?
    在javascript console 中显示颜色是可以使用chrome的控制台显示彩色文本,例如红色的redors,for for for for错误消息?回答是的,可以使用CSS将颜色添加到Chrome和Firefox中的控制台显示的消息(版本31或更高版本)中。要实现这一目标,请使用以下模...
    编程 发布于2025-07-05
  • 如何在Java字符串中有效替换多个子字符串?
    如何在Java字符串中有效替换多个子字符串?
    在java 中有效地替换多个substring,需要在需要替换一个字符串中的多个substring的情况下,很容易求助于重复应用字符串的刺激力量。 However, this can be inefficient for large strings or when working with nu...
    编程 发布于2025-07-05
  • 如何在无序集合中为元组实现通用哈希功能?
    如何在无序集合中为元组实现通用哈希功能?
    在未订购的集合中的元素要纠正此问题,一种方法是手动为特定元组类型定义哈希函数,例如: template template template 。 struct std :: hash { size_t operator()(std :: tuple const&tuple)const {...
    编程 发布于2025-07-05
  • Java中Lambda表达式为何需要“final”或“有效final”变量?
    Java中Lambda表达式为何需要“final”或“有效final”变量?
    Lambda Expressions Require "Final" or "Effectively Final" VariablesThe error message "Variable used in lambda expression shou...
    编程 发布于2025-07-05
  • Python中嵌套函数与闭包的区别是什么
    Python中嵌套函数与闭包的区别是什么
    嵌套函数与python 在python中的嵌套函数不被考虑闭合,因为它们不符合以下要求:不访问局部范围scliables to incling scliables在封装范围外执行范围的局部范围。 make_printer(msg): DEF打印机(): 打印(味精) ...
    编程 发布于2025-07-05
  • 如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在“ dd/mm/yyyy hh:mm:mm:ss.ss”格式“ gormat 解决方案: args)抛出异常{ 日历cal = calendar.getInstance(); SimpleDateFormat SDF =新的SimpleDateFormat(“...
    编程 发布于2025-07-05
  • 如何使用Python的请求和假用户代理绕过网站块?
    如何使用Python的请求和假用户代理绕过网站块?
    如何使用Python的请求模拟浏览器行为,以及伪造的用户代理提供了一个用户 - 代理标头一个有效方法是提供有效的用户式header,以提供有效的用户 - 设置,该标题可以通过browser和Acterner Systems the equestersystermery和操作系统。通过模仿像Chro...
    编程 发布于2025-07-05

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3