」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 我的 Amazon SDE 面試經驗 – 5 月 4 日

我的 Amazon SDE 面試經驗 – 5 月 4 日

發佈於2024-11-08
瀏覽:579

我的 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]刪除
最新教學 更多>
  • React Hooks:詳細說明
    React Hooks:詳細說明
    React Hooks 是允許您從功能元件「掛鉤」React 狀態和生命週期功能的函數。 Hooks 在 React 16.8 中引入,讓您無需編寫類別元件即可使用狀態和其他 React 功能。 我們來分解Hooks背後的核心概念: 1. 為什麼要使用 React Hooks? 在...
    程式設計 發佈於2024-11-08
  • 了解 JavaScript 產生器:強大的程式碼流控制工具
    了解 JavaScript 產生器:強大的程式碼流控制工具
    生成器是 JavaScript 中最强大的功能之一,它允许我们编写可以根据需要暂停和恢复的代码。与一次执行所有代码的常规函数​​不同,生成器使用延迟执行,增量返回值,从而更容易处理数据序列、迭代或长时间运行的进程。 发电机如何工作? 在JavaScript中,生成器是使用functi...
    程式設計 發佈於2024-11-08
  • 如何在 groupby 作業期間維護 Pandas DataFrame 中的其他欄位?
    如何在 groupby 作業期間維護 Pandas DataFrame 中的其他欄位?
    在Groupby 操作期間維護其他列對pandas 資料框執行groupby 操作時,通常需要保留不屬於的列參與分組或聚合過程。預設情況下,操作完成後將刪除這些其他欄位。如果保留的列包含有價值的信息,這可能會出現問題。 考慮以下資料框: item diff otherstuff ...
    程式設計 發佈於2024-11-08
  • 根據您文章的內容,以下是一些適合問答格式的標題選項:

選項 1(直接):

