对作者来说系统设计是最难的一类面试——明明学过计算机科学、网络、操作系统和数据库,但一进面试间大脑常常一片空白。面对"设计一个通知系统""设计 URL 缩短器""设计 Netflix"这类宽泛题目,大脑会直接跳向 WebSocket、缓存、React 状态、API 端点、数据库、分页,甚至纠结"是不是要背出 Instagram 有几台服务器"。作者给出的破局思路是退一步:在决定怎么构建之前,先搞清楚要构建什么。功能需求(functional requirements)描述的是系统应该允许用户做什么——在不指定实现方式的前提下明确产品能力和行为边界。例如设计通知系统前,先明确:通知是实时的吗?用户能交互吗?要保留历史吗?能标为已读吗?10 个人拿到同一道题会得到 10 组不同需求,所以第一步永远是划定问题范围。