今年早些时候我在lululemon面了一个staff级别的SWE岗位。system design轮60分钟,是我在FAANG之外遇到过最有意思的一轮设计面试。很多人都是盲进,我就把形式分享下。
题目: 他们给了我一个很模糊的起点:为一个大型零售站点设计商品目录和可用性服务,需要能扛住季节性峰值(比如Black Friday、新一季上新)。他们没说“design Amazon(设计一个Amazon)”,而是让你按他们的业务来设计,反而更有意思。
他们重点往哪里挖: 商品可用性(库存)缓存策略(库存变化快,读到旧数据代价很高) 多个用户同时checkout时如何保证库存一致性 在他们这种catalog规模下怎么做数据分片(几十万SKU,包含颜色、尺码维度) 商品图片的CDN策略以及如何做invalidation
值得一提的是:他们没有出那种通用的“design Twitter(设计一个Twitter)”式题目,一切都落在零售、电商语境里。如果你没怎么想过SKU管理、库存预留模式、零售系统读多写少的拆分,面前最好补一补。
看起来最重要的: 在对方问之前先把trade-off讲出来。他们会故意push back,看你是能捍卫还是会修正选择。 不要假装所有东西都要从零造。他们很认可我说“这里会用现成的search index,然后我会这么配”。 白板图保持干净,并持续迭代
面试官是senior工程师,很犀利,明显有强观点。氛围是合作而不是对抗,但确实会戳你的薄弱点。
准备上:如果你做过FAANG风格的system design,你会觉得这轮算法味没那么重,更偏运维和落地。零售领域知识在这里是实打实的加分项。面前读一读库存管理系统、flash sale架构、CDN边缘缓存再进去。
还有个我没想到的点:他们问我线上怎么监控和告警。可靠性思维对他们很重要。