📅  最后修改于: 2023-12-03 15:21:43.822000             🧑  作者: Mango
本文将介绍我在亚马逊进行的一次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
第二轮是一位团队的面试官。他向我介绍了亚马逊的工作文化和技术栈,并且问了我一些关于我的简历和技术栈的问题。
然后他给了我一道系统设计的问题:
设计一个基于亚马逊购物车的购物网站。
这是一道较为开放的系统设计题目。我首先提出了一些需要考虑的问题:
然后我根据这些问题提出了一个大致的解题思路:
第三轮是一位高层面试官。他主要向我了解我的职业规划和个人发展,以及我是如何处理过去的失败和挫折的。他还提出了一些与我所面试职位相关的问题,以测试我的技术思维和分析能力。最后他向我介绍了亚马逊的未来发展趋势和机遇。
这次亚马逊的面试过程非常完整,涵盖了算法、系统设计和综合分析等多个方面。同时,面试官的态度友好,问题也非常具有针对性。我透彻地了解到了亚马逊的技术栈与工作文化,并且得到了宝贵的面试经验和反馈。