这是一份完整的面试准备清单,帮助你系统地准备面试。
第一部分:面试前准备(1-2周)
✅ 简历优化
[ ] 检查简历内容
- 每个项目都有明确的规模数据(用户量/数据量/访问量)
- 每个项目都有技术难点和解决方案
- 每个项目都有量化的效果(性能提升XX%/效率提升XX%)
- 技术栈和目标岗位匹配
- 没有错别字和格式问题
- 联系方式正确
[ ] 准备简历的不同版本
- PDF版本(投递用)
- Word版本(备用)
- 在线版本(个人网站/GitHub)
[ ] 准备项目说明文档
- 每个项目的详细说明(给自己看,面试前复习)
- 项目的技术架构图
- 项目的核心代码片段
- 项目的效果数据
✅ 技术准备
[ ] JavaScript基础
- 数据类型和类型转换
- 作用域和闭包
- 原型和原型链
- this指向
- 异步编程(Promise、async/await、事件循环)
- 常用API(数组、对象、字符串)
[ ] 框架原理(Vue/React)
- 响应式原理/数据流
- 虚拟DOM和diff算法
- 组件化和生命周期
- 状态管理(Vuex/Pinia/Redux)
- 路由原理
[ ] CSS
- 盒模型
- 布局(Flex、Grid、定位)
- BFC
- 优先级和继承
- 常见布局方案
[ ] 浏览器
- 从URL输入到页面渲染
- 缓存机制
- 跨域和解决方案
- 存储(Cookie、LocalStorage、SessionStorage)
- 性能优化
[ ] 工程化
- Webpack/Vite原理和配置
- Babel原理
- 模块化(ESM、CommonJS)
- 前端监控
- CI/CD基础
[ ] 算法(根据公司要求)
- 数组相关(排序、去重、扁平化)
- 字符串相关(反转、查找)
- 树的遍历(深度优先、广度优先)
- 常用排序算法
- 动态规划(基础题)
✅ 项目准备
[ ] 复习简历上的每个项目
对每个项目,准备好这些问题的答案:
基本信息
- 项目的背景和目标是什么?
- 项目的规模有多大?(用户量/数据量/访问量)
- 你在项目中的角色是什么?
- 团队有多少人?你负责哪部分?
技术细节
- 技术栈是什么?为什么选择这些技术?
- 系统架构是怎样的?(画个架构图)
- 核心模块有哪些?分别是怎么实现的?
- 用到了哪些设计模式?
技术难点
- 遇到的最大技术难点是什么?
- 这个难点为什么难?
- 你是怎么解决的?
- 有没有其他方案?为什么选择当前方案?
- 解决后的效果如何?(要有数据)
性能优化
- 做过哪些性能优化?
- 优化前后的数据对比?(首屏时间/包体积/Lighthouse分数)
- 如何定位性能瓶颈?
- 还有哪些可以优化的空间?
工程化
- 项目的工程化建设有哪些?
- 代码规范如何保证?
- 如何做代码质量检查?
- 如何做自动化部署?
业务价值
- 这个项目解决了什么业务问题?
- 给公司/用户带来了什么价值?
- 有什么业务数据支撑?(转化率/留存率/收入)
反思和改进
- 如果重新做这个项目,你会怎么改进?
- 有什么遗憾或者不足?
- 从这个项目中学到了什么?
✅ 行为面试准备
[ ] 准备自我介绍(1-3分钟)
模板:
大家好,我是XX,有X年前端开发经验。
我最近在XX公司,主要负责XX项目,这个项目的规模是XX(用户量/数据量)。
我在项目中主要负责XX模块的开发和优化,遇到的最大挑战是XX,通过XX方案解决了。
最终效果是XX(性能提升/业务增长)。
在这个项目中,我主要的收获是:
1. 技术上,深入了解了XX
2. 业务上,理解了XX
3. 协作上,学会了XX
我擅长XX技术,对XX有深入研究。未来希望在XX方向继续深入。
所以我对贵公司的XX岗位很感兴趣,希望能有机会加入团队。
[ ] 准备常见问题的答案
- 为什么离职?/为什么想换工作?
- 你的优点和缺点是什么?
- 你遇到的最大挑战是什么?如何解决的?
- 你和同事/leader有冲突时如何处理?
- 你如何保持技术学习?
- 你的职业规划是什么?
- 为什么选择我们公司?
- 你有什么想问我的?
✅ 公司背景调查
[ ] 研究目标公司
- 公司的主营业务是什么?
- 公司的产品有哪些?
- 公司的技术栈是什么?(查招聘信息/技术博客)
- 公司的规模和发展阶段?
- 公司的融资情况?(如果是创业公司)
- 公司的评价如何?(脉脉/看准网)
[ ] 研究岗位要求
- JD里的技术要求是什么?
- 哪些是必须的?哪些是加分项?
- 我的简历和岗位要求的匹配度如何?
- 我需要重点准备哪些技术?
[ ] 准备针对性的问题
- 这个岗位主要负责什么业务?
- 团队的技术栈是什么?
- 团队有多少人?
- 团队的工作方式是怎样的?
- 公司对这个岗位的期待是什么?
第二部分:面试中(1-2小时)
✅ 技术面试
[ ] 回答技术问题的策略
- 听清楚问题,不确定的可以问
- 先说核心概念,再说细节
- 结合实际项目经验
- 遇到不会的,用AAA法则(承认-尝试-求教)
[ ] 写代码的策略
- 先理解题目,确认输入输出
- 说明解题思路,再开始写
- 考虑边界情况
- 写完后测试和优化
- 说明时间复杂度和空间复杂度
[ ] 系统设计的策略
- 先澄清需求(CPARS法则)
- 说明整体架构
- 深入技术细节
- 考虑边界情况
- 总结方案
✅ 行为面试
[ ] STAR法则
- S (Situation): 背景
- T (Task): 任务
- A (Action): 行动
- R (Result): 结果
[ ] 注意事项
- 真诚,不要编故事
- 具体,不要泛泛而谈
- 积极,不要抱怨前公司
- 反思,说明你的成长
✅ HR面试
[ ] 准备薪资谈判
- 了解市场行情
- 知道自己的期望薪资范围
- 准备好薪资的理由(能力/经验/市场)
- 不要第一时间报价,先问对方预算
[ ] 准备其他问题
- 福利待遇(五险一金/年终奖/调薪/股权)
- 工作时间(加班情况/弹性工作)
- 入职时间(越早越好,但不要太急)
- 公司文化和氛围
第三部分:面试后(1-3天)
✅ 复盘
[ ] 面试表现复盘
- 哪些问题答得好?
- 哪些问题答得不好?
- 哪些技术需要补充?
- 下次面试如何改进?
[ ] 记录面试情况
- 公司名称和岗位
- 面试官是谁(职位)
- 问了哪些问题
- 自己的表现
- 面试官的反馈
- 下一轮面试时间
[ ] 及时跟进
- 如果感兴趣,发感谢邮件
- 询问面试结果和下一步流程
- 保持联系,但不要催太急
✅ Offer评估
[ ] 用Offer判断模型评估
- 薪资得分(基本工资/年终奖/涨幅预期)
- 成长得分(技术栈/项目复杂度/晋升空间)
- 风险得分(公司稳定性/岗位稳定性/个人适配)
[ ] 综合考虑
- 短期收益(薪资/福利)
- 长期价值(成长/平台)
- 个人情况(家庭/健康/生活)
[ ] 做出决策
- 列出优缺点
- 和重要的人商量
- 相信自己的判断
- 做出选择后不后悔
附录:常见问题速查
JavaScript
Q: 说说闭包 A: 函数能访问外部作用域的变量...实际应用:事件监听、模块化...要注意内存泄漏...
Q: 说说原型链 A: 每个对象都有原型,原型链是查找属性的机制...ES6的class是语法糖...
Q: 说说事件循环 A: JS是单线程,通过事件循环处理异步...宏任务和微任务的区别...
Vue/React
Q: Vue的响应式原理 A: Vue2用Object.defineProperty,Vue3用Proxy...依赖收集和触发更新...
Q: 虚拟DOM的作用 A: 用JS对象描述DOM,通过diff算法找差异...性能不是绝对的,要看场景...
Q: 组件间通信 A: props/emit、provide/inject、EventBus、Vuex/Pinia...不同场景用不同方案...
性能优化
Q: 如何优化首屏加载 A: 资源优化(压缩、懒加载)、代码优化(分割、tree-shaking)、渲染优化(SSR、骨架屏)...
Q: 如何优化列表性能 A: 虚拟滚动、分页加载、防抖节流、减少重排重绘...
工程化
Q: Webpack和Vite的区别 A: 打包方式不同(bundle vs ESM)、开发体验不同、适用场景不同...
Q: 如何做代码质量保证 A: ESLint、Prettier、TypeScript、单元测试、Code Review...
使用建议
- 提前2周开始准备
- 技术准备需要时间
- 项目复习需要时间
- 心态调整需要时间
- 每天准备1-2小时
- 复习技术知识
- 准备项目说明
- 做模拟面试
- 找人模拟面试
- 朋友或同事
- 在线平台
- 录音复盘
- 保持好的状态
- 充足睡眠
- 适当运动
- 减少焦虑
- 面试是双向选择
- 不要过于紧张
- 展示真实的自己
- 观察公司是否适合你