📜  SDE-1 的亚马逊面试经验(1 年经验)

📅  最后修改于: 2021-09-23 05:20:01             🧑  作者: Mango

我在 COVID 期间得到了这个机会,因此所有的面试轮次都是在 Amazon Chime(视频通话)上进行的,我必须在 LiveCode(一个共享 IDE)上编写代码,我和面试官都可以看到它。

第一轮(在线测试)

  • 有一个包含 0,1 和 9 的矩阵。您需要从左上角开始到达包含“9”的单元格。只有一个这样的单元格包含 9。您可以移动到包含“0”的单元格。包含“1”的单元格是障碍物,您可以使用一次跳跃来越过障碍物。我们需要找到从矩阵左上角到达包含“9”的单元格所需的最少步数。 (我应用了 BFS,它对我有用)
  • 有一个亚马逊订单列表,每个订单都由一个字符串表示。每个字符串的格式为“XXX YYY ZZZ”。我们需要根据一些优先条件对这些进行排序。
    解决方法:我使用了C++ STL的sort函数,写了一个自定义的比较器函数)

第二轮:

  • 给定一个输入字符串和 q 个需要对其执行的操作。共有三种类型的操作。
    1 – 反转字符串
    2 1 a – 在当前字符串的前面插入输入字符(此处为 ‘a’)
    2 2 a – 在当前字符串的后面插入输入字符(此处为 ‘a’)

    解决方案:首先我给出了使用双向链表的方法,但他想使用相同的字符串变量来执行操作而不是制作DLL。由于在字符串的前面插入是一个代价高昂的操作,所以我们可以将前面的插入保留在一个向量中,当所有操作完成后,我们可以从这些字符创建一个字符串,并在当前字符串中添加一个前缀后面的所有反向操作和插入都已经完成了。

    我们还需要维护一个基于反向操作切换的“标志”(只要有类型“1”(反向)的操作,就切换标志的值)

    * 情况一:flag == false
    – 前端操作:需要添加到front_vector
    – 回插入:在原始字符串的后面插入字符(连接)

    * 情况 2:标志 == 真
    – 前部操作:在原字符串的后部插入字符(串联)
    – 后插入:需要添加到 front_vector

    此外,在生成最终字符串之前,您需要检查标志是否为 true 表示字符串已反转,因此基于此您需要生成输出字符串(我错过了这种情况,当面试官指出我合并了这一点时)。

    试运行示例:

    abc -> 输入字符串(比如说’s’)
    5 -> 操作次数

    1 -> s = abc (front_vector {}, flag= true)
    2 2 a -> s = abc (front_vector {a}, flag= true)
    2 1 b -> s = abcb (front_vector {a}, flag= true)
    1 -> s = abcb (front_vector {a}, flag= false)
    2 1 x -> s = abcb (front_vector {x,a}, flag= false)

    前插入字符串:xa
    输出(最终字符串):xaabcb

  • https://www.geeksforgeeks.org/find-the-farthest-smaller-number-in-the-right-side/

这一轮进行了大约 1.25 小时,我解决了这两个问题。

第三轮:

  • 合并两个排序的链表 (https://www.geeksforgeeks.org/merge-two-sorted-linked-lists/)
  • 截留雨水问题 (https://www.geeksforgeeks.org/trapping-rain-water/)

这一轮进行了大约 1 个小时,我解决了这两个问题。

第四轮(招聘经理):

  • 从介绍开始,然后继续与我现在的雇主详细讨论该项目,其中包括
    • 我的角色是什么?
    • 我处理了哪些组件?
    • 组件是如何测试的?
    • 用户群有多大?
    • 错误是如何报告和处理的
  • 行为问题:
    • 告诉我你在紧迫的期限内工作的情况
    • 告诉我你做出决定的情况
    • 告诉我你为客户的要求工作并在截止日期内交付的情况。

这一轮持续了大约 1.25 小时,对于行为问题,您需要遵循 STAR(S – 情况,T – 任务,A – 行动,R – 结果)方法。

第五轮(高级开发经理):

  • 从介绍开始,与现任雇主简要讨论该项目
  • 字谜(https://www.geeksforgeeks.org/check-whether-two-strings-are-anagram-of-each-other/)。我很快解决了这个问题,但是很少有可以处理的特殊情况,这将降低它们的复杂性。当面试官指出案例时,我将更改纳入代码中,他很满意。
  • 行为问题:
    • 告诉我你在紧迫的期限内工作的情况
    • 告诉我你走出舒适区去学习和交付一些东西的情况。

这一轮进行了大约 45 分钟。

结论:精选🙂

提示:

  • 对于编码面试,你首先需要口头解释你的方法,然后如果面试官对运行时的复杂性感到满意,他会要求你用正确的语法编写代码。您不必接受输入,只需将输入作为函数参数并在函数编写完整的逻辑即可)。练习解释你的方法。
  • 对于行为问题,请找到问题集 https://leetcode.com/discuss/interview-question/437631/Amazon-Leadership-Principle-(Behavioral)-Questions。这是一个很好的简单博客,解释了亚马逊的行为面试过程(https://interviewgenie.com/blog-1/interviewing-at-amazon-behavioral-interview-questions)
    • 列出你做过的任务
    • 对于每个问题,尝试将这些任务与情况相适应
    • 对于每个问题,至少准备两项任务。