线上轮次:本轮约250名候选人
在线回合包括 4 个部分:
- 代码调试回合(20 分钟 – 7 个问题)
- 编码部分(70 分钟 – 2 个问题)
- 工作风格评估(25 分钟)
- 能力和逻辑推理(35 分钟 – 24 个 MCQ)
编码问题:
- 在按行和按列排序的矩阵中搜索
- 克隆带有下一个和随机指针的链表
不同的集合有不同的编码问题,来自一些 5-6 个问题。所有部分都相当简单,但需要快一点才能按时完成所有问题。
39名候选人入围面试。面试过程(通过 Amazon Chime 应用程序组织 – 在线轮后 5 天)由两轮组成。
第 1 轮(F2F 采访 35-40 分钟):正式问候和介绍。告诉我你最喜欢的项目(2-3 分钟)。让我们跳到编码问题(不讨论任何其他内容,也没有关于项目的反问)
- 给定一个随机数数组,将所有零移动到数组的末尾。
- 例如,如果给定的数组是 {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/
- 对给定的链表进行排序并返回结果链表的头指针。
- 我先讨论了这个方法,然后让我写下代码(一个唯一的函数,它将链表的头部作为输入并返回排序的链表的头部指针)。
- 我使用 Merge-Sort 写下代码,面试官检查了所有极端情况,并告诉我为给定的输入试运行代码。还询问了代码的时间和空间复杂度。
- https://www.geeksforgeeks.org/merge-sort-for-linked-list/
- 问我是否有任何问题。
24名候选人入围第二轮。
第 2 轮(F2F 采访 60-75 分钟):正式问候和介绍。直接跳到编码问题(没有其他 CS 基础问题,也没有关于任何项目或简历的问题)
- 给定一个已排序的外星语言字典(单词数组),找出该语言中字符的顺序。
- 我事先没有见过这个问题,而且我也不擅长解决图形问题。
- 我花了 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/
- 给定n个不同长度的字符串,我们需要将这些字符串连接成一个字符串。连接两个字符串的成本等于它们的长度之和。我们需要以最小的成本连接字符串。
- 我已经讨论了 2 种不同的方法以及使用优先级队列的优化方法。还讨论了优化方法的时间和空间复杂度。
- 还问我优先级队列是如何定义的(在这里,我告诉过它作为这个问题的 minHeap)并且看起来对我的回答很满意。然后让我写下完整的代码。
- 解决第一个问题花了我大约1个小时,所以当我开始编写第二个代码时,面试官告诉我我们的时间不多了,不需要编写代码,因为我的方法是正确的。
- https://www.geeksforgeeks.org/connect-n-ropes-minimum-cost/
- 问我是否有任何问题。
两轮都很顺利。面试官非常敏锐,知识渊博。他们非常友好。
最后,包括我在内的 17 名候选人被选中进行实习。
附加信息:
- 采访是在 Amazon Chime(一个视频通话平台)上进行的。
- 编码问题被要求在亚马逊的 LiveCode 平台上进行编码,面试官和受访者都可以同时编辑和查看代码。
提示:
- 面试有轻微的运气因素和对白天的依赖。我建议你等待你的一天,在那一天我向你保证,没有人能阻止你得到你应得的,只要自信,用积极的态度解决所有的问题。
- 有礼貌,仔细听面试官的话(你可能很幸运能抓住一些线索)
- 每当您遇到困难时,面试官都会帮助您,只要继续大声思考即可。在进入解决方案之前,正确理解问题,避免对问题陈述进行任何假设,并通过向面试官询问尽可能多的问题来使它们全部清楚。考虑所有可能的边缘/角落情况。与面试官讨论您的解决方案并解释您正在处理的案例。
- 对时间和空间复杂度计算要彻底,因为这是向面试官提出算法后可能会得到的第一个问题。