📜  亚马逊面试经历 |校外惊奇哇(1)

📅  最后修改于: 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小时。面试官会提出一些技术问题和场景,我需要根据自己的经验和知识进行回答和讨论。

面试中我遇到了这些问题:

  • 你是如何学习新技术的?
  • 在你的工作中,你是如何管理代码库和版本控制的?
  • 你理解的云计算是什么?你有在亚马逊云上使用过哪些服务?

我根据自己的经验和知识进行了回答,并举例说明了我的工作经历和实际项目中的应用。

总结与建议

亚马逊的面试难度较大,但是他们注重的是程序员的实际能力和解决问题的思路。在准备面试的过程中,我认真阅读了一些经验文章,练习了一些算法和题目,增加了自己的信心和能力。在面试过程中,我积极沟通,理性思考,努力展示自己的能力,最终获得了这份工作。

我的建议是:给自己充足的时间来准备面试,严格按照时间要求进行练习和测试,注重沟通和思考能力的培养,寻找面试前的心理平衡点,相信自己的能力,做到最好。