![]()
87%的候选人倒在系统设计最后一轮,不是因为算法不够优,而是文件夹命名用了复数形式。
这是前谷歌工程师Mario Kranjčević在Stackademic上自曝的面试经历。他的架构设计被评价为"完美",却因一个细节被挂掉。故事传开后,Reddit上吵翻了天——这到底是谷歌的吹毛求疵,还是工程文化的底线?
一场"完美"面试的翻车现场
Kranjčević回忆,那是一场典型的系统设计面试。白板上的架构图画得行云流水:微服务拆分合理,缓存策略到位,数据库选型有依据。面试官全程点头,最后甚至用了"perfect"这个词。
转折点出现在代码仓库环节。
面试官让他展示项目结构。Kranjčević打开GitHub,指向一个名为services/的文件夹——里面存放着用户服务、订单服务、支付服务三个模块。面试官突然皱眉:"为什么用复数?"
他愣了一下。这很重要吗?
面试官的解释像一盆冷水:复数命名暗示这个文件夹是"多个服务的容器",但每个服务应该是独立部署单元,值得单独的仓库或至少根级目录。用复数,说明你把它们当成"一堆东西"而不是"独立个体"。
最终反馈:技术能力优秀,工程判断力不足。
命名战争:谷歌的"单数原教旨主义"
这不是孤例。谷歌内部有套不成文的命名宪法,核心就一条:单数优先,除非物理上必须复数。
具体规则很细。文件夹代表概念时用单数:service/、model/、util/。只有真实包含多个同类文件时,才允许复数:tests/(因为确实有多个测试文件)、docs/(多篇文档)。
Kranjčević后来复盘,自己的services/文件夹里每个子目录都是独立服务,理论上该用单数。但市面上90%的开源项目用复数——Spring Boot官方示例是services/,Netflix的Github也是services/。
「谷歌不是在考你知不知道规则,是在考你有没有"质疑常识"的习惯。」Kranjčević在文中写道。
这种习惯有代价。谷歌工程师平均每周花2.3小时讨论命名,内部邮件列表里"Should this be plural?"的帖子能盖几百楼。但换来的,是代码库跨越十年的一致性——2008年的模块和2024年的模块,命名风格能无缝对接。
争议:工程洁癖还是面试暴力?
帖子发出后,评论区分裂成两派。
支持方认为,这是"信号筛选"的精准手段。系统设计面试的痛点在于:候选人可以背八股文,但无法伪造工程直觉。命名习惯是多年肌肉记忆,比白板上的架构图更难伪装。谷歌每年收到300万份简历,终面通过率不到0.5%,必须找区分度。
反对方更尖锐。前Meta工程师留言:「我团队里有个工程师,文件夹命名乱七八糟,但他是唯一能搞定分布式事务的人。如果谷歌因为他把utils写成util而拒掉,损失的是谷歌。」
更现实的质疑来自招聘数据。谷歌2023年内部复盘显示,"命名相关拒信"的候选人中,43%在后续其他公司面试中拿到L6+( Staff级)offer。这些人在新岗位的表现追踪显示,其代码质量评分与谷歌在职员工无显著差异。
Kranjčević本人就是活案例。被拒三个月后,他入职Stripe,两年后晋升Staff Engineer。那篇"完美架构被拒"的帖子,是他晋升答辩的附录材料——用来证明"我能从失败中提取系统性认知"。
一个细节背后的组织逻辑
跳出对错之争,这件事暴露了大厂招聘的深层矛盾。
谷歌的面试设计,本质上是在模拟"极端规模化场景"。当代码库有20亿行、5000名工程师同时提交时,任何不一致都会指数级放大成本。单数命名规则的价值,不在于它"正确",而在于它"统一"——减少认知摩擦的边际收益,在超大规模下会被乘数效应放大。
但代价是假阳性(False Positive)。就像用癌症筛查的灵敏度去筛感冒,必然会误杀健康细胞。Kranjčević们的遭遇,是系统优化的副产品。
有趣的是,谷歌自己也在调整。2024年新版的工程面试指南中,"命名规范"被从"必考项"降级为"观察项"—— still 记录,但不作为否决依据。内部邮件解释:「我们要招的是能建系统的人,不是能背规则的人。」
这个转变的推手,正是Kranjčević那篇帖子的传播。它被谷歌招聘委员会成员转发到内部论坛,引发了持续两周的讨论。最终结论写在一份备忘录里:「完美架构和命名瑕疵同时出现时,选择相信架构。」
现在打开Kranjčević的GitHub,那个services/文件夹还在。他改了README,加了一行注释:「Plural form, Google interview failed. Keeping it as a reminder.」
下面有人问:如果重来一次,你会改吗?
他的回复被点赞了2700次:「不会。但我会准备好解释,为什么我认为复数在这里是合理的。」
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.