📅  最后修改于: 2023-12-03 15:36:05.793000             🧑  作者: Mango
最近我有幸参加了亚马逊的面试。作为一名程序员,面试的过程中收获颇丰,也遇到了一些挑战。在这里,我将分享我的经历,希望对正在准备面试的程序员有所帮助。
在面试之前,我认真研读了亚马逊的官方网站,了解了他们的业务和面试方式。我还通读了一些关于亚马逊面试经历的博客文章,从中学到了不少经验和技巧。针对自己的不足,我还自己写了一些代码,做了一些练习题,让自己更加熟练。
我的面试分了三轮,分别是电话面试、在线编程和技术面试。以下是每个环节的详情:
电话面试的时间是30分钟。在面试之前,我收到了一封邮件,告诉我应该准备哪些内容,以及面试的流程。电话面试主要考察我的代码完成能力和问题解决能力。
面试中我遇到了这个问题:
给定一个字符串列表,找到其中所有长度为3的子串,如果有重复的子串,则只保留一个。
我用Python写出了以下代码:
def get_substrs(words):
substrs = set()
for word in words:
for i in range(len(word)):
if i + 3 <= len(word):
substr = word[i:i+3]
if substr not in substrs:
substrs.add(substr)
return substrs
面试官很快给我反馈了代码的正确性和时间复杂度。我们还讨论了其他相关问题和我的工作经历。
在线编程的时间是1小时。面试官会提供一个题目,我需要在限定时间内完成代码的编写和测试。
面试中我遇到了这个问题:
给定一个二叉树,将其转换成链表。转换后的链表应该遵循原二叉树的先序遍历顺序。
我用Python写出了以下代码:
class Solution:
def flatten(self, root: TreeNode) -> None:
"""
Do not return anything, modify root in-place instead.
"""
if root is None:
return
self.flatten(root.left)
self.flatten(root.right)
temp = root.right
root.right = root.left
root.left = None
while root.right:
root = root.right
root.right = temp
面试官对我的代码进行了一些测试和反馈,并且问了一些Python和算法方面的问题。
技术面试的时间是1小时。面试官会提出一些技术问题和场景,我需要根据自己的经验和知识进行回答和讨论。
面试中我遇到了这些问题:
我根据自己的经验和知识进行了回答,并举例说明了我的工作经历和实际项目中的应用。
亚马逊的面试难度较大,但是他们注重的是程序员的实际能力和解决问题的思路。在准备面试的过程中,我认真阅读了一些经验文章,练习了一些算法和题目,增加了自己的信心和能力。在面试过程中,我积极沟通,理性思考,努力展示自己的能力,最终获得了这份工作。
我的建议是:给自己充足的时间来准备面试,严格按照时间要求进行练习和测试,注重沟通和思考能力的培养,寻找面试前的心理平衡点,相信自己的能力,做到最好。