“介绍下你的项目”——这道题答不好,通常不是没做过,是没组织过。做过的东西在脑子里是网状的(盘点篇的索引就是那张网),而面试开口只有线性的几十秒;不预先组织,开口就是”我们用了 Spring Cloud,然后有个工单模块,然后……”——信息全是碎片,面试官听不出形状。
本篇把全系列压缩成嘴上的功夫:30 秒电梯版(两套,按岗位换)、3 分钟结构化版(逐段给话术和每段的目的)、单项目深挖版(面试官说”挑一个讲深点”时的备选)、五个高频追问的应答骨架。所有话术都从前面各篇的真实素材压缩而来——话术不能编,编出来的经不起追问;话术只是把做过的事排成讲得出来的顺序。
一、30 秒电梯版:两套按岗位换
电梯版要在一句话里完成”领域定位加技术形状加个人深度”三件事,剩下的时间留给面试官追问。它不是项目的完整介绍,是钩子。
业务后端岗版本:
“我做的是制造业的 MES 加 WMS——管工厂从接单到出货的整个生产过程。技术上是二十个左右的 Spring Cloud 微服务,MySQL 分库加 Redis 会话加 RabbitMQ 事件总线。我深度负责三块:工单状态机和生产流程拦截、库存账本的一致性设计、还有约束求解器做的自动排产——最后这个我在面试里可以展开讲十分钟。”
平台/基础架构岗版本:
“我维护一个服务十几个制造客户的产品化 MES 平台——同一套底座三种交付:私有化、SaaS 云、车间工控终端。平台层面我负责自研框架的元数据引擎(几十个业务页面靠它长一个样)、多租户的行级隔离设计,还有自己写的团队工具链:本地开发引擎和一个给框架补 IDE 导航的 IDEA 插件。”
注意两版的差异只在重心:业务岗把深度点押在”业务机制”,平台岗押在”基础设施”——素材相同,排序即立场。
二、3 分钟结构化版:六段脚本
三分钟大约八百字,六段各有明确目的。每段后面标注(目的),话术本身可以背。
第 1 段·业务定位(20 秒):
“这套系统服务注塑行业的制造工厂。简单说,ERP 管’卖’,我们管’造’:客户 ERP 里的订单同步进来,我们负责排产、生产执行、质检和库存,产品入库后再衔接销售出库。一个工单从下发到完工的全部过程数据都在我们系统里。”
(目的:让不懂制造业的面试官 20 秒建立坐标系,专有名词只留 ERP/MES 两个。)
第 2 段·架构形状(30 秒):
“架构是二十个左右的 Spring Cloud 微服务,按业务域垂直拆——工单、生产、质检、仓储各自独立部署,注册中心、网关、配置中心独立成基础设施层。两个关键设计:一是 MES 和 WMS 物理分库,跨库取数禁止 join、必须走服务接口,边界画在数据所有权上;二是多工厂用行级租户隔离,所有主表带工厂字段,隔离逻辑收口在后端。”
(目的:报出形状后立刻给两个”有观点的设计”——面试官接下来无论挑哪个钻,你都有下一层。)
第 3 段·深点一:库存一致性(40 秒):
“我展开讲一个数据一致性的例子:工人报工一次,产量表要更新、按 BOM 反算的原料库存要扣——跨两个库。我们的演进走了三步:最早用分布式事务管理器绑跨服务事务,后来发现报工和扣料的耦合度足够高,干脆把执行收拢到一个服务里,跨服务事务退化成同 JVM 的多数据源本地事务;真跨边界的场景(比如跨厂调拨)用在途表做中间态,拆成两次带状态的本地写。失败兜底是失败账本——同步失败的记录进表,成功销号、失败告警加人工重发。”
(目的:展示”演进视角”——不是背一个方案,是展示方案替换的理由。这是和背题者拉开差距的 40 秒。)
第 4 段·深点二:自动排产(40 秒):
“再讲一个偏算法的:自动排产。这是 Job-Shop 调度问题,NP-hard,我们用约束求解器做——工单是规划实体,’选哪台机、排哪个位置’是规划变量,时间沿链自动推算;打分分三层,硬约束管可行、中层管交期、软层管换模次数这类优化。工程上比算法更难的三件事我们都做了:求解时间按问题规模分档保证响应可预期、每个约束的得分落库让排产员看得懂方案、结果先进沙箱由人工在甘特图上确认才下发——因为车间现实永远比模型复杂,’机器算、人拍板’。”
(目的:证明有非 CRUD 的深度,并且算法落了地——“三件比算法更难的事”是这段的记忆点。)
第 5 段·一个事故(30 秒):
“踩过印象最深的坑是一次库存重复提交:代码里有查重校验,但事务注解把整个方法包成了大事务,MVCC 快照读看不见并发插入,校验形同虚设,最后靠唯一索引兜底加控制层编程式分布式锁解决,锁还必须加在事务外——事务内等锁会把连接池拖垮。这个事故让我对’校验顺序、锁和事务边界’的理解落地了。”
(目的:一次带根因链、带修复、带沉淀的事故,胜过十个”我解决了高并发问题”。)
第 6 段·收尾留钩(20 秒):
“系统服务了十来个工厂,过程中我也沉淀了一些团队工具:本地开发引擎、给自研框架补 IDE 导航的插件。以上是整体,您对哪一块感兴趣我们可以深入。”
(目的:交回话语权,同时埋两个可选钩子——工具链那句话是给”你还有别的吗”准备的。)
三、单项目深挖版:两条备选叙事线
面试官说”挑一个模块讲深点”时的两条备选线,各备五分钟素材(细节都在对应篇目):
线一·排产双引擎(偏算法与权衡):约束求解器的链式建模三层打分 → 为什么装配多工序放弃求解器(问题结构从链变图)→ 自研引擎的 Slack 排序加关键路径加确定性贪心 → 沙箱人机协同收尾。叙事主题是**”算法选型跟着问题结构走”**。
线二·库存三部曲(偏数据与并发):一次 MVCC 双写事故(怎么摔的)→ 账本设计(三维状态、原语收敛、三段式簿记)→ 倒冲扣料跨库一致(锁与事务边界、tx-lcn 退场)。叙事主题是**”一致性是设计出来的不是锁出来的”**。
两条线的共同纪律:每条线必须有一段失败或演进——只讲成功方案的五分钟,面试官默认打折。
四、高频追问的应答骨架
五个必来的追问,各自给一个”结论先行、两层理由、主动认领代价”的应答骨架:
追问一:”你们技术栈这么老,为什么?” → 结论:栈是选给业务形态的,不是选给简历的。理由一:产品化底座几十个客户在跑,迁移风险由客户承担,谨慎是对的;理由二:我们清楚每一项技术债(驱动版本、Netflix 停更),如果重来会怎么选也说得出。认领:确实付出了招聘和生态的代价。
追问二:”微服务拆这么多,不嫌运维麻烦?” → 结论:拆分粒度跟团队和发布节奏走,我们按业务域垂直拆。理由一:改一个业务需求只发布一个服务;理由二:基础设施四件套独立,业务服务启动部署标准化。认领:跨域查询变贵了,所以立了跨库纪律。
追问三:”你个人的贡献到底是什么?” → 结论:底盘和楼层分开讲——框架底座是团队多年积累,我的楼层是状态机、库存账本、排产双引擎和整套团队工具链。关键句:”这块的设计背景是 X,我在其上做的决策是 Y”——追问到底层时这个句式最稳。
追问四:”你遇到最难的技术问题是什么?” → 选有根因链的(比如 MVCC 事故:现象、三轮排查、根因两层、修复、沉淀成排查清单),不选”最难的最牛的”。结构:现象一句话 → 排查走偏的过程(诚实)→ 根因 → 修复 → 留下什么。难点问题的价值在排查过程,不在结论。
追问五:”如果重新设计你会怎么改?” → 每个领域备一条:架构层”跨库纪律上早期就上框架级兜底”;数据层”主键和水位设计提前规划”;算法层”可观测性前置”。注意改什么要和留下什么配对——全盘推翻式的回答暴露的是没真做过。
五、表达纪律四条
最后四条练话术时的纪律,比话术本身更重要:
一,数字要真。”二十来个服务””十几个工厂””一百二十秒令牌”——真实的数字经得起追问,编的数字追问一句就穿。
二,术语要服务面试官。对懂行的面试官用”行级租户、链式变量”提高信息密度;对业务向面试官用”谁管什么、为什么这么分”换坐标系——同一份素材,两套编码。
三,每段留一个钩子。3 分钟版里”约束求解器””失败账本””工具链”都是故意不展开的点——面试官追进来,就进入了你准备最深的区域。好的项目介绍是设计一场追问,不是一段独白。
**四,练到”能看着目录说”**。检验标准:合上所有材料,看着二十三篇的目录索引,能对每一篇说出”这篇回答什么问题、一句话锚点是什么”——到这个程度,任何追问都有落点。
小结
- 30 秒版是钩子不是摘要:一句话定位加一句形状加一个深度预告,按岗位换重心;
- 3 分钟版六段各有目的:定位、形状、两个深点、一个事故、留钩收尾——每段的隐形标注比话术本身重要;
- 深挖线必须带失败或演进:只讲成功方案的五分钟,默认打折;
- **追问应答的骨架是”结论先行、两层理由、认领代价”**:诚实分层贡献,追问到底层才最稳;
- 表达纪律四条:数字要真、术语随人、钩子故意留、练到能对着目录说。
下一篇是系列的最后一篇终局篇:二十五个高频问题清单、每个问题的追问树、以及一场面试的最后五分钟——你该怎么反问。