刚结束 Squarespace 的一轮 senior SWE loop,NYC,支持 remote-eligible。发点笔记,因为我准备时找不到任何近期的内容。
system design 这一轮是 60 分钟,一个面试官。形式很标准:给一个比较松的题目,你要主导推进。我拿到的题大概是「design a content scheduling system for a publishing platform(为一个发布平台设计内容定时发布系统)」。考虑到 Squarespace 的业务,这个题很合理。他们希望我覆盖: API 设计(REST 还是别的,他们不教条) 存储带版本管理的定时内容的数据模型 scheduler 层怎么做,at-least-once 投递的顾虑,失败场景 粗略的规模估算(我问的时候他们给了数字)
他们真正看重的是:你能自己把问题结构化,在他们指出之前就抓到含糊点,并且把权衡讲清楚。我说「这里我会用 Postgres 做 job queue,而不是上专门队列,因为这个规模不值得增加运维开销」,他们点头了。就是这种。
让我意外的是:它不是纯分布式系统硬磨。Squarespace 不是 FAANG 级别的 infra shop。面试官更在意的是我能不能设计出一个 8 人工程团队真的能做出来、能维护的东西,而不是我能不能背出每一种 Kafka 分区策略。里面还夹了一层产品直觉:「how would you change this if the customer could see a preview before publishing?(如果客户在发布前能看到预览,你会怎么改这个设计?)」
我觉得有用的准备:常见的 Grokking the System Design Interview 材料,但要按中等规模 B2C SaaS 去筛,而不是按 Google 级别去练。知道关系型方案和基于队列的方案之间的基本取舍就够了。Staff 级别的 Kafka 冷知识完全没出现。
这个岗位标的是 senior(他们对标 FAANG 的 L5,不过他们不会公开用这些标签)。完整 loop 一共五轮,包括这一轮。
如果大家有具体问题,我能想起来的我都愿意回答。