求职意向:高级前端工程师 · 本科 · 8 年前端经验 · 杭州
138 0000 0000 · shenzhiyao@example.com · 个人主页 zhiyao.dev · github.com/shenzhiyao
React / Next.js / TypeScript / Vue3 / Node.js / 小程序 / 微前端 / WebGL
工作经历
某出行科技公司 · 高级前端工程师
React 18 / Next.js 14 / TypeScript / Zustand / Mapbox GL / pnpm Monorepo
- 负责司机端 H5、调度后台和运营大屏三条产品线的前端,带 6 人小组,季度需求交付率保持在 95% 以上
- 主导司机端离线优先改造:页面资源和订单数据走 Service Worker + IndexedDB,地下车库、隧道等弱网场景下接单失败率从 7.8% 降到 1.2%
- 把三条产品线的 9 个仓库合并为 pnpm Monorepo,抽出地图、权限、埋点三个公共包,新页面的平均开发周期从 5 天缩到 3 天
- 搭建前端监控:错误、白屏、接口耗时按页面和版本聚合,接入企业微信告警,线上 P1 问题的平均发现时间从 40 分钟缩到 6 分钟
某跨境电商 SaaS 公司 · 前端工程师
Vue3 / Vite / TypeScript / qiankun / Node.js / Koa
- 负责商家后台和店铺装修编辑器,服务约 2 万家中小商家
- 用 qiankun 把商家后台拆成订单、商品、营销、数据 4 个子应用,由不同小组独立发布,每周发布次数从 1 次变成 6~8 次
- 用 Koa 写了商家后台的 BFF 层,合并首页的 11 个接口为 2 个,首页可交互时间从 3.6s 降到 1.9s
- 把构建从 Webpack 4 迁到 Vite,本地冷启动从 70 秒降到 4 秒,热更新基本在 200ms 以内
某在线教育公司 · 前端工程师
React / Redux / 微信小程序 / Canvas
- 负责学生端小程序和直播课互动组件,日活约 8 万
- 用 Canvas 重写直播课的白板组件,解决低端安卓机上笔迹延迟明显的问题,绘制帧率从 20 帧左右提到稳定 55 帧以上
- 小程序做分包和按需注入,主包从 1.9MB 降到 1.1MB,首屏打开时间缩短约 0.8 秒
项目经历
跨境店铺装修编辑器
项目概述:商家用拖拽的方式装修自己的独立站首页和活动页,发布后生成静态页面部署到海外 CDN。上线前商家改一次首页要提工单等运营处理,平均 2 天。
技术栈:Vue3、TypeScript、Pinia、Vite、Node.js、Puppeteer
编辑器架构
- 组件协议:每个组件声明属性 Schema 和默认值,编辑器按 Schema 自动生成配置面板,新增一个组件不用改编辑器代码,目前组件库有 64 个组件
- 画布放进 iframe,商家主题的全局样式不会污染编辑器界面;主窗口和画布之间用 postMessage 同步选中状态和配置
- 撤销重做基于命令模式,每次修改记录一条可逆操作,连续拖动同一个组件合并成一条,内存占用稳定
发布与性能
- 发布时用 Puppeteer 把页面预渲染成静态 HTML,图片按视口宽度生成 3 档尺寸,海外访问的 LCP 中位数从 3.1s 降到 1.4s
- 上线后商家自助装修占到 83%,运营装修工单每月减少约 900 单
司机端离线优先 PWA
项目概述:司机端 H5 在地下车库、隧道里经常断网,抢单和到达确认会失败,引起投诉。目标是断网时也能完成接单流程,联网后自动补发。
技术栈:Next.js、TypeScript、Workbox、IndexedDB、Web Worker
- 页面外壳和静态资源用 Workbox 预缓存,订单列表走「先缓存后网络」,断网时页面照常打开
- 司机的操作先写入 IndexedDB 队列,联网后由 Web Worker 按顺序补发;和服务端状态冲突时以服务端为准,并在页面上提示司机
- 灰度两周后全量,弱网相关的投诉从每周 60 多条降到 10 条以内
运营调度大屏
项目概述:调度员在一块 4K 大屏上看全城车辆分布和订单热力,每秒约 3000 个车辆位置更新。原方案用 DOM 标点,车多时整页卡死。
技术栈:React、Mapbox GL、deck.gl、WebSocket、Web Worker
- 车辆点位改用 deck.gl 的 WebGL 图层绘制,位置数据在 Web Worker 里解包和插值,主线程只做渲染,1 万个点位下保持 50 帧以上
- WebSocket 消息改为二进制格式并按 200ms 合帧,带宽占用降到原来的三分之一
- 大屏连续运行 72 小时内存平稳,解决了原来每天要重启一次的问题
个人优势
- 8 年前端经验,其中 4 年带 5~8 人的小组,负责过 C 端、B 端和数据可视化三类产品的前端架构
- 熟悉 React 和 Vue3 的渲染机制,排查过多起由 Fiber 调度、响应式依赖收集引起的性能问题
- 做过三次工程体系迁移:Webpack 到 Vite、多仓库到 pnpm Monorepo、手工发布到 GitLab CI 灰度发布
- 有离线优先应用的完整经验:Service Worker 缓存策略、IndexedDB 数据同步、弱网下的冲突合并
- 能独立完成 Node.js BFF 的接口聚合、鉴权和部署,和后端约定过两套接口规范并推行到全部门
- AI 辅助开发:团队内推行 Cursor 和 Claude Code 写测试、做代码评审预检,单测覆盖率从 31% 提到 64%
- 地图和大屏可视化有深度经验:deck.gl WebGL 图层、Web Worker 解包插值,1 万个点位下保持 50 帧以上
- 做过微前端拆分,用 qiankun 把商家后台拆成 4 个子应用,各小组独立发布,每周发布从 1 次变成 6~8 次
- 建过前端监控和告警,错误、白屏、接口耗时按页面和版本聚合,P1 问题平均发现时间从 40 分钟缩到 6 分钟
- 带人注重方法:新人入职有任务清单和结对周,组内每两周一次技术分享,近两年带出 2 名独立负责模块的同学