📜  SDE-1 的亚马逊面试体验 | 6个月实习(校内)

📅  最后修改于: 2021-11-10 06:57:02             🧑  作者: Mango

线上轮次:本轮250名候选人

在线回合包括 4 个部分:

  • 代码调试回合(20 分钟 – 7 个问题)
  • 编码部分(70 分钟 – 2 个问题)
  • 工作风格评估(25 分钟)
  • 能力和逻辑推理(35 分钟 – 24 个 MCQ)

编码问题:

  1. 在按行和按列排序的矩阵中搜索
  2. 克隆带有下一个和随机指针的链表

不同的集合有不同的编码问题,来自一些 5-6 个问题。所有部分都相当简单,但需要快一点才能按时完成所有问题。

39名候选人入围面试。面试过程(通过 Amazon Chime 应用程序组织 – 在线轮后 5 天)由两轮组成。

第 1 轮(F2F 采访 35-40 分钟):正式问候和介绍。告诉我你最喜欢的项目(2-3 分钟)。让我们跳到编码问题(不讨论任何其他内容,也没有关于项目的反问)

  1. 给定一个随机数数组,将所有零移动到数组的末尾。
    • 例如,如果给定的数组是 {4, -2, 0, 1, 0, 0, 3, -7, 0} 那么输出应该是 {4, -2, 1, 3, -7, 0, 0 , 0, 0}。所有其他元素的顺序应该相同。
    • 我已经讨论了 3 种方法,然后告诉我写下 O(n) 时间复杂度和 O(1) 空间复杂度的优化解决方案。
    • 我写下完整的代码,然后面试官检查了所有的边缘条件,还告诉我为给定的输入试运行代码。
    • https://www.geeksforgeeks.org/move-zeroes-end-array/
  2. 对给定的链表进行排序并返回结果链表的头指针。
    • 我先讨论了这个方法,然后让我写下代码(一个唯一的函数,它将链表的头部作为输入并返回排序的链表的头部指针)。
    • 我使用 Merge-Sort 写下代码,面试官检查了所有极端情况,并告诉我为给定的输入试运行代码。还询问了代码的时间和空间复杂度。
    • https://www.geeksforgeeks.org/merge-sort-for-linked-list/
  • 问我是否有任何问题。

24名候选人入围第二轮。

第 2 轮(F2F 采访 60-75 分钟):正式问候和介绍。直接跳到编码问题(没有其他 CS 基础问题,也没有关于任何项目或简历的问题)

  1. 给定一个已排序的外星语言字典(单词数组),找出该语言中字符的顺序。
    • 我事先没有见过这个问题,而且我也不擅长解决图形问题。
    • 我花了 4-5 分钟才完全理解这个问题。面试官还给了2-3个例子,让我更好地理解这个问题。
    • 我考虑了不同的方法,但我没有想到基于图形的解决方案,所以面试官在 3-4 分钟后给了我一个提示,让我重新思考是否可以通过构建图形来解决问题。
    • 思考 2-3 分钟后,我讲述了使用拓扑排序解决问题的方法,并简要描述了该方法的工作原理,并使用示例对伪代码进行了试运行,然后让我写下完整的代码。
    • 虽然我发现很难写出完整的代码。但不知何故,我设法做到了,每当我遇到困难时,面试官也会帮助我。
    • 我用不同的逻辑写下代码,但解决问题的方法是一样的。然后面试官让我逐行解释完整的代码,还让我对给定的 2-3 个输入进行试运行,还检查了所有的极端情况,还问了我代码的时间和空间复杂度.
    • https://leetcode.com/problems/alien-dictionary/
    • https://www.geeksforgeeks.org/given-sorted-dictionary-find-precedence-characters/
  2. 给定n个不同长度的字符串,我们需要将这些字符串连接成一个字符串。连接两个字符串的成本等于它们的长度之和。我们需要以最小的成本连接字符串。
    • 我已经讨论了 2 种不同的方法以及使用优先级队列的优化方法。还讨论了优化方法的时间和空间复杂度。
    • 还问我优先级队列是如何定义的(在这里,我告诉过它作为这个问题的 minHeap)并且看起来对我的回答很满意。然后让我写下完整的代码。
    • 解决第一个问题花了我大约1个小时,所以当我开始编写第二个代码时,面试官告诉我我们的时间不多了,不需要编写代码,因为我的方法是正确的。
    • https://www.geeksforgeeks.org/connect-n-ropes-minimum-cost/
  • 问我是否有任何问题。

两轮都很顺利。面试官非常敏锐,知识渊博。他们非常友好。

最后,包括我在内的 17 名候选人被选中进行实习。

附加信息:

  • 采访是在 Amazon Chime(一个视频通话平台)上进行的。
  • 编码问题被要求在亚马逊的 LiveCode 平台上进行编码,面试官和受访者都可以同时编辑和查看代码。

提示:

  • 面试有轻微的运气因素和对白天的依赖。我建议你等待你的一天,在那一天我向你保证,没有人能阻止你得到你应得的,只要自信,用积极的态度解决所有的问题。
  • 有礼貌,仔细听面试官的话(你可能很幸运能抓住一些线索)
  • 每当您遇到困难时,面试官都会帮助您,只要继续大声思考即可。在进入解决方案之前,正确理解问题,避免对问题陈述进行任何假设,并通过向面试官询问尽可能多的问题来使它们全部清楚。考虑所有可能的边缘/角落情况。与面试官讨论您的解决方案并解释您正在处理的案例。
  • 对时间和空间复杂度计算要彻底,因为这是向面试官提出算法后可能会得到的第一个问题。