1. 自我介绍
面试官您好,我叫黄耀祖,本科软件工程专业,主要从事前端开发工作,目前有 7 年左右前端开发经验。
我的技术栈主要集中在 Vue2/Vue3、React、TypeScript、Vite/Webpack、Axios、MobX/Pinia/Vuex 等方向,做过企业级后台管理系统、C 端 H5、移动端适配、小程序以及数据可视化大屏项目。
最近几年我主要参与账号业务和 AI 权益订阅类项目,负责过登录授权、实名认证、账号安全、订单权益、支付订阅等核心业务模块。除了业务开发,我也参与过前端工程化搭建、通用组件封装、请求层封装、权限路由、性能优化、线上问题排查等工作。
我个人比较突出的优势是:一方面能够独立负责复杂业务模块从需求评审、方案设计到开发上线的完整流程;另一方面比较重视工程化、组件复用和代码质量,也会结合 AI 工具提升开发效率,但不会完全依赖 AI,会重点关注代码可维护性、边界场景和线上稳定性。
2. 简历工作内容复盘
面试官如果围绕工作经历提问,可以这样回答:
我在德科信息这段工作中,主要负责企业级后台系统、移动端 H5 和账号相关业务模块开发。日常工作会从需求评审开始,和产品、后端、测试确认业务流程、接口字段、异常场景和交互细节,然后根据 UI 设计稿完成页面开发、组件封装、接口联调、状态管理和多端适配。
在项目中我做得比较多的是三类事情:
第一类是业务模块开发,比如账号登录授权、实名认证、核身流程、账号安全、儿童账号、手机号管理等。这类业务链路比较长,异常状态比较多,我会先梳理流程图和状态分支,再拆分页面组件、业务 Hook、接口层和状态管理,保证主流程和异常流程都能闭环。
第二类是工程化和公共能力建设,比如封装请求拦截器、统一错误处理、路由权限、登录态处理、通用表单、弹窗、上传、表格、核身流程组件等。这样可以减少重复代码,也方便团队后续复用。
第三类是性能优化和线上问题排查,比如通过路由懒加载、代码分包、资源压缩、图片优化、缓存策略、减少无效渲染等方式优化首屏加载和页面卡顿问题。线上出现问题时,我会通过错误日志、接口返回、浏览器控制台、Network、Source Map、用户操作路径等方式定位问题。
在中电金信阶段,我主要做 PC 官网、营销 H5、后台管理系统基础页面和数据可视化大屏,积累了比较扎实的页面开发、移动端适配、ECharts 图表封装、权限路由和后台系统开发经验。
3. 项目经验分享
如果面试官让你介绍项目,建议优先讲账号业务项目,因为它最核心、最有深度。
可以这样说:
我重点介绍一下最近参与的账号业务项目。这个项目是公司内部统一账号业务平台,主要覆盖登录授权、实名认证、人脸核身、设备绑定、手机号管理、账号冻结解冻、密码找回、儿童账号等账号生命周期能力,为多个业务线提供统一账号服务。
我在项目中主要承担前端核心模块开发和公共能力建设的角色。技术栈主要是 React + TypeScript + Vite + MobX + Axios + Monorepo,后台部分也有 Vue3 模块。
我主要做了几方面工作:
第一,参与 Monorepo 工程化建设。项目里有多个子应用和公共包,我参与统一构建配置、环境变量管理、代码规范、公共请求层、路由权限和基础组件封装,保证不同业务模块可以复用统一能力。
第二,负责核心账号业务模块开发。比如登录授权、实名核身、账号安全、儿童账号等模块,这些模块共同特点是流程长、状态多、异常分支多。开发时我会先拆解业务流程,比如成功、失败、超时、用户取消、接口异常、风控拦截、信息缺失等状态,然后再设计页面组件和状态管理逻辑。
第三,封装通用业务组件。比如身份验证表单、验证码输入、核身流程组件、账号状态展示、统一错误提示、请求异常处理等,减少不同模块重复实现。
第四,参与性能优化和线上问题排查。项目中通过路由懒加载、按需加载、资源压缩、接口缓存、减少重复请求、组件拆分等方式优化首屏性能和页面卡顿问题。
这个项目给我最大的收获是:前端不只是页面实现,更重要的是把复杂业务流程拆清楚,把公共能力沉淀好,同时保证多端体验、异常处理和线上稳定性。
如果想讲第二个项目,可以讲云服务 AI 权益项目:
这个项目是面向 C 端用户的 AI 权益订阅平台,包含 AI 功能展示、权益选购、订阅开通、订单管理和权益使用等链路。我主要负责权益中心、订阅支付流程、订单权益管理、AI 功能使用页等模块开发。
技术上使用 React + TypeScript + Next.js + Axios,项目中用到 SSR 来优化 C 端页面首屏加载和 SEO 表现。我主要负责页面开发、状态管理、接口联调、响应式适配、公共组件封装以及异常处理。比如支付订阅流程中会涉及订单创建、支付状态轮询、失败重试、权益刷新等状态,我会把这些状态抽象成清晰的业务流程,避免页面逻辑混乱。
4. 技术提问准备
常用工具怎么回答
工作中常用的工具主要有这些:
Git:用于版本管理和多人协作。我平时会基于功能分支开发,通过 Merge Request 或 Pull Request 合并代码,遇到冲突会先确认双方改动意图,再手动解决,避免覆盖别人的代码。
Vite / Webpack:用于项目构建、开发服务、打包优化。Vite 在开发阶段启动快,适合现代前端项目;Webpack 配置能力强,适合复杂工程场景。优化时会关注代码分包、按需加载、Tree Shaking、资源压缩、别名配置、环境变量等。
Axios:用于接口请求封装。一般会封装请求实例、统一 baseURL、请求拦截器、响应拦截器、token 注入、错误码处理、重复请求处理、登录失效跳转等。
ESLint / Prettier:用于统一代码规范,减少团队协作中的格式差异。
Chrome DevTools:用于调试页面、查看接口、性能分析、内存分析、移动端模拟、定位样式和渲染问题。
Cursor / ClaudeCode / ChatGPT:用于辅助需求拆解、代码生成、单测生成、问题排查和重构建议。但我会对 AI 生成代码做人工 Review,重点检查类型、边界条件、业务逻辑和可维护性。
可能被深入问到的问题
问:React Hooks 使用中遇到过什么问题?
可以答:
常见问题是闭包陷阱、依赖数组不完整、重复渲染、状态更新不及时。比如 useEffect 依赖遗漏时,页面可能拿到旧状态。我一般会通过补全依赖、使用 useMemo/useCallback 缓存函数和数据、必要时用 useRef 保存最新值来解决。同时也会避免过度使用 useMemo,只在确实存在性能问题或引用稳定性要求时使用。
问:你是怎么做性能优化的?
可以答:
我一般会从加载性能和运行时性能两方面入手。加载性能包括路由懒加载、组件按需加载、代码分包、图片压缩、CDN、缓存、减少首屏接口数量。运行时性能包括减少不必要渲染、长列表虚拟滚动、合理拆分组件、避免重复计算、ECharts 图表按需更新等。优化前我会先通过 Performance、Network 或打包分析工具定位瓶颈,再针对性处理。
问:Monorepo 的优势是什么?
可以答:
Monorepo 适合多应用、多公共包的项目。优势是可以统一依赖、统一规范、复用公共组件和工具方法,也方便跨项目联调和版本管理。比如账号业务中多个子应用可以共享请求层、组件库、类型定义和工具函数,减少重复维护成本。但 Monorepo 也要注意依赖边界、构建速度和包之间的职责划分。
问:Axios 封装一般怎么做?
可以答:
我通常会创建统一请求实例,配置 baseURL、超时时间、请求头。请求拦截器里处理 token、语言、设备信息等公共参数;响应拦截器里统一处理业务错误码、登录失效、接口异常提示。对于特殊接口,可以通过配置项控制是否展示错误提示、是否需要鉴权、是否需要重复请求拦截。
问:项目中遇到过什么困难,怎么解决?
可以答:
账号业务项目中比较大的困难是流程复杂,异常分支多,比如实名核身可能涉及认证成功、认证失败、用户取消、风控拦截、接口超时、信息不一致等情况。如果直接写在页面里,逻辑会很乱。
我的处理方式是先把业务流程拆成状态机式的节点,再把接口请求、状态流转、页面展示拆开。页面只关注当前状态展示,业务逻辑统一封装到 Hook 或 Store 中,公共流程再沉淀成组件。这样后续新增场景时,只需要扩展状态和分支,不会影响主流程。
面试结束时可以反问的问题
建议准备 1-2 个专业一点的问题:
- 贵团队目前前端项目的技术栈和工程化体系是怎样的?比如是否有统一组件库、Monorepo、CI/CD、代码规范和自动化测试流程?
- 这个岗位入职后主要负责哪类业务?更偏业务功能迭代,还是会涉及前端架构、性能优化、组件库建设等工程化方向?
这两个问题比较专业,也能体现你关注团队协作、工程质量和岗位匹配度。