一、网络与浏览器原理
1.1 HTTP相关
- HTTP状态码详解 :301/302/304/401/403/404/500等状态码的含义及适用场景
- GET与POST的区别 :从语义、安全性、参数传递、缓存机制等多维度分析
- HTTP/1.1、HTTP/2、HTTP/3的演进 :多路复用、头部压缩、服务器推送、QUIC协议等
- HTTPS的加密原理 :TLS/SSL握手过程、证书体系、中间人攻击防护
- 浏览器的同源策略 :定义、目的及如何处理跨域问题
- tcp三次握手,四次挥手
- dns解析过程大概是什么样的
- 请问什么是跨域?跨域请求资源有几哪种方式?
- cookie 和 session的概念(cookie怎么防止CSRF攻击)
1.2 浏览器原理
- 浏览器的事件循环机制 :宏任务与微任务的执行顺序、异步编程模型
- 浏览器缓存策略 :强制缓存、协商缓存、Service Worker缓存
- 浏览器存储机制比较 :Cookie、LocalStorage、SessionStorage、IndexedDB
- 浏览器的多进程架构 :渲染进程、浏览器进程、GPU进程等职责分工
- Web Worker与Service Worker :使用场景与区别
- 输入url 到渲染的过程(有什么手段可以缩短这整个过程吗)
- 盒模型
- 重绘重排区别,什么情况引起?
- 浏览器请求数量限制了解吗?
二、JavaScript核心
2.1 基础概念
- 闭包的原理与应用 :定义、内存泄漏问题、实际应用场景
- 原型与原型链 :原型对象、继承机制、
__proto__与prototype区别 - this指向问题 :普通函数、箭头函数、构造函数中的this指向
- Promise的实现原理 :状态管理、链式调用、错误处理
- ES6新特性 :let/const、解构赋值、箭头函数、async/await等
- js基本数据类型有哪些(基本不问)
- == 和 ===的区别,分别在什么情况下使用(基本不问)
- typeof 与 instanceof 区别(基本不问)
- 如何判断一个对象是否是数组(基本不问)
- 普通函数和箭头函数区别有哪些(基本不问)
- 事件委托(事件冒泡和捕获)(基本不问)
2.2 高级特性
- 深浅拷贝的实现 :深拷贝与浅拷贝的区别、实现方法及性能考量
- 防抖与节流 :实现原理、区别及应用场景
- 垃圾回收机制 :标记清除、引用计数、内存泄漏防范
- 模块化开发 :CommonJS、ES Module、AMD/CMD的区别
- 设计模式在前端的应用 :单例模式、工厂模式、观察者模式等
- 什么是闭包,解决什么问题
- js垃圾回收机制大概是什么样的(大概了解就行)
- 前端常见的内存泄露有哪些
2.3 异步编程(高频)
- Promise执行顺序分析 :async、await执行机制
- promise限制并发数和promise串行请求题目
三、CSS与布局
3.1 布局技术
- Flexbox布局详解 :容器属性与项目属性、常见布局实现
- Grid布局 :二维网格系统、区域划分、响应式设计
- 盒模型 :标准盒模型与IE盒模型、box-sizing属性
- BFC(块级格式化上下文) :触发条件、应用场景
- 响应式设计 :媒体查询、rem/em单位、视口设置
3.2 样式与动画
- CSS选择器优先级 :计算规则、权重比较
- CSS动画原理 :transition、animation、性能优化
- CSS预处理器 :Sass/Less的特性、嵌套、变量、混合等
- CSS Modules与CSS-in-JS :组件化样式解决方案
四、前端框架(必问)
4.1 React相关
- React Hooks原理 :闭包陷阱、依赖数组、自定义Hook
- React Fiber架构 :协调算法、时间切片、优先级调度
- Redux状态管理 :单向数据流、中间件、异步处理
- 虚拟DOM与Diff算法 :实现原理、优化策略
4.2 Vue相关
- Vue响应式原理 :Object.defineProperty与Proxy的区别、依赖收集
- Vue3的Composition API :与Options API的区别、逻辑复用
- Vue Router路由机制 :前端路由原理、动态路由、导航守卫
- Vuex状态管理 :核心概念、模块化、持久化
- vue3和vue2区别,Vue3的新特性
- vue的生命周期
- vue双向绑定原理
- 为什么渲染列表要加key
- vue常见的优化手段有哪些
- Vue的路由 router 大概通过什么实现的
- Vue nextTick 的作用和实现
- Vue 如何检测数组变化?为什么没有对每一项进行拦截?
4.3 跨框架
- MVVM架构模式 :与MVC/MVP的区别
- 组件设计原则 :高内聚低耦合、可复用性、可维护性
- 服务端渲染(SSR) :Next.js、Nuxt.js的原理与应用
- 如何从Vue2升级到Vue3 :迁移指南、新特性介绍、注意事项
- vue和react有哪些区别(双向数据流和单向数据流、模板语法和jsx、上手性等等)
五、前端工程化
5.1 构建工具
- Webpack核心概念 :Entry、Output、Loader、Plugin、优化策略
- Vite的工作原理 :ESM、依赖预构建、热模块替换
- 构建工具比较 :Webpack、Vite、Rollup、Parcel的优缺点
- 如何从Webpack迁移到Vite :优势、迁移步骤、注意事项,如何评估从Webpack迁移到Vite的可行性和收益?
- webpack 的loader 和 plugin 的区别
- webpack打包慢如何优化
- treeShaking是什么(树摇)
5.2 微前端
- 微前端架构模式 :qiankun、single-spa等框架对比
- 微前端的原理大概是什么,css和js如何隔离的,主应用和子应用如何通信
六、性能优化(必问)
6.1 性能指标与监控
- 前端性能指标 :FCP、LCP、FID、CLS等Web Vitals
- 性能监控方案 :Performance API、埋点、监控平台
6.2 优化策略
- 首屏加载优化 :资源压缩、懒加载、CDN、SSR等
- 运行时性能优化 :减少重排重绘、使用requestAnimationFrame
- 前端有哪些性能优化 :回流重绘、防抖节流、路由懒加载、图片懒加载、webpack打包等等
- 项目中页面加载比较慢、卡顿有哪些优化手段 (前端性能优化)
- 强缓存与协商缓存分别是什么 (HTTP缓存协议)
七、前端安全
7.1 常见攻击
- XSS攻击 :类型、防范措施、内容安全策略
- CSRF攻击 :原理、防护方法、SameSite Cookie
- 点击劫持 :iframe嵌套攻击、防御策略
- SQL注入 :防范措施、参数化查询
- 前端的安全问题可能存在哪些?可以怎么防范(XSS和csrf)
7.2 安全实践
- HTTPS部署 :证书配置、HSTS、OCSP Stapling
- 前端加密 :敏感数据处理、加密算法选择
- 权限控制 :前端权限管理、JWT认证机制
八、算法与编程题(高频)
8.1 常见算法
- 排序算法 :快速排序、归并排序、插入排序的时间复杂度与实现
- 查找算法 :二分查找、哈希表查找
- 前端常用算法 :防抖节流、深拷贝、数组去重、LRU缓存等
8.2 数据结构
- 链表 :单向链表、双向链表的实现与操作
- 栈与队列 :应用场景、实现方式
- 树结构 :二叉树、DOM树遍历算法
- 求两个链表相交节点
- 二叉树深度和广度遍历
- 将一个一维数组转换成树结构(一维数组用pid标识父级id)
- 二路归并
8.3 工具函数实现
- 实现repeat函数
- 写一个防抖和节流函数
- 写一个函数实现apply或call的功能
- 实现一个深拷贝函数deepClone
九、面试准备建议
9.1 复习策略
- 系统化学习 :按照知识体系进行复习,避免碎片化
- 代码实践 :动手实现关键算法和功能,加深理解
- 模拟面试 :准备常见问题的回答,练习表达清晰度
- 关注前沿 :了解前端最新技术趋势和最佳实践
9.2 大厂面试特点
- 字节跳动 :注重算法与编码能力、性能优化、React生态
- 阿里巴巴 :重视工程化、Node.js、全链路性能优化
- 腾讯 :关注基础扎实度、框架原理、安全意识
- 百度 :侧重算法、数据结构、技术深度
- 美团/滴滴 :注重业务场景应用、性能优化实战经验
9.3 面试技巧
- 结构化回答 :使用STAR法则描述项目经验
- 主动思考 :面对问题先思考再回答,展示思维过程
- 技术深度 :不仅知其然,还要知其所以然
- 团队协作 :体现沟通能力和团队协作经验