📜  SDE 1 的亚马逊面试经验 |校外 - 2019

📅  最后修改于: 2022-05-13 01:58:16.341000             🧑  作者: Mango

SDE 1 的亚马逊面试经验 |校外 - 2019

一位招聘人员通过 INSTAHYRE(求职平台)联系了我,我在很多平台上都有我的个人资料,但 Instahyre 似乎是最真实的。所以我收到了亚马逊 HR 的邮件,他打电话给我在亚马逊班加罗尔进行现场面试。

面试当天大约有 60-70 名候选人在场。共4轮,每轮为淘汰赛。面试轮次后,Skype 电话上还有 1 轮。

Round 1(Written Round):亚马逊一般会进行在线评估,但在我的情况下,他们在场地进行了与在线评估相同的形式的书面轮次 - 60分钟内的2个编码问题。多选题不存在。

  • 找到所有零和的三元组
  • 将二叉树中的每个节点替换为其前导和后继的总和

问题很简单,但他们的主要关注点是时间和空间的复杂性。这一轮结束后,剩下大约50名学生。

第二轮(面对面面试):这一轮只关注我的 DS 和 ALGO 技能。面试官非常友好。他给了我 2 个问题,让我先讨论方法,然后针对这些问题实现生产就绪代码。这一轮的主要焦点是:

  1. 优化解决方案以实现最佳的复杂性。
  2. 编写生产就绪代码,您的实现将被测试,如果在系统上测试,您必须编写一个在没有任何编译错误或运行时错误的情况下运行的代码,即使是一个小错误也可能导致您的拒绝。

提出的问题:

  1. 这是基于递归和记忆的。这花了很多时间,我试图解决这个问题,但是因为我第一次看到这个问题,我有点害怕,面试官很友好,他帮助了我一些提示,最终我们达成了解决方案: https://www.hackerrank.com/challenges/grid-walking/problem
  2. 这是哈希图和基于树的问题 https://www.geeksforgeeks.org/construct-a-binary-tree-from-parent-array-representation/:

这一轮很顺利,我获得了下一轮的参赛资格。

第三轮(面对面面试):这一轮也集中在DS,ALGO。面试官问了我项目的基本细节,然后他问了2个问题。

  1. 这是一个字符串问题,问题中等难度,我能够在更短的时间内解决这个问题。 https://www.geeksforgeeks.org/find-the-smallest-window-in-a-string- contains-all-characters-of-another-string/
  2. 这个问题是一个标准的 DP 问题——如果只允许 k 次交易,则以最大利润买卖股票。他从基本版本开始,然后转向标准版本。 https://www.geeksforgeeks.org/maximum-profit-by-buying-and- sell-a-share-at-most-k-times/。

这一轮我通关了。

第 4 轮(面对面面试):这一轮更侧重于 CORE 知识(仅 OS 和 DBMS,没有询问网络问题。)。他非常详细地讨论了我的项目,准备好回答你简历中提到的项目的每一个细节。在此之后,由于我是 C++ 人,他问了我一些关于 C++ 的问题,例如:

  1. C++ 是如何从 C++ 发展到 C++17 的?
  2. 什么是钻石问题?
  3. 虚拟关键字如何工作?
  4. 关于 C++ 中的多线程的问题。
  5. C++ 编译器的详细工作原理。

然后他转向核心主题问题,即操作系统和 DBMS,他给了我一些场景,并问我操作系统会如何表现,它将如何处理所有这些,信号量将如何提供帮助,什么是虚拟内存,页面替换算法如何工作。在 DBMS 中,他详细询问了我关于索引的问题,索引在 DBMS 中的实际工作原理。

由于我的简历提到了Javascript和NoSQL,他问我NoSql和SQL数据库的区别,什么时候用什么。

我通过了这一轮,然后我被告知我将在 Skype 上再进行一轮面试,那将是技术面试。

第四轮(在线电话):面试从他的介绍开始,然后是我的介绍。然后他问了关于我的学术项目的问题。然后他问了一些行为问题,比如为什么选择亚马逊?,是什么激励了你?,你自己学到了什么?在这些问题之后,他问了我一个简单的编码问题。在讨论了这种方法之后,他让我为此编写生产就绪的代码。

  • 铁路/汽车站所需的最低月台数量

第二天,我接到人力资源部的电话,祝贺我在亚马逊获得了 SDE 1 的报价。

一些技巧:

  1. 在面试前一个月,通过在纸上实施编码问题开始练习编码问题,因为在面试期间,他们期望有一个可用于生产的代码,这意味着如果他们在他们的系统中编写相同的代码,它将运行而不会出现任何编译错误。
  2. 改善你的沟通,并不意味着提高英语,只要确保面试官在面试过程中了解你的思维过程,即使你无法解决问题,这也有助于他做出正确的决定。
  3. 浏览你的简历,你应该能够回答关于简历中提到的任何问题的每一个问题。
  4. 用你在简历中提到的每一项技能写下你的知识水平,比如如果你在 C++ 方面足够好,提到它是 PROFICIENT 技能。
  5. 如果您看到一个新问题,请不要惊慌。试着像和朋友坐在一起一样解决这个问题,这是面试的一部分。
  6. 在面试过程中始终以面试官的身份思考,例如,如果您正在面试一个人和他处于相同的环境中,您对某人的期望是什么。
  7. 让面试官注意到你的实力是你的责任。

祝一切顺利!!编码快乐!!