
- 姓名: 张思涵
- 性别: 男
- 学历: 本科
- 生日: 1999年12月10日
- 意向: 前端开发工程师
- 绩点:3.8 / 4.0
- 排名:前10%
- 奖项:校级三好学生 / 校级二等奖学金 / 优秀毕业生 / 校运会羽毛球男子团体第一名成员
- 主修课程:Java / 数据库 / Linux / 安卓开发 / 计算机网络 / 软件测试 / 操作系统 / 需求工程 / 网页开发 / 数据结构与算法
- 备注:在校期间曾担任学习委员职位。
- 软考中级网络工程师
- 计算机4级(网络工程师)
- 大学英语4级
- 日语N3
- 宁夏回族自治区全区运动会羽毛球男子团体第7名成员
江苏巨泽科技有限公司
前端开发工程师 2021年12月 - 2022年5月- 1. 负责了电商项目“带响儿”的前端开发,该项目包括供商家使用的后台管理系统以及供用户使用的移动端应用。项目技术栈为Vue2和React Native。
- 2. 参与了健身项目“魔镜”的前端开发,该项目包括供运营人员使用的后台管理系统以及供用户使用的在智能健身器材上运行的安卓应用。项目技术栈为Vue3和React Native。我主要负责使用Java(原生安卓)通过串口通信对接智能健身器材硬件,获取用户的拉力数据并将数据传输给React Native,最后将数据通过图表的方式实时、流畅地渲染在智能健身器材的屏幕上。
- 1. 负责了电商项目“职芽福利校园”的前端开发,该项目包括供用户使用的微信小程序、面试亭内的安卓平板应用和供运营人员和商户使用的后台管理系统。项目技术栈为Vue2、React Native和原生微信小程序。
- 2. 负责了工具项目“职芽小帮手”的前端开发,该项目的平台为网页,技术栈为React,主要供公司内部的开发人员和部分运营人员使用,由我个人发起。
带响儿
生产项目 电商类
- 简介:该项目包括供商家使用的后台管理系统以及供用户使用的移动端应用。
- 我的角色:前端开发工程师
- 主要技术栈:
- 后端:C# / .NET / MySQL
- 前端:Vue Cli / JavaScript / Vue2 / Less / Vuex / Vue Router / Axios / Element UI / React Native / UniApp
- 亮点:移动应用端前期使用的跨端技术是UniApp,后期在需要接入原生广告SDK时遇到瓶颈,因为更换技术栈重新开发的时间/人力成本过于巨大,所以选择将之前的UniApp应用打包为原生HTML5+CSS3+JavaScript,并将打包后的产物在React Native中使用WebView组件进行渲染。虽然商品海报下载等功能还需要额外写一些桥接代码,但这种做法已然大幅降低了技术栈迁移成本。
- 难点:在iOS端接入原生广告SDK时,从未接触过原生iOS应用开发的我发现iOS应用原生开发语言是Objective-C,我从未接触过这门语言,并且这门语言的语法和我所接触过的编程语言(C-like)的都截然不同。于是我不得不投入大量精力进行学习,最终才实现了需求,这段经历很好地锻炼了我的学习能力和抗压能力。
职芽福利校园
生产项目 电商类
- 简介:该项目包括供用户使用的微信小程序、面试亭内的安卓平板应用和供运营人员和商户使用的后台管理系统。(小程序可在微信小程序内搜索到)
- 我的角色:前端开发工程师
- 主要技术栈:
- 后端:PHP / Laravel / MySQL
- 前端:Rsbuild / JavaScript / TypeScript / Vue2 / Scss / Vuex / Vue Router / Axios / Element UI / Echarts / VueDraggablePlus / 原生微信小程序
- 亮点:该项目原本的技术栈是Vue Cli+Vue2.6+Javascript,被我改造为Rsbuild+Vue2.7+Javascript+Typescript,并替换了大部分CJS,统一使用ESM,并且引入了路径别名。后期新模块的开发统一使用composition api+setup写法进行开发(逻辑较为复杂的组件使用tsx写法)。改造后,项目的开发服务的启动时间由之前的3-4分钟缩减到了30-40秒(CPU为AMD 锐龙5 4600U),改造后的项目已然是一个现代化的前端项目。
- 难点:对项目进行了“组件化”改造(实现了类似低代码的效果),目前小程序端的主要页面均为“组件化”的,运营人员能够在后台管理平台端进行拖拽和参数设置实现对应的页面配置(项目目前大概包括15种组件和20种跳转方式),且对各种组件的点击事件进行了埋点操作并在后台管理端进行了数据展示。在开发该功能时,如何抽象“组件”一度让我有些迷茫,因为之前从未开发过类似的逻辑。经过思考和设计,我定义了每种组件的唯一type值,使用Vue内置的component组件加打表法完成了页面组件的开发,之后的工作就是开发每个子组件,我设计了统一的props和events实现了子组件和页面组件的数据的双向绑定。“组件化”功能上线至今没有遇到bug反馈,而且上线不久后接到了给每个组件添加一个是否隐藏的字段的需求,得益于良好的设计,很快就完成了该需求。
职芽小帮手
生产项目 工具类
- 简介:该项目是一个纯网页应用,技术栈为React,主要供公司内部的开发人员和部分运营人员使用,由我个人发起。
- 主要技术栈:
- Bun / Vite / TypeScript / React / Tailwind / Tanstack Router / Axios / Shadcn UI / Nuqs / Excel.js
- 亮点:通过这个项目,我实践了目前热度非常高的Shadcn UI和Tanstack Router。该项目提升了公司内部的开发人员和部分运营人员的工作效率和工作体验。
- 难点:由于项目提供了快速生成微信小程序码和链接的功能,所以需要展示小程序所有的路由,这在一定程度上属于隐私信息,部署在公网上会有一定安全风险。于是在Github上寻找解决方案,最终找到了staticrypt这个仓库,配合vite-plugin-singlefile实现了纯前端的加密功能。
Nothing
个人项目
- 简介:该项目是一个支持字符串、布尔值、整型、算术运算、函数、高阶函数、变量绑定和闭包的解释型编程语言。
- 主要技术栈:
- 亮点:通过这个项目,我完整实践了词法分析器、语法分析器和求值器的开发。项目使用了测试驱动开发(TDD)的开发方法进行开发,一定程度上保证了项目的稳定性和健壮性。项目使用的技术栈和工具链比较新颖,我选择了TypeScript作为开发语言,Bun作为运行时,得益于Bun,我可以将项目快速打包为一个可执行程序以供分发。
- 难点:闭包的实现一度令我困扰,最终的解决方案是给每一个类型为函数的对象绑定一个环境对象,环境对象中除了存放函数参数的map之外,还有一个外层环境成员,函数运行时遇到变量时优先从自身的环境中获取,获取不到再去外层环境获取,直至拿到变量的值或者最外层环境为null。打个不太恰当的比方,这种机制有些类似JavaScript中的原型链。
前端开发
- 熟练掌握HTML5、CSS3、JavaScript/TypeScript和Tailwind等前端基础知识/工具。
- 熟练掌握Vue2/3和React,能够高效开发高度还原设计稿的响应式SPA应用。
- 熟练掌握Next.js和Astro等SSR/SSG框架,能够高效开发SEO友好、高度还原设计稿的响应式静态页面或全栈应用。
- 熟练掌握React Native和UniApp等跨端技术,能够高效开发跨平台移动应用程序。
- 熟练掌握Eslint、Prettier和Biome的配置和使用,能够利用它们有效地保证代码的质量和可维护性。
- 熟悉Electron和Tauri等跨端技术,能够高效开发跨平台桌面应用程序。
- 熟悉Vite和Rsbuild等构建工具的配置和使用。
- 熟悉React Scan和Unlighthouse等性能测试工具的使用。
- 熟悉Jest和Puppeteer等测试框架/工具的使用,能够高效编写单元测试和E2E测试。
- 对2D渲染引擎Matter.js和3D渲染引擎Three.js有基本了解和实践。
- 对动画库GSAP和Motion有基本了解和实践。
- 对monorepo有基本了解和实践,能够使用pnpm或Bun快速搭建monorepo项目。
- 对浏览器扩展开发有基本了解和实践。
后端开发
- 熟练掌握JavaScript/TypeScript,能够使用Nest、Hono等框架构建高效的后端服务。
- 熟悉非关系型数据库MongoDB、Redis和关系型数据库MySQL。
- 熟悉Java,能够使用Spring Boot框架构建高效的后端服务。
- 熟悉MyBatis-Plus、TypeORM和Drizzle等ORM库的使用。
- 对Spring Cloud Alibaba生态系统有基本了解和实践。
- 对消息队列RabbitMQ有基本了解和实践。
其他
- 熟练掌握ChatGPT、Cursor和V0等AI工具的使用,能够利用它们提升开发效率和开发体验。
- 熟悉Docker,能够使用Docker进行应用的构建和部署,对Kubernetes有基本了解和实践。
- 熟悉Git操作,有着良好的提交规范(目前主要使用commitizen),曾向Planka项目和Astro的文档项目提交过PR并得到合并。
- 对构建用户界面有自己的看法和理解,能够在需求评审会上提出自己的修改/优化意见。
我热爱编程与开源,拥有扎实的编程基础和良好的编码规范,具备开发复杂系统的能力。我喜欢通过代码解决实际问题,并且始终保持对技术的热情和追求。我渴望在前端开发领域不断学习和成长,愿意接受挑战,努力提升自己的技术水平。
我希望能够成长为像antfu和Dan Abramov那样的开发者,既有扎实的技术能力,又能积极参与社区,推动开源项目发展。我正在寻找一个充满活力和创造力的团队,期待与团队一起共同努力,推动公司的发展,并实现更高水平的技术突破。