📜  亚马逊面试经历 |设置 327(SDE-1 校外)(1)

📅  最后修改于: 2023-12-03 15:21:43.822000             🧑  作者: Mango

亚马逊面试经历 |设置 327(SDE-1 校外)

介绍

本文将介绍我在亚马逊进行的一次SDE-1岗位的面试经历。这次面试是在线进行的,共有三轮,每轮45分钟。

第一轮

第一轮是一位和我所应聘的职位相关的面试官。他首先询问了我的工作经历以及我在校期间的相关课程和项目经验。然后他问了一道算法题:

题目

实现一个函数,输入一个字符串,函数返回这个字符串的所有排列。

示例

input: "abc"
output: ["abc", "acb", "bac", "bca", "cab", "cba"]
解题思路

这是一道经典的回溯算法题。首先将字符串转化为一个字符列表,通过交换字符的方式得到所有排列,然后加入到结果数组中。

代码

def permutation(s: str) -> List[str]:
    if not s:
        return []

    res = []

    def backtrack(chars, l, r):
        if l == r:
            res.append("".join(chars))
            return

        for i in range(l, r):
            chars[l], chars[i] = chars[i], chars[l]
            backtrack(chars, l + 1, r)
            chars[l], chars[i] = chars[i], chars[l]

    chars = list(s)
    backtrack(chars, 0, len(chars))
    return res
第二轮

第二轮是一位团队的面试官。他向我介绍了亚马逊的工作文化和技术栈,并且问了我一些关于我的简历和技术栈的问题。

然后他给了我一道系统设计的问题:

题目

设计一个基于亚马逊购物车的购物网站。

解题思路

这是一道较为开放的系统设计题目。我首先提出了一些需要考虑的问题:

  • 数据库设计:需要设计购物车、订单等数据模型。
  • 前后端架构:需要使用哪些技术栈?
  • 系统可扩展性:如何支持多终端、多用户访问?

然后我根据这些问题提出了一个大致的解题思路:

  • 前端:使用Vue.js作为前端框架,使用Nginx作为Web服务器,负责页面渲染和数据请求的处理。
  • 后端:使用Python和Django框架搭建RESTful API,并使用MySQL作为数据库,负责数据存储和业务逻辑处理。
  • 系统可扩展性:使用亚马逊的多样化服务,如Amazon EC2、Amazon S3和Amazon RDS等,使系统可以支持高并发和大容量的访问,同时提供灵活的扩展性。
第三轮

第三轮是一位高层面试官。他主要向我了解我的职业规划和个人发展,以及我是如何处理过去的失败和挫折的。他还提出了一些与我所面试职位相关的问题,以测试我的技术思维和分析能力。最后他向我介绍了亚马逊的未来发展趋势和机遇。

总结

这次亚马逊的面试过程非常完整,涵盖了算法、系统设计和综合分析等多个方面。同时,面试官的态度友好,问题也非常具有针对性。我透彻地了解到了亚马逊的技术栈与工作文化,并且得到了宝贵的面试经验和反馈。