前端开发工程师(2027 届校招) · 杭州 · 本科
chenyiming@example.com · 136 0000 0000 · github.com/chenyiming · 掘金 @一鸣
个人优势
- 两段前端实习(电商商家中台、在线教育),能独立完成列表、表单和移动端 H5,改动会配单测和性能数据验证
- JavaScript 基础扎实,能讲清事件循环、原型链、闭包和 this 绑定,手写过 Promise、防抖节流、深拷贝等常见实现
- 读过 React 调度器(Scheduler)和 Vue 3 响应式部分的源码,写过一篇 Fiber 可中断渲染的分析文章,掘金阅读 1.4 万
- 维护开源虚拟滚动表格 react-virtual-table,GitHub 1.2k Star,处理过 40 多个 issue,熟悉 npm 包的构建、发布和语义化版本
- 做过性能优化的完整闭环:先用 Performance 面板和 Lighthouse 定位,再改,再用数据对比,实习中把订单列表首屏图片请求从 80 多个降到 30 个左右
- 熟悉移动端兼容问题,整理过 14 条 iOS / 安卓 WebView 的常见坑和解决方案,被实习团队收进新人文档
- 会写简单的 Node.js 服务,用 Koa + MySQL 给课程项目写过接口,能和后端顺畅对接口
- 习惯写测试和文档:实习期间给 20 多个工具函数补了 Vitest 单测,顺带发现了一个日期时区的线上问题
- 英语 CET-6,能直接阅读 React、Vite 的英文文档和 GitHub issue
- 技术栈:JavaScript、TypeScript、React 18、Vue 3、Zustand、Vite、Webpack、Vitest、Node.js(Koa)、MySQL
实习经历
某电商平台 · 商家中台前端实习生
所在团队负责商家后台(订单、商品、售后),日活商家约 8 万,技术栈 React 18 + TypeScript + Ant Design。
- 参与订单中心重构。原来订单列表、退款列表、发货列表 3 个页面各写了一套筛选表单,逻辑有出入,经常改一处漏两处;我把筛选项抽成配置(字段、组件类型、默认值、联动规则),封装
SearchForm组件统一渲染,后续新增筛选项只改配置 - 订单列表一页 200 行,每行最多 6 张商品图,首屏图片请求 80 多个,弱网下列表要转好几秒。改为 IntersectionObserver 懒加载,并给图片 URL 拼上 OSS 缩放参数按显示尺寸取图,首屏图片请求降到 30 个左右,图片总流量减少约 70%
- 给金额计算、日期格式化等 20 多个工具函数补了 Vitest 单测,过程中发现一个按 UTC 解析日期导致「下单时间少一天」的线上问题,修复后补了时区相关的用例
- 参与每周的 Code Review,整理了一份团队 React Hooks 常见问题清单(闭包拿到旧值、effect 依赖遗漏、列表 key 用 index 等),被组里拿来做新人文档
某在线教育公司 · 前端开发实习生
- 用 Vue 3 + Vite 开发课程报名 H5,负责报名表单、微信支付回跳和分享海报。海报用 html2canvas 生成,处理了跨域图片导致画布被污染、iOS 上生成的图片模糊(按 devicePixelRatio 放大绘制)两个问题
- 处理 iOS 软键盘弹起遮挡输入框、安卓 WebView 下
100vh包含地址栏导致底部按钮被挡等兼容问题,整理成团队的移动端兼容问题文档,共 14 条,每条附复现机型和解决方案 - 报名页转化埋点原来只有 PV,补上表单每一步的停留和放弃事件后发现「选择上课时间」一步流失最多,配合产品把时间选择改成默认推荐最近一期,报名转化提升约 8%
项目经历
react-virtual-table · 开源虚拟滚动表格
React / TypeScript / Rollup / Vitest
面向后台场景的高性能表格组件,支持 10 万行数据流畅滚动,npm 周下载量 3000 左右,GitHub 1.2k Star,被两家公司的内部项目使用。
- 动态行高:行高不固定时无法直接算出可视区起点。先用预估高度渲染,再用 ResizeObserver 回填真实高度,维护行高前缀和数组,滚动时二分查找起始行,查找复杂度 O(log n)
- 滚动不白屏:在可视区上下各多渲染一屏作为缓冲,快速拖动滚动条时用
requestAnimationFrame合并滚动事件,避免一帧内多次重排 - 固定列:左右固定列用
position: sticky实现,不再拆成三张表同步滚动,代码量和滚动抖动都少了很多 - 工程化:Rollup 同时输出 ESM 和 CJS,配置
exports字段和类型声明,支持 Tree Shaking;GitHub Actions 跑单测和体积检查,PR 体积增长超过 5% 会提示
在线协同白板(课程设计)
React / Canvas / WebSocket / Yjs
三人小组的课程设计,支持多人同时画图、移动和删除图形,我负责画布渲染和协同同步部分,课程评分 优秀。
- 用 Yjs 管理白板数据,多人同时修改同一个图形时由 CRDT 自动合并,不需要自己写冲突处理
- Canvas 分三层绘制(背景网格、图形、选中框),拖动图形时只重绘选中层和图形层,200 个图形下拖动保持 60fps
- 断线重连后用 Yjs 的状态向量只同步缺失的更新,不重新拉全量数据;在弱网模拟下断开 30 秒再恢复,画布内容能正确合并
校园跳蚤市场小程序
微信小程序 / 云开发 / TypeScript
和两位同学一起做的校内二手交易小程序,上线一学期注册用户 2600 多人,成交 900 多单。我负责前端和商品搜索。
- 商品列表图片多,低端机上滑动掉帧。用分页加载 + 图片按可视区懒加载,长列表超过 200 条时回收顶部节点,滑动基本不卡
- 发布商品时图片先在本地压缩到 1080 宽再上传,单张从 3~5MB 降到 300KB 左右,上传失败率明显下降
- 搜索在云函数里做分词和同义词扩展(如「自行车」「单车」),无结果率从约三成降到一成左右
教育经历
浙江工业大学 · 计算机科学与技术
- GPA 3.7 / 4.0,专业排名前 15%,两次获校级二等奖学金
- 主修课程:数据结构、操作系统、计算机网络、数据库原理、编译原理
- 浙江省大学生服务外包创新应用大赛二等奖(团队前端负责人)