返回笔记首页

前端面试准备清单

主题配置

这是一份完整的面试准备清单,帮助你系统地准备面试。

第一部分:面试前准备(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分钟)

模板:

plain
大家好,我是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...

使用建议

  1. 提前2周开始准备
    • 技术准备需要时间
    • 项目复习需要时间
    • 心态调整需要时间
  2. 每天准备1-2小时
    • 复习技术知识
    • 准备项目说明
    • 做模拟面试
  3. 找人模拟面试
    • 朋友或同事
    • 在线平台
    • 录音复盘
  4. 保持好的状态
    • 充足睡眠
    • 适当运动
    • 减少焦虑
  5. 面试是双向选择
    • 不要过于紧张
    • 展示真实的自己
    • 观察公司是否适合你

最后,祝你面试顺利,拿到理想的Offer