秋招面进行到现在,听到最多的一句复盘是「项目我明明讲得挺清楚的,怎么还是挂了」。
多数情况下不是没讲清楚,是讲的方式不对。最常见的毛病只有一个:按时间顺序讲。
流水账是怎么产生的
被问到「介绍一下你这个项目」,绝大多数人的开场是这样的:
这是一个校园二手交易平台,前端用的 Vue,后端 Spring Boot,数据库 MySQL。我负责的是订单模块,先做了下单流程,然后加了支付对接,后来又做了退款,最后加了一个订单超时自动关闭的功能。
三十秒说完,信息量接近于零。
问题在于,这段话里全是「做了什么」,没有一句「为什么这么做」。面试官听完只知道你完成了一些任务,但完成任务是最低要求,实习生也能完成任务。他想知道的是你在完成任务的过程中做过哪些判断。
而按时间顺序组织,天然会把判断挤掉——时间线的主语永远是「我接下来做了」,不是「我当时面临的选择是」。
面试官实际在听什么
把面试官的追问拆开看,问的基本是同一件事的不同侧面:
| 追问 | 真正想知道的 |
|---|---|
| 为什么用 A 不用 B | 你知不知道 A 的边界在哪 |
| 遇到过什么问题 | 你有没有真的做到需要解决问题的深度 |
| 这个数字怎么来的 | 你有没有实际测过,还是听说的 |
| 如果量级翻十倍呢 | 你有没有想过当前方案的失效点 |
| 现在让你重做会怎么改 | 你事后有没有反思,还是做完就扔 |
注意最后一条,很多人答不上来,或者答「没什么要改的,挺好的」。这基本等于告诉面试官:这个项目你没有真正拥有过。
换一个组织方式
不按时间,按决策组织。一个项目讲清楚只需要五段:
- 要解决的问题是什么 —— 一句话,说清楚谁的什么痛点
- 约束是什么 —— 人力、时间、数据量、已有技术栈、不能改的东西
- 有哪几个可选方案 —— 至少两个,说出各自的代价
- 你选了哪个,放弃了什么 —— 这一段最重要
- 结果,以及现在回头看 —— 数字 + 反思
同样是上面那个订单模块,换成:
订单超时关闭这块我卡了挺久。最直接的做法是起个定时任务每分钟扫一遍订单表,实现十分钟就能写完,但我们订单表当时几十万行,每分钟全表扫一次,数据库那边明显能看出压力,而且订单越多越糟。
我考虑过三个方案:定时扫表、给每笔订单起一个延迟任务、用 Redis 的过期回调。延迟任务准,但当时我们没有现成的消息队列,为这一个功能引一套中间件不划算;Redis 过期回调不保证及时,实测有时候要等好几秒,而且服务重启期间的过期事件会直接丢。
最后我还是用了扫表,但改成按超时时间建索引 + 分批扫,每次只捞出即将超时的那一批。代价是牺牲了一点及时性——关闭时间会比理论值晚几十秒。我跟产品确认过这个延迟能接受,才定下来。
现在回头看,如果订单量再涨一个数量级,这套还是会撑不住,那时候就该老老实实上延迟队列了。当时的选择是在「没有 MQ」这个约束下的最优解,不是绝对的最优解。
长度差不多,信息量完全不同。而且这一段主动把后续追问都答掉了:为什么不用 B、遇到什么问题、数字是多少、量级翻十倍怎么办、现在会怎么改。
几个具体的建议
数字要自己测过。 说「QPS 提升了 50%」,一定会被追问怎么测的、测试环境什么配置、对照组是什么。答不上来比不说数字更糟。没测过就说「没有严格压测,是从监控面板上看的趋势」,诚实不扣分,编造扣得很惨。
放弃的方案要说出代价,不是说出缺点。 「Redis 不可靠所以没用」是背来的结论;「Redis 过期回调实测有几秒延迟,而且重启期间的事件会丢」是你真的试过。面试官分得出来。
别把团队的成果说成自己的。 讲「我们」和讲「我」要分清楚。一个项目里你真正做主的可能只有一小块,把那一小块讲透,比把整个项目揽过来讲得处处含糊强得多。追问一深就露馅,而且是信任层面的失分。
准备两个版本。 一分钟版(说清问题和你的核心判断)和五分钟版(展开取舍细节)。开场用一分钟版,等对方追问再展开。上来就讲五分钟,面试官会走神。
说点这套方法不管用的情况
如果项目是跟着教程做的,任何讲法都撑不住。 教程项目的技术选型是教程作者定的,你没有做过任何判断,所以第三段和第四段根本写不出来。硬套这个结构反而会暴露得更快——你会在「为什么选这个」那里卡住。这种情况下更诚实的做法是直接说这是学习项目,然后讲你在里面额外做了什么改动、踩了什么坑。面试官对应届生的教程项目有预期,装反而更差。
有些面试就是照着简历念题。 对方全程问八股,不给你展开的机会,这套结构用不上。这不是你的问题,也没什么好办法,答完了事。
背成模板会变成话术。 这个结构是用来整理思路的,不是逐字稿。如果每个项目都严格按五段背下来,语气会非常僵,面试官听多了一耳朵就能听出来。理解为什么是这五段,比记住这五段有用。
最后
这套东西的核心其实就一句:讲你的判断,不是讲你的工时。
至于怎么练——找人陪练最有效,但对口的人不好找,找到了对方也未必愿意说实话。我自己做了个 AI 面试的功能,主要就是拿来练追问的:填个岗位开始,它会顺着你的回答一路往下问,问到你答不出来为止,结束给一份哪里没讲清楚的报告。在 forxi.cn 上,用来提前暴露自己讲不透的地方还行。
但它替代不了真人面试的压力感,也读不出你的表情和停顿。练结构可以,练心态还得靠真的去面几场。
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/qq_17765433/article/details/165723298



