Day 96 · 简历与面试弹药库 — 把 98 天变成一页纸和十段追问答案
毕业博文发了,今天做求职侧的最后一公里:简历项目条目升级为 Vue 版、面试弹药库系统化整理(每句简历话术配 10 分钟追问答案)、模拟问答实战演练。原则延续 Day 70 的"每句话撑住 10 分钟追问"——今天 additionally 处理一个新问题:原生版和 Vue 版在简历上怎么共存(两条还是一条?)。
目录
一、简历条目:Vue 版定稿
对照 Day 70 的 150 字版本,Vue 版参考答案:
智慧工厂实时监控大屏(个人项目,开源 + 在线演示)
Vue3 + TypeScript + Pinia + ECharts + Canvas 构建的工业监控大屏:三屏路由轮播架构(Vue Router history 模式 + KeepAlive 缓存),Pinia 全局状态树驱动四类告警视图零同步呈现。自研 WebSocket 实时链路(心跳保活、退避重连、会话序号补传),Canvas 四层画布拓扑与 Vue 响应式通过显式桥契约共存(markRaw 隔离 + 脏检查重绘)。ECharts 按需引入与路由懒加载,首屏 gzip 200KB 内,全动效 55fps+ 长时零泄漏。项目由纯 TS 原生版重构而来,重构对比分析见博文。
每句话的弹药位(自查表)
| 简历句子 | 预期追问 | 弹药出处 |
|---|---|---|
| 三屏路由轮播 + KeepAlive | 为什么不 v-show?缓存失效怎么处理? | Day 78/82/84 三种架构对比数据 |
| Pinia 四类视图零同步 | 怎么做到的?状态设计? | Day 81/90 storeToRefs、告警全景 |
| 心跳/退避/序号补传 | 断线判定逻辑?补传怎么对齐? | Day 58-63 全链路 |
| 桥契约 + markRaw | Canvas 状态为什么不能进 Vue? | Day 85 裁决表 + 87 性能实测 |
| 脏检查重绘 | 拦下了多少?怎么量的? | Day 87 打点数据 |
| 首屏 200KB / 55fps | 怎么测的?优化手段优先级? | Day 93 对比表 |
| 原生版重构 | 为什么写两遍?学到什么? | Day 95 博文 |
二、原生版与 Vue 版的共存策略
2.1 决策:一条项目,两个阶段,一个演进故事
❌ 方案 A:两条项目并列
"大屏(原生 TS 版)" + "大屏(Vue 版)"
问题:HR 初筛会疑惑"怎么有两个一样的?",且单条深度被摊薄
❌ 方案 B:只写 Vue 版,隐藏原生版
问题:浪费了最有差异化的叙事(理解框架原理的证据)
✅ 方案 C(采用):一条条目,演进即亮点
主描述 Vue 版(当前形态);末句锚点"由原生版重构而来 + 博文链接"
面试讲开:重构过程 = 你对框架的 deepest 理解
2.2 仓库组织
my-study/
dashboard/ 原生版(README 里注明"Vue 版见 dashboard-vue")
dashboard-vue/ Vue 版(README"渊源"节指回原生版 + 博文)
两个仓库互链 + 各自可跑——面试官随手 clone 哪个都能活。
三、面试弹药库:十问十答
把散落 98 天的高频考点收进一份文档(docs/interview-ammo.md),十问十答的骨架:
Q1 大屏的适配方案?(1920 设计稿 → 任意分辨率)
→ transform scale 壳 + ref 驱动(Day 55/71);为什么不 rem/vw(等比 vs 重排)
Q2 实时数据的完整链路?断线怎么办?
→ WS → 心跳 → 退避重连 → 序号补传 → store 补窗(Day 58-63/81)
Q3 多屏数据一致性怎么保证?
→ 单一状态源(Pinia),四视图零同步(Day 81/90)
Q4 Canvas 和 Vue 怎么共存?(★ 拓扑必考)
→ 三问法则 + 裁决表 + 桥契约 + markRaw(Day 85-88 全链)
Q5 ECharts 性能优化做过什么?
→ 按需引入 / animation:false / 分频 / merge setOption(Day 53-56/93)
Q6 内存泄漏排查过哪些?
→ 订阅成对 / rAF 取消 / resize observer / 三快照法(Day 69/82/89)
Q7 KeepAlive 原理和使用场景?
→ 缓存实例 + 激活协议;对照 v-show/无缓存三种架构数据(Day 82/84)
Q8 Pinia 和 Vuex 的区别?为什么选 Pinia?
→ 组合式 / TS / 无 mutation;真话:手写 Store 后才懂为什么需要它(Day 80-81)
Q9 项目里最难的一个 bug?
→ 个人弹药位(候选:Day 69 泄漏排查 / Day 81 Map 深侦听 / Day 87 脏检查)
结构:现象 → 排查路径(二分定位)→ 根因 → 修法 → 沉淀
Q10 为什么先写原生版再重构 Vue 版?
→ 学习策略的诚实回答 + 对照实验的收获(Day 95 博文口述版)
弹药库纪律:每问答案控制在 2 分钟口述量;每答必带一个只有真做过的人才知道的细节(打点数字、坑的名字、复盘结论)。
四、模拟面试演练
4.1 三种演练方式(按可得分级)
青铜(自己来):对镜/录音,十问过一遍,回听找"嗯…啊…"和卡壳点
白银(AI 来):让 AI 扮演面试官连环追问(把 Q4 拓扑题追问到第三层)
黄金(真人来):找技术朋友视频模拟:15 分钟项目深挖 + 15 分钟基础八股
4.2 黄金局的评分表
□ 3 分钟项目介绍完整(背景/架构/亮点/结果四段式)
□ 追问到第三层没露怯(例:Q4 → markRaw 原理 → Proxy 成本 → 你的实测数据)
□ 至少一次主动给出量化数据(没等追问)
□ 承认了一个不知道的问题(诚实 + 给出排查思路,好于硬编)
□ 全程没有贬低任何技术/框架
五、常见坑点
坑 1:简历堆砌三周学的全部名词
Pinia/Router/KeepAlive/Teleport/markRaw/shallowRef 全塞进一句话——密度过高像抄的。一个条目最多 5 个技术点,其余留给追问空间。
坑 2:弹药答案背成文档腔
“通过组合式函数实现了逻辑复用”——没人这么说话。口述版要有人味:“我当时把翻牌器改成了 useRollingNumber,其实就是……”
坑 3:Q9(最难 bug)准备成炫技故事
面试官要的是排查过程不是结局。纯讲"我发现了 X 修好了"得零分;讲"现象诡异 → 我怎么二分 → 两次走错路 → 最后定位"得满分——走错路的部分是金子。
坑 4:在线演示链接失效
简历上的 URL 面试官当场打开是 404——每次投简历前 ping 一遍演示链接(部署平台的免费额度会休眠,提前访问唤醒)。
六、自测挑战
T1 · 简历与弹药库(60 分钟)
第一节条目定稿(自查表逐行核弹药位);第三节十问十答成文入 docs/interview-ammo.md。
T2 · 模拟面试(60 分钟)
至少完成白银级(AI 追问三层);有条件上黄金级,按 4.2 评分表互评。
T3 · 链接体检(10 分钟)
简历上所有 URL(演示站/博文/GitHub)逐一访问验证;免费托管平台的休眠策略记录在案。
七、总结
| 环节 | 要点 |
|---|---|
| 简历 | 一条条目 + 演进锚点——两个版本一个故事 |
| 弹药库 | 十问十答,每答带"真做过的细节" |
| 演练 | 黄金局评分表——追问到第三层不露怯 |
| Q9 结构 | 现象→二分→走错路→根因——走错路是金子 |
| 体检 | 链接活链 + 唤醒策略 |
求职装备就绪。明天做第 3 个月的毕业总结与作品链盘点。