* 如何從 OpentelemetryContext Pr 中的字串追蹤 ID 建構跨度
    根據您文章的內容,以下是一些適合問答格式的標題選項: 選項 1(直接): * 如何從 OpentelemetryContext Pr 中的字串追蹤 ID 建構跨度
    在 Opentelemetry 中根據追蹤 ID 建構 Span上下文傳播通常用於檢索父追蹤 ID 並建立子 Span。但是,在使用標頭進行訊息交換的情況下,需要替代方法。 要從字串追蹤ID 建立範圍,可以依照下列步驟操作:建構一個解析Trace 和Span ID 的函式:func construc...
    程式設計 發佈於2024-11-08
  • 如何將 JSON 字串轉換為 Python 字典?
    如何將 JSON 字串轉換為 Python 字典?
    如何將JSON 字串轉換為Python 字典JSON(JavaScript 物件表示法)是一種流行的資料格式,通常以於表示複雜的資料結構。在 Python 中,您可以使用 json 模組來處理 JSON 資料。 一個常見的任務是將 JSON 字串轉換為 Python 字典。這允許您以鍵值對的形式存取...
    程式設計 發佈於2024-11-08
  • 治療高血壓的整體阿育吠陀方法
    治療高血壓的整體阿育吠陀方法
    管理高血壓的整體阿育吠陀方法 阿育吠陀治療高血壓提供了一種自然和整體的方法來管理這一常見的健康問題。在阿育吠陀中,高血壓通常與能量的不平衡有關,特別是皮塔和瓦塔。這種古老的醫學體系旨在透過個人化治療和生活方式改變來恢復平衡並促進整體健康。 治療高血壓的阿育吠陀療法包括使用特定草藥,如阿朱那、南非醉...
    程式設計 發佈於2024-11-08
  • 如何設定 Y 軸範圍以豐富多個子圖佈局中的視覺化?
    如何設定 Y 軸範圍以豐富多個子圖佈局中的視覺化?
    設定子圖軸範圍背景在視覺化中處理多個子圖時,有必要控制每個子圖的軸範圍以確保正確的數據表示。本問題探討如何在雙子圖佈局中設定第二個子圖的 y 軸範圍。當 FFT 圖出現異常尖峰,導致所需資料不可見時,就會出現此問題。 解決方案要解決此問題,請在繪圖後使用 pylab.ylim([bottom, to...
    程式設計 發佈於2024-11-08
  • CSS 中的盒子模型:製作精確版面的終極指南
    CSS 中的盒子模型:製作精確版面的終極指南
    Web設計概念中,盒子模型(Box Model)是CSS中非常關注佈局設計的基礎知識領域。盒子模型解釋了頁面上元素的放置和定位方式,這會影響水平度和整體連貫性。 除了概述盒子模型的背景和邊框之外,本指南還指導您完成填充、邊距和盒子大小調整,以便您可以完全控制佈局。要開始專業級的 Web 專案設計,...
    程式設計 發佈於2024-11-08
  • 什麼是語法和語義
    什麼是語法和語義
    如果您正在学习一门语言,您可能听说过“语法”这个词并且一直在处理它。 (该死的语法错误)。 几天前的晚上,我在想,我从来没有认真遵循过编程范式和技术,今天我开始从我经常听到的最小主题中学习(即使我已经记住了)。我创建了这个存储库。我采取的学习路径很有特色(在 LEARNING_LIST.md 文件中...
    程式設計 發佈於2024-11-08
  • 如何在不切換焦點的情況下在背景開啟新分頁?
    如何在不切換焦點的情況下在背景開啟新分頁?
    在後台打開新選項卡而不進行焦點切換在這個問題中,用戶尋求在單獨的選項卡中打開新選項卡不會導致任何焦點轉移到新選項卡。他們示範了使用 open() 和 focus() 方法的嘗試,但在傳回 Chrome 中的目前分頁之前遇到了新分頁的短暫閃爍。 但是,提供的答案提供了使用事件的替代解決方案自訂事件調度...
    程式設計 發佈於2024-11-08
  • 如何使用自訂語句來擴展 Python 語法?
    如何使用自訂語句來擴展 Python 語法?
    為 Python 語法新增語句Python 的語法允許語句定義,例如 print、raise 和 with。雖然這些語句提供了廣泛的功能,但可以擴展此語法以適應自訂語句。 建立自訂語句涉及兩個主要步驟建立自訂語句:修改語法:您需要更新Python 的語法以包含新語句的定義。這涉及到修改 Gramma...
    程式設計 發佈於2024-11-08
  • 使用 PHP 中的服務層模式實現簡潔且可擴展的程式碼
    使用 PHP 中的服務層模式實現簡潔且可擴展的程式碼
    服務層模式是一種流行的設計方法,用於處理 PHP 應用程式中的業務邏輯。透過將應用程式邏輯與框架分離,我們創建了一個可擴展、可測試且可維護的程式碼庫。在本文中,我們將透過實際範例介紹服務層模式的基礎知識、其優點以及如何在 PHP 應用程式中實現它。 什麼是服務層模式? 服務層模式是...
    程式設計 發佈於2024-11-08
  • 您能否在 C++ 中實現高效的二分搜尋演算法,將迭代器返回搜尋結果?
    您能否在 C++ 中實現高效的二分搜尋演算法,將迭代器返回搜尋結果?
    在C 中搜尋高效的二分搜尋演算法程式設計師經常尋求實現高效的二分搜尋演算法,以提供對數時間複雜度的優勢。一個常見的要求是演算法傳回一個指向搜尋結果的迭代器,而不是一個指示其存在的簡單布林值。 C 標準庫在 標頭中提供了 std::binary_search,但它只傳回一個布林值。正如提問者所指出的...
    程式設計 發佈於2024-11-08
  • 使用 Javascript 的心形圖案程式碼
    使用 Javascript 的心形圖案程式碼
    程式碼 let heart = ""; let size = 6; // Loop to print upper part of the heart for (let i = size / 2; i <= size; i = 2) { for (let j = 1;...
    程式設計 發佈於2024-11-08
  • 如何將 PHP 資料庫結果數組轉換為 JSON?
    如何將 PHP 資料庫結果數組轉換為 JSON?
    將 PHP 資料庫結果陣列轉換為 JSON您想要在 PHP 中將資料庫查詢的結果陣列轉換為 JSON 格式。以下程式碼從資料庫中檢索一行:$row = mysql_fetch_array($result);要將$row 陣列轉換為JSON 格式以便與jQuery 外掛一起使用,您需要可以利用json...
    程式設計 發佈於2024-11-08

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3