亚马逊的SDE面试经验

1,182 阅读5分钟

亚马逊的SDE面试经验

  • 最后更新 : 2021年8月9日

第一轮(在线评估)。 这一轮通常包括两个编码问题,你必须写出代码,并在一个单独的窗口给出适当的解释。这一轮的时间约为1小时。

问的问题有

  1. 对一个质数和非质数的订单列表进行排序(leetcode.com/discuss/int…
  2. 优化内存使用 (leetcode.com/discuss/int…)

在这之后,你将不得不做一些行为MCQ类型的问题。

在接下来的所有回合中,我被问到了行为和编码问题,因此我将尝试包括这两个问题。

第二轮: 这一轮从我的介绍和当前项目开始。在这之后,面试官询问了我在做一些意外的复杂工作时的情况,以及我是如何处理这种情况的。

编码问题。

  1. 给定一棵二叉树,计算所有左边的叶子的总和
  2. 实现LRU Cache。面试官故意让这个问题模糊不清,只引用了 "实现LRU缓存",因此我问了很多澄清的问题,并慢慢得出了一个使用双链接列表和哈希图的最优解决方案。

第三轮: 这一轮也是从我的介绍和目前的工作开始。

编码问题。

  1. 评估一个以字符串形式给出的算术表达式,该表达式只包含数字和+, -, *, /四种运算。

    Input: "3*2+5"
    Output: 11  
    

    我决定使用两个堆栈来解决这个问题,并将所有的算术运算符和数字存储在不同的堆栈中,规则是。

    "不能将低优先级的运算符推到高优先级的运算符上"

    "当一个运算符被弹出时,两个数字也会从另一个堆栈中被弹出"

    所以我的算法基本上是这样的。

    • 启动两个堆栈作为operatorStackoperandStack

    • 对表达式进行扫描

    • 如果发现一个数字,就把它推到操作数栈中

    • 如果找到一个运算符,并且运算符栈的顶部比当前运算符的优先级低,则将其推入运算符栈。

    • 如果找到一个运算符,并且operatorStack的顶部比当前运算符的优先级高,那么继续从operatorStack中弹出运算符,直到顶部比当前运算符的优先级低或相等。每弹出一个运算符,你就必须从operatorStack中弹出两个数字,并在这两个数字上应用弹出的运算符,然后将结果推回到operandStack上,像这样。

      op = operatorStack.pop()
      number2 = operandStack.pop()
      number1 = operandStack.pop()
      operandStack.push(number1 op number2)
      

    注意这里第二个数字是先被弹出的。

    • 在对表达式进行扫描后,用上述同样的规则从operatorStack中弹出其余的运算符。
    • 你的最终答案将是opperandStack的顶端。

    还有一种简单的方法,将英缀表达式转换为后缀,然后用一个堆栈简单地评估它。

  2. 计算到达一个数组末端所需的最小跳转次数

    对于这个问题,我给出了两种方法,一种是O(n^2),另一种是O(n)
    由于时间所剩无几(大约15分钟),我在解释O(n)的方法时有些困难,但面试官被说服了,要求我把它编码出来。

之后又问了一些与计算机科学有关的问题,比如。

  1. 你使用过什么类型的数据库
  2. SQL和NoSql数据库的区别是什么,对哪种类型的查询都进行了优化?
  3. 线程和进程之间的区别
  4. 为什么线程中的通信比进程快(因为线程共享相同的内存空间)?
  5. 什么是锁和信号灯

第四轮: 在这一轮中,面试官问了大约30分钟的行为问题,他真的希望所有的问题都能得到详细和深入的回答。我引用了我能记住的问题。

  • 你曾经做过的一个复杂的功能,你面临的挑战是什么,你是如何处理这些问题的?
  • 有一次,你面临紧密而严格的最后期限,你是如何满足它们的?
  • 你是如何学习你所从事的技术的,你采取了哪些步骤?
  • 你是如何提高自己的? 等等
  • 在接下来的30分钟里,他问了这个编码问题。从一个数组中找出一对总和最接近于零的数字。为此,我使用了排序和双指针方法。

第五轮: 在这一轮中,又有大约30分钟的时间被行为问题所占用,与上一轮类似,他也希望得到详细而深刻的答案。

编码问题。

  1. 两个链表的交集。我给出了两种方法:第一种:使用两个for循环,第二种:使用hashmap。
  2. 对称二叉树:我是通过对根的两个孩子做并行的dfs,并比较每一级的节点来解决的。

一些提示。

  • 如果第一个问题很简单,不要花太多时间去解释,因为通常面试也会问第二个问题,因此留给你解释和编码第二个问题的时间就会很少。
  • 在所有的行为问题上都要诚实,因为他们会对你的答案提出很多反问,如果你编造了一个问题,肯定会在某个时候崩塌。

读者请注意!现在不要停止学习。用本手册掌握所有重要的DSA概念。 DSA自学课程以适合学生的价格掌握所有重要的DSA概念,并成为行业的准备者。要完成从学习语言到DS Algo以及更多的准备工作,请参考 完整的面试准备课程.如 果你准备好了,请用以下方法测试你的技能 TCS, 维普罗, 亚马逊.**谷歌**和 微软测试系列。

我的个人笔记 箭头_下降_上升

保存