📜  亚马逊 6 个月 SDE 实习面试经验

📅  最后修改于: 2021-11-18 01:45:39             🧑  作者: Mango

第 1 轮:在线评估由 4 个部分组成,在 AMCAT 平台上进行。

  1. 代码调试: 7 题 C/C++/ Java (20 分钟)
  2. 编码: 2 个问题(70 分钟)
  3. 工作方式评估: (20 分钟)
  4. 推理能力: 24 题(35 分钟)

在编码部分,问题是,

  1. 在按行和按列排序的矩阵中搜索。
  2. 使用随机指针复制链表。

大约 16 名学生通过了 185 名考试。

第二轮(F2F技术面试) :这是在Amazon Chime(一个视频通话平台)上进行的,面试持续了1个小时。

  1. 首先,面试官要求自我介绍,然后他分享了他的角色和他正在从事的项目。这是一个 2-3 分钟的正式介绍,直接进入编码问题。
  2. 您的任务是开发一个简单的搜索引擎,该引擎还负责纠正拼写错误并在字典中显示与给定工作匹配的单词。 (还规定用户最多只能犯一个拼写错误)
    Input: D = ["abc", "bcd", "ad", "ab"]
    User:  1. "bbc"
           Return ["abc"]
           2. "bb"
           Return ["abc", "ab", "ad"]
  3. 他让我先解释一下这个方法。
  4. 首先,我分享了一个蛮力方法并给出了时间和空间的复杂性。我被要求优化。
  5. 我分享了一个小优化的方法。面试官期待最优化的解决方案。
  6. 最后告诉了trie数据结构的解决方案,然后就被要求编码了。
  7. 我开始在实时编码环境中编写解决方案,并与面试官持续交谈,讨论各种边缘情况和可能性。他帮了我很多,非常友好。
  8. 我正在链接一篇 GFG 文章以供参考,但需要修改解决方案:Trie-Insertion-and-search。
  9. 然后我们对代码进行了试运行,发现了一个错误并修复了它,还讨论了复杂性。
  10. 这花了这么多时间,面试官对代码很满意,问我有什么问题。
  11. 我只被问了一个问题,但我的一些朋友总共被问了 2-3 个问题。

第三轮(F2F技术面试):这也是在Amazon Chime(视频通话平台)上进行的,面试持续了1个小时。这一轮以面试官和我的简短介绍开始(大约 15 分钟后,另一位面试官加入了进来)。他直接走向编码问题。

  1. 小行星碰撞( https://leetcode.com/problems/asteroid-collision/ )
    我们得到一个小行星数组,这些整数代表一行中的小行星。
    对于每颗小行星,绝对值代表它的大小,符号代表它的方向(正表示右,负表示左)。每颗小行星以相同的速度移动。
    找出所有碰撞后小行星的状态。如果两颗小行星相遇,较小的一颗就会爆炸。如果两者大小相同,则两者都会爆炸。两颗同向运动的小行星永远不会相遇。
    • 开始提出问题以澄清对约束的疑虑。
    • 以通常的方式,我首先分享了一种蛮力方法,并给出了时间和空间的复杂性。我被要求优化。
    • 我给出了一个最佳堆栈解决方案,并被要求对其进行编码。
    • 我错过了后来指出的边缘情况,我更正了代码。
    • 试运行代码并讨论了复杂性。
  2. 排序数组中的单个元素(https://leetcode.com/problems/single-element-in-a-sorted-array/)
    给定一个仅由整数组成的排序数组,其中每个元素都恰好出现两次,除了一个元素只出现一次。找到这个只出现一次的元素。
    • 我分享了蛮力方法并被要求进行优化。
    • 我给出了另外两种不是最优化的方法。
    • 后来我进行了二进制搜索修改,但无法完成代码并且陷入困惑无法弄清楚出了什么问题。
    • 过了一会儿,面试官让我换一个问题。
  3. 从根到叶路径形成的所有数字的总和
    给定一个二叉树,其中每个节点值都是一个数字 (0 – 9)。找出从根到叶路径形成的所有数字的总和。
    例如,考虑以下二叉树。

    6
         /  \
        3    5
      /   \   \
     2     5   4  
          /  \
         7    4
    • 我分享了一个解决方案,面试官让我解释所问的问题。
    • 之前的代码没做完很紧张,误解了问题,给出了方法。
    • 后来我问了一些问题来澄清我的疑惑。
      There are 4 leaves, hence 4 roots to leaf paths:
      Path                    Number
      6->3->2                   632
      6->3->5->7               6357
      6->3->5->4               6354
      6->5>4                    654
      Answer = 632 + 6357 + 6354 + 654 = 13997 
    • 我分享了一种方法并对其进行了编码,其中存在错误。
    • 时间到了,面试官让我停下来问我有什么问题。

结果:很遗憾,我没有通过面试。 16 名学生中只有 2 名被选中。

提示:

  1. 在跳入解决方案之前,请仔细聆听并正确理解问题,并避免对问题进行任何假设。提出疑问并澄清问题的每个细节。
  2. 在面试过程中保持冷静、积极和专注。 (面试前不要和同龄人说话)
  3. 清楚你的方法并尝试考虑所有可能的边缘/角落情况。
  4. 尝试熟悉方法中每个部分的时间和空间复杂性。
  5. 自信点。如果你被困在某个地方,面试官通常会帮助你找到正确的道路。只是继续大声思考。
  6. 面试有轻微的运气因素和对白天的依赖。只要有信心,以积极的态度解决所有问题。
  7. 练习来自 GeeksforGeeks 和 LeetCode 的问题并阅读最近的面试经历。
  8. 不要因为拒绝而失去动力。尽你最大的努力,每天进步,这样你就不会从准备方面后悔任何事情。

有些采访只是没有一个圆满的结局。