‹ 全部面经
Amazon SWE 四轮 VO 过经:括号嵌套深度 + 字母异位词分组 + 自动售货机 OOD
Amazon SWE 四轮 VO 过经:BQ 追问细节、括号最深嵌套层数、不用排序的字母异位词分组(计数数组做 key)、自动售货机 OOD(Coin 基类抽象),以及 LP 契合度 BQ 准备建议。
Amazon
VO
VO1:BQ + Coding
面试官是个白人小哥,全程没怎么笑,话也不多。自我介绍刚说完就直接进 BQ,问了截止日期和跨部门协作的问题。追问得特别细,光按 STAR 模板背根本不够,得真的把故事吃透。
Coding:给一个包含圆括号和方括号的字符串,找出最深的嵌套层数。
思路:遍历一遍,碰到左括号深度加一并更新最大值,碰到右括号深度减一,最后返回最大深度。
Follow-up:如果只有一种括号,或者多种括号混在一起怎么处理?其实方法都一样。
def max_nesting_depth(s):
depth = best = 0
for c in s:
if c in "([":
depth += 1
best = max(best, depth)
elif c in ")]":
depth -= 1
return best
VO2:BQ + Coding
BQ:主要问信息不完整时怎么做决策,以及和同事或上级意见不一致时怎么应对。
Coding:给一个字符串数组,把互为字母异位词的单词分到同一组,不能用排序签名的解法。
思路:用长度为 26 的计数数组作为哈希表的 key,一次遍历就能完成分组。写完后跑了几组测试,还顺带聊了用质数乘积当 key 的隐患:溢出和碰撞问题。
from collections import defaultdict
def group_anagrams(words):
groups = defaultdict(list)
for w in words:
count = [0] * 26
for ch in w:
count[ord(ch) - ord("a")] += 1
groups[tuple(count)].append(w)
return list(groups.values())
时间 O(n · L),L 是单词平均长度。
VO3:OOD
面试官是个白人小姐姐,全程笑眯眯的,聊得比较随意。自我介绍后问了怎么帮助同事解决问题、团队协作相关的问题,还有和上级意见不一致或发生冲突时怎么处理。
OOD:设计一个自动售货机。核心是抽象出一个 Coin 基类,让不同国家的货币作为子类去继承并实现它。这轮整体更像在讨论设计思路,不像在考试。
VO4:BQ
- Why do you want to apply for this position at Amazon?
- How do you usually handle it when there's disagreement within your team?
- Can you share a project that best represents your skills and experience?
这轮明显是在看你和团队的契合度。
BQ 准备建议:
- 用 STAR 把故事串起来,结果部分尽量拿数字说话,比如效率提升了多少、成本节省了多少。
- 每个故事最好能扣住一两条 Amazon 领导力准则(LP),面试官听起来会更容易认可。