系列写到这里,机制、交付、端侧、工具链已经二十二篇,本篇是检索层:把散在二十多篇里的考点按”面试官的提问路径”重排成索引,补上一直欠着的导出与归档拼图,最后画出”一个底座、多种交付、多端工具链”的项目经历地图。面试备战材料写完不难,难的是面试前 30 分钟能不能翻到要复习的那一段——本篇就是为那 30 分钟设计的。
一、先补拼图:导出与归档
这条线散落在三处(导出改造的完整事故复盘、库存篇的归档纪律、框架篇的列头复用),这里合上拼图。
导出链路的演进是一堂异步化设计课:报表同步导出在大数据量下必然超时(HTTP 同步等待、内存堆 Excel、数据库长事务三重挤压),改造后的形态是——请求进来立即创建导出任务返回(用户体验是”任务已提交”),后台 EasyExcel 流式写出(内存恒定,不堆 Excel 对象),进度经消息队列解耦、WebSocket 推送前端,产物落到下载中心兜底(人不在电脑前也不丢文件)。面试要点三个:同步转异步的边界判断(多大算大、什么场景必须异步)、流式写的内存模型(SAX 式逐行写)、任务的可追溯性(下载中心就是导出的”失败账本”)。列头复用是框架层的红利:导出表头直接读页面布局元数据——一处定义两处消费。
归档体系的三件套在前面各篇出现过:配置驱动的归档工厂(按年/月/周/日滚动建子表、查询路由)、组级短事务搬运(五百行一提交、插入忽略防重)、按保留期的流水清理。合并起来的一句话:大表治理是”查得快(覆盖索引)、搬得稳(短事务)、删得准(主键三步法)”三件事的长期主义。
二、考点索引:按面试官的提问路径
面试官的问题是有路径的:先让你介绍项目(考表达),再挑一层往下钻(考深度),再横向问”还做过什么类似的”(考广度)。索引按这条路径分六层,每条给出问题、篇目锚点和一句话答案锚点。
第一层·项目介绍
| 问题 | 篇目 | 答案锚点 |
|---|---|---|
| 介绍下你的项目 | 全景篇 | ERP 管单、MES 管造、WMS 管仓;工单生命周期串起一切 |
| 系统架构什么样 | 全景篇 | 按业务域垂直拆、边界画在数据所有权上、二十来个服务四层结构 |
| 多客户怎么交付 | 交付篇 | 私有化/SaaS/工控终端三形态,成本各压在环境适配、租户化、可靠性 |
第二层·架构与集成
| 问题 | 篇目 | 答案锚点 |
|---|---|---|
| MES 和 WMS 的边界 | 边界篇 | 一服务两库降维跨服务事务;禁止跨库 join、Feign 传键不传宽结果 |
| 跨服务一致性怎么保证 | 边界篇 | 三层:收拢执行避免分布式、在途表中间态、失败账本兜底 |
| ERP 怎么对接 | 集成篇 | 接口形态应变 + 增量命门(水位重叠、失败物化) |
| 多租户怎么做 | 登录会话篇 | 行级隔离 + Session 注入 + 收口后端;SaaS 再叠渠道层 |
| 分布式 ID / 主键 | 规范篇 | 分库不分表用自增自洽;从表序列服务;选型跟架构形态走 |
第三层·核心机制
| 问题 | 篇目 | 答案锚点 |
|---|---|---|
| 登录态集群共享 | 登录会话篇 | Spring Session + Redis 三细节(分库、网关放行、JDK 序列化克制) |
| 业务流程怎么建模 | 状态机篇 | 流程图配置外置 + 策略名路由 + 过渡态显式化 |
| 消息队列怎么用 | 总线篇 | 位编码事件号、自注册容器、可靠性的答案是流量分级 |
| 设备数据怎么接 | 物联篇 | 接入薄处理厚、配置驱动适配、TTL 状态机、写合并扛量 |
| 排产怎么做 | 排产篇 | 链式建模 + 三层打分 + 分档终止;多工序篇:CPM 算关键、规则定排程 |
| 自研框架值得吗 | 框架篇 | 薄 Controller + 元数据渲染;账本里利弊都摆 |
第四层·数据与并发
| 问题 | 篇目 | 答案锚点 |
|---|---|---|
| 库存怎么防超卖 | 库存篇 | 三层(量校验/CAS/可用量口径);账本设计是战略、锁是战术 |
| MVCC/锁的真实事故 | 库存双写事故篇 | 大事务包 check-then-act、快照读盲区、唯一索引兜底 |
| 乐观锁和分布式锁怎么选 | 状态机篇 + 库存篇 | 冲突概率决定装备;锁时机跟事务边界走 |
| 大表怎么治理 | 规范篇 + 库存篇 | 覆盖索引在线重建、组级短事务归档、配置驱动框架化 |
| 增量同步怎么不丢 | 集成篇 | 水位回拨重叠窗、翻页冻结、下游幂等消化重拉 |
| 大数据量导出 | 本篇第一节 | 异步任务 + 流式写 + 下载中心 |
第五层·端侧与工具链
| 问题 | 篇目 | 答案锚点 |
|---|---|---|
| 车间终端怎么做 | 终端篇 | 壳三件事(桥接/防呆/离线)、执行与决策分离 |
| 移动端混合开发 | 移动篇 | 桥最小暴露、扫码双通道降级、适配税元认知 |
| 鸿蒙迁移 | 鸿蒙篇 | 契约沿用(桥名不动)、两个世界边界的坑 |
| 自研工具链 | 工具链篇 | 效能账立项、零配置发现、Windows 坑墙 |
| IDE 插件 | 插件篇 | 断链盘点、扩展点地图、回调频率性能公式 |
三、项目经历地图:一个底座的讲述法
多项目经历最忌讲成”我做过很多项目”的流水账。这张地图把它组织成一个演进叙事:
- 一个底座:一套 Spring Cloud 微服务底座服务了十来个制造客户(私有化分支、SaaS 云、行业定制分支三种交付)——这证明的是产品化能力:约定优于配置、配置外置、分支收敛纪律;
- 底座上的纵深:工单状态机、库存账本、排产双引擎(约束求解器与确定性贪心并存)、IoT 接入——这证明的是业务建模能力;
- 底座外的半径:C# 工控终端、Android/鸿蒙双壳、ERP 四种适配、AI 智能体组件——这证明的是边界穿越能力(跨语言、跨系统、跨时代技术栈嫁接);
- 纵向的演进史:遗传算法到求解器、仓储 v1 到 v2、tx-lcn 退场、插件 1.x 到 2.x、安卓壳到鸿蒙壳——这证明的是架构判断的迭代:每个”后来换了”都对应一次”当初为什么”。
面试叙事的建议形态是”一横一纵“:横着讲一次全景(三分钟版本见下一篇),纵着挑一条演进史讲透(比如排产引擎三代、或事务机制从 tx-lcn 到收拢)——横讲广度,纵讲深度,两条讲完,项目经历立体了。
四、面试视角:四个问题拆到底
Q1:二十多篇素材,面试时讲哪些?
答:按岗位裁剪。投业务后端:全景、状态机、库存、边界、集成五篇是主干;投架构:交付、边界、总线、盘点本篇;投偏平台的岗:框架、规范、任务、工具链三篇。每篇的”小结”和”面试视角”就是压缩饼干,面试前一天只读这两节。
Q2:项目经历里最深的点是什么?
答:备两个不同域的:一个是约束求解器落地(排产篇,算法工程化:时间预算、可解释性、人机协同),一个是库存账本设计(库存篇,三维状态、原语收敛、三段式簿记)。一个偏算法一个偏数据,面试官从哪个方向追问都有下一层。
Q3:这些项目是你一个人做的吗?
答:诚实分层:底座和框架是团队多年的积累,我的贡献在若干业务域的纵深(状态机、库存、排产)和工具链的自研(引擎、插件、Agent)。把团队的底盘和自己的楼层分清楚,比模糊地揽功更可信——追问到底层时,”这块的设计背景是 X,我在其上做的决策是 Y”是最稳的表达。
Q4:这个系列对你的面试有什么实际改变?
答:把”做过”升级成”能讲”:每一个技术决策都补齐了”为什么、代价、如果重来”三段。面试官最常追问的”为什么不用 X”,答案早就写在每一篇的账本里——备战不是背答案,是把做过的事重新决策一遍。
小结
- 索引按提问路径组织:介绍、架构、机制、数据并发、端侧工具五层,面试前三十分钟按目标岗位翻对应层;
- 导出与归档合上拼图:异步化三板斧(任务化、流式、下载中心)加治理三件事(查得快、搬得稳、删得准);
- 项目经历用”一横一纵”讲:横讲一底座三形态的广度,纵讲一条演进史的深度;
- 团队底盘和个人楼层要分层:可信的表达是”设计背景是 X,我的决策是 Y”;
- 备战是把做过的事重新决策一遍:为什么、代价、如果重来——三段齐了,追问就不怕。
下一篇预告:话术篇——把全系列浓缩成嘴上的功夫:项目介绍的 3 分钟版(结构化叙事)与 30 秒版(电梯陈述),单项目版与多项目版,外加高频追问的应答模板。