2023-11-10 16:53:08
2025年前端面试高频考点涵盖JavaScript、TypeScript、Vue、React、计算机网络、Node.js、算法及前端工程化八大模块,共900+道题目,以下为各模块核心知识点总结:

事件机制
不会冒泡的事件:focus、blur、mouseenter、mouseleave、load、unload、scroll等。
mouseEnter与mouseover区别:前者不冒泡,后者冒泡;前者仅在鼠标进入元素时触发,后者在进入元素或其子元素时均触发。
MessageChannel:用于浏览器中创建通信通道,实现高性能跨文档或跨窗口通信,常见于Web Worker、微前端等场景。
异步编程
async/await原理:基于Promise和生成器函数,通过编译器将await转换为Promise的.then()调用链。
Proxy监听嵌套对象:需递归代理内部对象,或使用Reflect.get()返回代理对象。
作用域与解构赋值
作用域链:由当前执行上下文的变量对象及上层执行上下文的变量对象组成,用于变量查找。
解构赋值成功条件:var [a, b] = {a: 1, b: 2}需转换为var {a, b} = {a: 1, b: 2}(对象解构)或数组解构匹配顺序。
类型系统
命名空间(Namespace)与模块(Module):命名空间用于组织全局代码,模块用于封装独立功能,模块默认具有局部作用域。
泛型:定义函数、接口或类时,不预先指定具体类型,使用时再确定,增强代码复用性。
访问修饰符:public(默认)、private、protected,控制类成员的访问权限。
高级特性
is关键字:类型谓词,用于类型守卫,如function isString(val: any): val is string。
方法重载:同一函数名提供多种参数类型组合,编译后生成一个兼容所有类型的函数。
响应式原理
Vue 2.x:基于Object.defineProperty递归监听数据变化,Vue 3.x改用Proxy实现更高效的响应式。
vm.$set原理:向响应式对象添加属性时,触发依赖更新,避免直接赋值导致视图不更新。
生命周期与事件
created与mounted调用时间差:受DOM渲染、异步组件、子组件加载等因素影响。
事件机制:通过$on、$emit实现组件间通信,事件冒泡由父组件监听子组件事件。
核心机制
Fiber架构:将渲染过程拆分为可中断的任务单元,支持优先级调度和并发渲染,解决复杂UI渲染卡顿问题。
Portals:将子节点渲染到父组件DOM层级之外的DOM节点,常用于模态框、工具提示等场景。
状态管理
Redux中间件:如redux-thunk、redux-saga,用于处理异步逻辑,通过拦截dispatch实现副作用管理。
受控组件与非受控组件:前者状态由React管理(如<input value={value} onChange={handleChange}>),后者状态由DOM管理(如<input ref={inputRef}>)。
HTTP/HTTPS
HTTPS握手过程:TCP三次握手 → 客户端验证服务器证书 → 协商加密算法 → 生成会话密钥 → 数据加密传输。
HTTP2多路复用:通过二进制分帧层实现请求/响应并行传输,避免HTTP1.x的队头阻塞问题。
性能优化
CDN作用:缓存静态资源,减少源站压力,加速用户访问(就近原则)。
跨域处理:通过CORS(服务器设置响应头Access-Control-Allow-Origin)或JSONP(仅限GET请求)解决。
模块系统
CommonJS与ES Module区别:前者动态加载(require)、同步执行,后者静态分析(import)、异步加载。
文件查找策略:Node按核心模块→文件模块(当前目录→父目录…)→node_modules路径查找。
事件循环
阶段划分:timers→I/O callbacks→idle/prepare→poll→check→close callbacks,微任务(process.nextTick、Promise)在各阶段间执行。
排序算法
快速排序:分治思想,选基准值将数组分为左右两部分,递归排序子数组,平均时间复杂度O(n log n)。
归并排序:分治思想,将数组递归拆分为最小单元后合并,稳定排序,时间复杂度O(n log n)。
其他算法
洗牌算法:Fisher-Yates算法,从后向前遍历数组,随机交换当前元素与剩余元素中的任意一个。
尾递归优化:编译器将尾递归转换为循环,避免栈溢出,如阶乘函数function factorial(n, acc = 1) { return n <= 1 ? acc : factorial(n - 1, n * acc); }。
Webpack
Loader与Plugin区别:Loader处理模块内容(如babel-loader转换ES6),Plugin扩展构建流程(如HtmlWebpackPlugin生成HTML)。
性能优化:多进程打包(thread-loader)、缓存(cache-loader)、缩小作用域(Tree Shaking)。
Vite原理
基于ES Module原生支持,开发环境直接启动服务器,按需编译依赖,生产环境使用Rollup打包。
完整面试题及答案详解可参考《2025前端面试八股文》PDF,涵盖JavaScript、CSS、HTML、React、Vue等全栈知识点,助力系统复习。