Amazon SDE-1面试体验| 6个月实习(校园内)

2021年3月24日14:48:48 发表评论 1,009 次浏览

在线回合:周围250名候选人出现在这一轮

在线回合包括4个部分:

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

编码问题:

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

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

39名候选人入围了面试。采访过程(通过Amazon Chime App组织-在线回合后5天)包括两个回合。

第一回合(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)空间复杂度的优化解决方案。
    • 我写下完整的代码, 然后面试官检查所有边缘条件, 还告诉我让给定输入的代码空运行。
  2. 对给定的链表进行排序, 并返回结果链表的头指针。
    • 我先讨论了该方法, 然后告诉我写下代码(这是一个唯一的函数, 该函数将链表的头作为输入并返回排序后的链表的头指针)。
    • 我使用Merge-Sort写下了代码, 面试官检查了所有极端情况, 还告诉我让给定输入的代码空运行。还询问了代码的时间和空间复杂性。
  • 问我是否有任何问题。

第二轮有24名候选人入围。

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

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

两轮都进行顺利。面试官非常敏锐, 有丰富的知识。他们非常友好。

最后, 包括我在内的17名候选人被选为实习生。

附加信息:

  • 采访在Amazon Chime(视频通话平台)上进行。
  • 要求编码问题在Amazon LiveCode平台上进行编码, 在此平台上, 访问者和受访者都可以同时编辑和查看代码。

提示: 

  • 面试有一点点运气因素和一天的依赖。我建议你等一天, 在这一天, 我向你保证, 没有人可以阻止你获得应得的东西, 只是要自信并以积极的态度解决所有问题。
  • 有礼貌并认真听取面试官的讲话(你可能会很幸运地抓住一些线索)
  • 只要你坚持下去, 面试官都会为你提供帮助。在进入解决方案之前, 请正确理解问题, 避免对问题陈述的任何假设, 并通过询问面试官尽可能多的问题将其弄清楚。考虑所有可能的边缘/拐角情况。与面试官讨论你的解决方案, 并说明你要处理的案例。
  • 对时间和空间复杂度的计算要彻底, 因为这是向面试官提出算法后可能会遇到的第一个问题。
木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: