今年早些时候我面了 Booking.com senior engineer 的 system design。发出来是因为我网上看到的准备建议都很泛,对他们这种风格不太有用。
他们问的题:设计一个酒店搜索和可用性系统。考虑到业务领域,不意外。但有意思的是,他们很快就把问题推到真实的分布式系统难点:两个人同时订同一间房时如何保证库存一致性;怎么在数百万房源、动态筛选条件下把搜索做快;你的缓存策略长什么样。
形式:一小时,一个面试官加一个 shadow。面试官让我 share screen,用白板工具(他们推荐 Miro,但用什么都行)。前 5-10 分钟是 scope 和需求,然后我主导。
他们在 senior level 看重什么:
他们会明确想看到你对规模的推理。Booking.com 流量巨大,他们对 SWE 的 system design 门槛也反映了这一点。我被追问了:10 倍流量下你的方案还能不能扛住,最先崩的会是哪一块,瓶颈在哪里。他们也会问可运维性:你怎么监控,怎么在用户发现之前就知道它坏了。
行为面也会穿插进来:我至少两次被问到我做过的真实系统,以及我现在会怎么做得不一样。所以他们不是只测抽象设计,也想确认你真的交付过东西。
我踩的坑:我在早期对数据模型投入不够。花了太多时间讲服务架构,结果他们不得不把我拉回 schema。我建议前 15 分钟把数据模型和 API 设计讲扎实,而不是只画盒子箭头。
Comp 背景:岗位是 senior SWE,base 在阿姆斯特丹。我会单独发 comp,不过按欧洲标准很有竞争力;如果你跟美国 TC 比,就没那么夸张。
欢迎问细节。我在 debrief 的时候记了笔记,大部分都还记得。