定位:入门→中级→高级前端,自学知识库+速查+背诵手册
结构总览
HTML基础(1~40)
CSS核心(41~90)
JavaScript原生(91~160)
ES6+/TypeScript(161~200)
浏览器原理与网络(201~240)
Vue3全家桶(241~280)
React18全家桶(281~320)
前端工程化(321~360)
Node.js基础(361~390)
前端性能优化(391~420)
前端安全与跨域(421~440)
跨端、可视化、测试(441~470)
大高频(471~500)
一、HTML基础(1~40)
-
1、HTML是什么? 超文本标记语言,搭建网页语义结构,非编程语言,无逻辑执行能力。
-
2、HTML5相比HTML4新增核心能力 语义标签、音视频、Canvas/SVG、本地存储、WebWorker、地理定位、表单增强、Web Components。
-
3、语义化标签作用与常用标签 提升可读性、SEO、无障碍;header/footer/article/section/nav/aside/main/figure。
-
4、块级、行内、行内块元素区别 块级独占一行,宽高可设;行内同行展示,宽高失效;行内块同行,支持宽高。
-
5、a标签target属性取值 _self当前页、_blank新窗口、_parent父框架、_top顶层页面。
-
6、a标签锚点跳转实现 href="#id" 匹配页面内元素id,滚动到对应位置。
-
7、img标签alt、src、loading作用 alt图片加载失败占位文字+SEO;src资源地址;loading="lazy"图片懒加载。
-
8、HTML表单核心表单元素 input/select/textarea/label/button/fieldset,label绑定input提升点击区域。
-
9、input type常用类型 text/password/number/email/radio/checkbox/file/range/date/time。
-
10、表单提交两种方式 form原生submit按钮、JS监听submit事件preventDefault手动发请求。
-
11、form标签action、method、enctype含义 action提交接口;method GET/POST;enctype文件上传multipart/form-data。
-
12、script标签defer与async区别 defer顺序执行、DOM解析完执行;async下载完成立刻执行,无序;均不阻塞HTML解析。
-
13、script放在head底部/body末尾原因 body末尾DOM加载完成,JS可直接操作DOM,无需监听DOMContentLoaded。
-
14、DOMContentLoaded与load事件区别 DOMContentLoaded DOM树构建完成;load页面所有资源(图片/视频)加载完毕。
-
15、viewport视口meta移动端必备配置
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">适配手机屏幕。 -
16、meta标签常用功能 字符编码、视口适配、页面描述SEO、关键词、禁止缓存、页面自动跳转。
-
17、HTML5本地存储两类API localStorage永久存储、sessionStorage会话级存储,仅存字符串,容量5M左右。
-
18、localStorage与cookie区别 存储量大、仅前端操作、无自动携带请求;cookie小、每次请求自动上传、可设置过期。
-
19、cookie四大属性 Expires过期时间、Path路径、Domain域名、HttpOnly禁止JS读取防XSS。
-
20、WebStorage存储限制 同源策略隔离、仅字符串、无法跨域共享、清除缓存即删除。
-
21、indexedDB特点 浏览器内置数据库,异步存储,支持二进制、大容量,适合离线复杂数据。
-
22、Canvas与SVG核心区别 Canvas位图,JS绘制,放大模糊;SVG矢量图,标签绘制,放大不失真。
-
23、audio/video多媒体属性 autoplay自动播放、loop循环、controls控制面板、muted静音、preload预加载。
-
24、Web Worker作用 开启浏览器子线程,复杂计算不阻塞主线程渲染,无法操作DOM。
-
25、Web Worker通信方式 postMessage传递数据,主线程与worker双向监听message事件。
-
26、iframe优缺点 快速嵌入页面;缺点阻塞主页面加载、安全风险、样式隔离、通信复杂。
-
27、iframe跨域通信API window.postMessage,不受同源策略限制,需校验来源origin防攻击。
-
28、button标签type默认值 submit(放在form内默认提交表单),手动设button阻止提交。
-
29、表单禁用属性readonly与disabled区别 readonly仅输入不可改,可提交;disabled禁用,表单不携带该值。
-
30、HTML5拖放API核心事件 dragstart/drag/dragend、dragenter/dragover/drop,dragover必须preventDefault才能触发drop。
-
31、下载文件两种实现 a标签download属性、Blob二进制文件流。
-
32、无障碍A11y基础概念 适配屏幕阅读器,aria-label/aria-hidden语义增强,兼容残障用户。
-
33、br换行与p段落区别 br强制换行无间距;p天然段落,自带上下外边距,语义分段。
-
34、列表三种类型 ul/ol/dl ul无序列表;ol有序数字列表;dl定义列表(dt标题dd描述)。
-
35、table表格核心标签 table/thead/tbody/tr/th/td,th自带加粗居中语义表头。
-
36、HTML实体字符作用 转义<>&"等特殊符号,避免标签解析冲突,如<代表<。
-
37、doctype作用 声明文档类型,告诉浏览器使用标准模式渲染页面,必须放在页面首行。
-
38、标准模式与怪异模式区别 标准盒模型严格按CSS规范;怪异模式兼容旧浏览器,宽高包含边框内边距。
-
39、缓存控制meta标签
meta http-equiv="Cache-Control",控制页面浏览器缓存策略。 -
40、HTML5离线缓存Manifest淘汰原因 兼容性差、更新逻辑复杂,现用Service Worker替代。
二、CSS核心(41~90)
-
41、CSS三种引入方式优先级 行内样式 > ID选择器 > 类/属性/伪类 > 标签/伪元素,权重逐级叠加。
-
42、CSS选择器权重计算规则 行内1000、ID100、类10、标签1,无进位叠加。
-
43、!important作用 强制覆盖所有样式,优先级最高,项目中尽量少用,破坏样式层叠逻辑。
-
44、CSS盒模型两种标准 W3C标准:width=内容宽,border/padding向外撑开;IE怪异盒box-sizing:border-box,宽高包含边框内边距。
-
45、box-sizing两个取值 content-box标准盒、border-box边框盒(移动端布局首选)。
-
46、BFC块级格式化上下文定义 独立渲染区域,内部布局不影响外部,解决浮动塌陷、margin重叠。
-
47、触发BFC的常用方式 overflow:hidden、float非none、position:absolute/fixed、display:inline-block/flex/grid。
-
48、BFC三大作用 清除浮动、阻止垂直margin合并、实现两栏自适应布局。
-
49、浮动float原理与副作用 元素脱离普通文档流;父元素高度塌陷、文字环绕、布局错乱。
-
50、清除浮动四种方案父级overflow:hidden、伪元素:after、父级开启BFC、空div clear:both。
-
51、position五大定位取值 static默认、relative相对自身、absolute相对最近非static父级、fixed视口固定、sticky粘性定位。
-
52、sticky粘性定位生效条件 设置top/left阈值、父容器无overflow:hidden、滚动父容器触发吸附。
-
53、z-index失效场景 元素未开启定位、父层z-index更低、未形成层叠上下文。
-
54、层叠上下文Stacking Context 页面分层渲染,父层层叠级别限制子元素z-index,absolute/fixed/opacity<1等会创建上下文。
-
55、Flex弹性布局核心适用场景 一维水平/垂直排列,居中、等分、自适应列表,替代浮动布局。
-
56、flex容器常用属性 flex-direction主轴、justify-content主轴对齐、align-items交叉轴对齐、flex-wrap自动换行。
-
57、flex子项flex属性缩写 flex:grow shrink basis;flex:1代表等分剩余空间。
-
58、flex:0 1 auto与flex:1区别 前者不放大、可缩小;后者自动占满剩余空间。
-
59、min-width:0在Flex场景作用 解决文字超长挤压不换行,允许子元素收缩小于内容宽度。
-
60、Grid网格布局特点 二维布局,同时控制行和列,复杂卡片、栅格系统首选。
-
61、Grid核心属性 grid-template-columns/rows 定义行列尺寸,fr等分单位,repeat简化重复尺寸。
-
62、CSS三种居中方案(水平垂直) flex居中、grid居中、absolute+transform平移。
-
63、隐藏元素三种方案区别 display:none不渲染不占空间;visibility:hidden渲染占空间;opacity:0透明可交互。
-
64、CSS3过渡transition 监听属性变化,实现平滑动画,需触发hover/JS修改样式。
-
65、CSS动画animation 关键帧@keyframes,自动循环播放,无需交互触发。
-
66、transition与animation区别 过渡依靠状态切换触发;动画独立定义关键帧,可控循环、延迟、次数。
-
67、移动端1px细线问题成因 Retina屏幕设备像素比2/3,1css像素映射2/3物理像素,线条变粗。
-
68、1px细线解决方案 transform:scale缩放、媒体查询dpr、border-image渐变。
-
69、响应式布局实现方案 媒体查询@media、flex/grid弹性布局、rem/vw/vh相对单位。
-
70、rem、vw、px区别 px固定像素;rem基于根字体;vw基于视口宽度,移动端主流适配单位。
-
71、CSS变量var()使用 --color:#fff定义变量,var(--color)读取,支持JS动态修改,主题切换利器。
-
72、伪类与伪元素区别 伪类匹配元素状态(:hover/:active);伪元素创建虚拟元素(::before/::after),需content。
-
73、常用伪类选择器 :hover/:active/:focus/:nth-child/:not/:disabled/:checked。
-
74、图片适配 object-fit取值 fill拉伸、cover裁切铺满、contain完整显示不裁切。
-
75、background复合属性顺序 color image repeat position/size attachment。
-
76、CSS模块化三种方案 CSS Modules、Scoped CSS、Tailwind原子化CSS。
-
77、Sass/Less预处理器优势 变量、嵌套、混合mixin、函数、循环,简化重复CSS代码。
-
78、BEM命名规范 Block块__Element元素--Modifier修饰,避免选择器冲突,便于维护。
-
79、margin垂直重叠规则 相邻块元素上下margin取最大值,开启BFC可消除合并。
-
80、文字溢出省略号三行代码 white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
-
81、多行文字省略号实现 -webkit-line-clamp,兼容性仅webkit内核浏览器。
-
82、cursor鼠标光标样式 pointer手型、not-allowed禁止、wait加载、text文本。
-
83、@media媒体查询断点写法 适配手机、平板、PC多端屏幕尺寸,覆盖不同布局。
-
84、will-change优化渲染 提前告知浏览器元素将变化,提前分配渲染资源,优化动画卡顿。
-
85、GPU硬件加速开启方式 transform:translateZ(0),分离图层,动画更流畅,不宜滥用。
-
86、CSS继承属性 font系列、color、text-align、line-height等自动继承父样式;盒模型、定位不继承。
-
87、calc()计算函数 混合单位运算,width:calc(100% - 20px),适配自适应布局。
-
88、aspect-ratio比例属性 快速实现等比容器,aspect-ratio:16/9视频容器,替代padding方案。
-
89、阴影box-shadow/text-shadow 盒子阴影、文字阴影,分层视觉效果,不占用页面空间。
-
90、CSS渲染顺序优化优先transform/opacity动画,仅触发合成层;top/left修改触发回流重绘,性能差。
三、JavaScript原生(91~160)
-
91、JS数据类型两大类 原始值(基本类型)、引用类型(对象)。
-
92、7种原始数据类型 String/Number/Boolean/Null/Undefined/Symbol/BigInt。
-
93、引用数据类型 Object、Array、Function、Date、RegExp等,存储堆内存地址。
-
94、null与undefined区别 null空对象,主动赋值;undefined变量声明未赋值、函数无返回值。
-
95、typeof判断各类型返回值 typeof null === 'object' bug;无法区分数组与普通对象。
-
96、精准判断数组方式 Array.isArray(),弥补typeof缺陷。
-
97、精准判断对象通用方案 Object.prototype.toString.call(),返回object Type。
-
98、==与===严格相等区别 ==隐式类型转换;===类型与值同时对比,推荐全程使用===。
-
99、0.1+0.2不等于0.3原因 JS采用IEEE754双精度浮点数,二进制存储小数丢失精度。
-
100、解决浮点数精度方案 放大整数运算、使用decimal.js库。
-
101、变量提升机制 var声明变量、function函数声明提升到作用域顶部;let/const存在暂时性死区不提升。
-
102、暂时性死区TDZ let/const变量在声明前不可访问,从块顶部到声明行区间为死区,防止未定义使用。
-
103、var/let/const三大区别 var函数作用域、可重复声明、变量提升无TDZ;let块级作用域、不可重复;const常量,引用类型地址不变,属性可修改。
-
104、作用域三种类型 全局作用域、函数作用域、块级作用域(let/const生成)。
-
105、作用域链定义 查找变量时逐层向上访问父级作用域,直到全局作用域,形成链式查找。
-
106、闭包定义 内层函数引用外层函数变量,外层执行完毕变量不销毁,形成私有变量。
-
107、闭包使用场景 模块化私有变量、防抖节流、柯里化、定时器保存上下文。
-
108、闭包内存泄漏风险 长期持有DOM/大数组无法被GC回收,用完手动置空释放。
-
109、this指向四大场景 全局this=window;普通函数调用this=window;对象方法this=调用对象;new实例this指向新对象;箭头函数无this继承外层。
-
110、call/apply/bind区别 call参数逐个传、apply数组传,两者立即执行;bind返回新函数,不立即执行,永久绑定this。
-
111、箭头函数特点 无this、无arguments、不可new生成实例、无原型prototype,简化回调写法。
-
112、原型与原型链 每个函数有prototype原型对象;实例__proto__指向构造函数原型,逐层查找形成原型链。
-
113、new关键字执行四步 创建空对象、绑定原型、绑定this执行构造函数、无显式return返回当前对象。
-
114、继承三种实现方式 原型链继承、构造函数继承、组合继承、ES6 class extends继承。
-
115、class本质 语法糖,底层仍是原型+构造函数,不存在真正类。
-
116、深拷贝浅拷贝区别 浅拷贝仅复制一层,嵌套引用共享内存;深拷贝递归复制所有层级,完全独立互不影响。
-
117、浅拷贝实现方式 Object.assign、展开运算符...、slice数组拷贝。
-
118、JSON.parse(JSON.stringify)深拷贝优缺点 简单易用;无法拷贝函数/Symbol/正则/循环引用、丢失undefined。
-
119、手写递归深拷贝完整逻辑 判断类型、数组/对象递归遍历、处理循环引用缓存。
-
120、数组常用遍历方法 for/forEach/map/filter/reduce/some/every/find/findIndex。
-
121、map与forEach区别 map返回新数组,有返回值;forEach无返回,仅遍历执行逻辑。
-
122、reduce强大用途 数组求和、去重、转对象、分组、扁平化,万能数组迭代器。
-
123、数组去重四种方案 Set去重、双层循环、filter+indexOf、Map哈希去重。
-
124、数组flat扁平化 flat(Infinity)多层数组一键展开,替代递归。
-
125、数组splice、slice区别 splice修改原数组,增删改;slice截取,返回新数组不改变原数组。
-
126、对象遍历三种方式 for...in遍历可枚举属性、Object.keys/values/entries、Reflect.ownKeys包含Symbol。
-
127、for...in遍历缺陷 遍历原型链上继承属性,需hasOwnProperty过滤自身属性。
-
128、事件流三个阶段 捕获阶段→目标阶段→冒泡阶段,addEventListener第三个参数true开启捕获。
-
129、事件委托原理 利用事件冒泡,父元素统一监听子元素事件,减少事件绑定,适配动态DOM。
-
130、event.preventDefault()与stopPropagation preventDefault阻止默认行为(a跳转、表单提交);stopPropagation停止冒泡/捕获。
-
131、防抖debounce 频繁触发延迟执行,连续触发重置计时器,搜索输入框常用。
-
132、节流throttle 固定间隔执行一次,滚动、窗口resize、鼠标移动防频繁执行。
-
133、异步发展历程 回调函数→Promise→Generator→async/await,解决回调地狱。
-
134、Promise三种状态 pending进行中、fulfilled成功、rejected失败,状态不可逆。
-
135、Promise链式调用特点 then返回新Promise,串行执行,catch捕获整条链错误。
-
136、Promise静态方法 all全部成功才返回、race最快完成、allSettled全部完成无论成败、any任一成功。
-
137、async/await本质 Generator语法糖,同步写法处理异步,内部自动封装Promise。
-
138、await捕获异常方式 try/catch包裹,或Promise后链式catch。
-
139、宏任务与微任务队列 宏任务:script整体、setTimeout、ajax、UI渲染;微任务:Promise.then、MutationObserver、queueMicrotask。
-
140、事件循环Event Loop执行顺序 执行同步代码 → 清空所有微任务 → 执行一个宏任务 → 循环往复。
-
141、setTimeout延时不准原因 主线程阻塞、宏任务排队等待,最小延迟4ms。
-
142、JS垃圾回收GC机制 标记清除算法,标记可达对象,回收未标记废弃内存。
-
143、内存泄漏常见场景 全局变量、闭包常驻、未清除定时器/事件监听、DOM引用未释放、循环引用。
-
144、DOM与BOM区别 DOM文档对象模型,操作页面元素;BOM浏览器对象模型,操作窗口、导航、定时器。
-
145、BOM核心对象window属性 location地址、history路由、navigator设备信息、screen屏幕。
-
146、location常用API href完整地址、search查询参数、hash哈希、reload刷新、assign跳转。
-
147、history路由API pushState/replaceState无刷新修改地址,前端路由底层原理。
-
148、正则表达式两大创建方式 字面量/RegExp构造函数,构造函数支持动态拼接正则。
-
149、正则常用修饰符 g全局匹配、i忽略大小写、m多行匹配。
-
150、正则捕获组与非捕获组 ()捕获分组可提取内容;(?:)仅分组不捕获,节省性能。
-
151、JSON规范限制 键必须双引号、仅支持基础类型、不能有注释、不支持函数。
-
152、本地存储封装工具函数 统一处理JSON序列化/反序列化,简化localStorage操作。
-
153、表单校验原生JS实现 正则匹配手机号/邮箱/身份证,校验长度、非空。
-
154、文件FileReader读取本地文件 读取图片预览、文本内容,上传前本地预览方案。
-
155、Blob与File区别 File继承Blob,额外携带文件名、修改时间,专门处理文件。
-
156、URL.createObjectURL作用 二进制文件生成临时预览地址,图片视频本地预览。
-
157、Math常用API random随机数、floor向下取整、ceil向上、round四舍五入、max/min极值。
-
158、Date日期对象常用方法 getFullYear/getMonth/getDate,时间戳转换、格式化日期。
-
159、Generator生成器函数 function*、yield暂停执行,迭代器,实现异步流程控制。
-
160、Iterator迭代器协议 对象部署Symbol.iterator,支持for...of遍历,数组/Set/Map内置迭代器。
四、ES6+/TypeScript(161~200)
-
161、ES6核心特性清单 let/const、解构、展开运算符、模板字符串、箭头函数、Promise、class、模块化、Set/Map、async/await。
-
162、模板字符串``优势 支持换行、${}插值,替代字符串拼接。
-
163、对象解构赋值 快速提取对象属性,支持默认值、重命名变量。
-
164、数组解构 交换变量、函数多返回值接收、截取数组元素。
-
165、展开运算符...三种场景 数组拷贝、合并数组、函数剩余参数、对象浅拷贝。
-
166、剩余参数rest ...args 收集函数多余参数,替代arguments类数组。
-
167、Set集合特点 元素唯一,去重专用,add/delete/has/clear API。
-
168、Map哈希表优势 键支持任意类型(对象/数字/Symbol),弥补Object键只能字符串缺陷。
-
169、WeakSet/WeakMap弱引用 键弱引用,GC自动回收无内存泄漏,无法遍历,适合缓存DOM对象。
-
170、Symbol作用 生成唯一标识,避免对象属性名冲突,私有模拟键。
-
171、可选链操作符?. 对象深层属性安全读取,不存在返回undefined,杜绝Cannot read property报错。
-
172、空值合并运算符?? 仅null/undefined取默认值,区分0/''有效假值,替代||。
-
173、对象简写语法 属性名与变量同名省略赋值、方法简写省略function。
-
174、ES6模块化import/export 前端标准模块化,静态导入,编译期解析,支持tree-shaking。
-
175、默认导出export default与命名导出 default导入可自定义名称;命名导出必须匹配变量名,支持多导出。
-
176、ES7 Array.includes() 判断数组是否包含元素,替代indexOf !== -1。
-
177、ES8 async/await 异步同步化,基于Promise封装,简化异步代码阅读。
-
178、ES10 flat/flatMap数组扁平化 多维数组展开,flatMap映射后自动扁平化一层。
-
179、ES11 可选捕获catch(err?) catch参数可选,无需接收错误对象。
-
180、ES13 #私有类字段 class内部#修饰变量,外部无法访问,真正私有属性。
-
181、TypeScript定位 JS超集,静态类型检查,编译时捕获类型错误,大型项目维护必备。
-
182、TS基础原始类型 string/number/boolean/null/undefined/symbol/bigint。
-
183、TS复合类型 数组、对象字面量、元组Tuple、枚举Enum、联合类型|、交叉类型&。
-
184、元组Tuple 固定长度、固定位置类型数组,如type, id。
-
185、枚举Enum 固定常量集合,数字枚举、字符串枚举,管理状态码。
-
186、any与unknown区别 any关闭类型校验,任意赋值;unknown未知类型,赋值前必须类型缩小。
-
187、类型断言as 手动指定变量类型,绕过TS类型推断,两种写法:val as Type / val。
-
188、接口interface 定义对象结构,可扩展、可继承,约束对象形状。
-
189、type类型别名与interface区别 type支持联合/交叉/元组;interface专注对象,支持多继承扩展。
-
190、可选属性、只读修饰符?/readonly ?属性可省略;readonly禁止修改属性值。
-
191、函数类型定义 参数类型、返回值类型、可选参数、默认参数、剩余参数类型标注。
-
192、泛型Generic 类型参数化,组件复用兼容多种类型,如Array、Promise。
-
193、泛型约束extends 限制泛型必须具备指定属性,缩小类型范围。
-
194、工具内置类型 Partial全部可选、Required全部必填、Readonly只读、Pick选取字段、Omit剔除字段、Record键值映射。
-
195、类class TS类型增强 成员修饰符public/private/protected、构造函数参数简写、抽象类abstract。
-
196、抽象类abstract 不能实例化,包含抽象方法强制子类实现,模板设计模式。
-
197、类型守卫is 自定义函数缩小联合类型,简化分支类型判断。
-
198、命名空间namespace 隔离全局类型,老项目模块化兼容方案,新项目优先ES Module。
-
199、TS编译配置tsconfig.json target编译JS版本、module模块化、outDir输出、strict严格模式、types类型包。
-
200、@types类型声明包 第三方库无TS源码时,提供类型定义文件.d.ts,IDE代码提示。
五、浏览器原理与网络(201~240)
-
201、浏览器五大组成模块 用户界面、浏览器引擎、渲染引擎、JS引擎、网络模块。
-
202、主流浏览器JS引擎 Chrome V8、Firefox SpiderMonkey、Safari JavaScriptCore。
-
203、V8引擎执行JS流程 解析生成AST → 字节码生成 → 解释器执行 → 热点代码JIT编译机器码。
-
204、输入URL到页面完整渲染流程 DNS解析域名 → TCP三次握手建立连接 → HTTP请求发送 → 服务器返回HTML → 解析HTML生成DOM树 → 解析CSS生成CSSOM树 → 合成Render树 → 布局Layout回流 → 绘制Paint → 分层合成Composite展示页面。
-
205、DNS缓存层级 浏览器缓存 → 系统hosts → 本地DNS服务器 → 根域名服务器。
-
206、TCP三次握手目的 确认收发双方收发能力,同步序列号,建立可靠连接。
-
207、TCP四次挥手 双方分别告知关闭发送,等待剩余数据传输完毕再断开连接。
-
208、HTTP1.0/1.1/2/3核心差异 1.0短连接;1.1长连接、管线化;HTTP2二进制多路复用、头部压缩;HTTP3基于QUIC UDP无队头阻塞。
-
209、HTTP请求报文结构 请求行(方法/地址/版本)、请求头、空行、请求体。
-
210、HTTP响应报文结构 状态行(版本/状态码)、响应头、空行、响应体。
-
211、常用请求方法语义 GET查询、POST新增、PUT全量更新、PATCH局部更新、DELETE删除、OPTIONS预检跨域。
-
212、HTTP状态码分类 1xx信息、2xx成功、3xx重定向、4xx客户端错误、5xx服务端错误。
-
213、高频状态码含义 200成功、204无返回内容、301永久重定向、302临时、304协商缓存命中、400参数错误、401未登录、403无权限、404不存在、500服务异常、503服务不可用。
-
214、HTTP缓存两大类 强缓存、协商缓存,减少重复请求,提升页面速度。
-
215、强缓存响应头 Expires绝对过期时间、Cache-Control max-age相对过期,优先级高于Expires。
-
216、协商缓存两对标识 Last-Modified/If-Modified-Since文件修改时间;ETag/If-None-Match资源唯一指纹,精度更高。
-
217、缓存命中判断流程 先判断强缓存是否过期,未过期直接读取本地;过期携带协商标识请求服务器,返回304复用缓存。
-
218、缓存控制Cache-Control常用值 public共享缓存、private仅浏览器缓存、no-cache强制协商缓存、no-store禁止缓存。
-
219、请求头Cookie、User-Agent、Referer、Origin作用 Cookie携带登录凭证;UA设备浏览器标识;Referer来源页面防盗链;Origin跨域校验源。
-
220、HTTPS与HTTP区别 HTTPS基于SSL/TLS加密传输,防窃听、篡改、中间人劫持,默认443端口。
-
221、HTTPS握手流程 客户端发起加密套件 → 服务器下发证书 → 证书CA校验 → 非对称加密传输随机密钥 → 对称加密传输业务数据。
-
222、对称加密与非对称加密分工 对称加密传输业务数据速度快;非对称加密传递对称密钥,验证证书身份。
-
223、跨域同源策略定义 协议、域名、端口任一不同即跨域,浏览器拦截跨域AJAX请求,安全隔离。
-
224、跨域六大解决方案 CORS后端配置、JSONP、Nginx反向代理、postMessage、WebSocket、代理服务器。
-
225、CORS简单请求与预检OPTIONS请求区分 简单请求GET/POST/HEAD,无复杂头;自定义请求头/Content-Type=application/json触发OPTIONS预检。
-
226、CORS响应核心头 Access-Control-Allow-Origin 允许跨域域名,*允许所有域名,生产建议指定域名。
-
227、Access-Control-Allow-Credentials 允许跨域携带Cookie,Origin不能设为*。
-
228、JSONP原理 利用script标签不受同源限制,后端返回包裹回调函数的JSON数据,仅支持GET请求。
-
229、浏览器渲染三大阶段回流/重绘/合成 回流Layout:元素尺寸位置变化,开销最大;重绘Paint:颜色背景变化;合成Composite:分层动画transform/opacity,无回流重绘性能最优。
-
230、触发回流的操作 修改宽高、margin、top/left、读取offsetWidth/scrollTop布局属性。
-
231、强制同步布局坑 循环读写布局属性,浏览器无法批量优化,多次回流严重卡顿。
-
232、避免频繁回流优化方案 批量修改DOM、文档碎片DocumentFragment、离线修改display:none、使用transform动画。
-
233、渲染分层条件 transform3D、will-change、video/canvas、css动画元素,独立合成层。
-
234、DOM树、CSSOM、RenderTree关系 DOM存结构,CSSOM存样式,RenderTree只包含可见DOM节点+对应样式。
-
235、阻塞渲染资源 无defer/async的JS阻塞HTML解析与渲染;未加载完成CSS阻塞页面渲染。
-
236、图片加载不阻塞DOM解析,但阻塞页面load事件。
-
237、浏览器缓存位置划分 Memory Cache内存缓存(页面关闭清空)、Disk Cache磁盘持久缓存。
-
238、Service Worker作用 浏览器后台独立线程,离线缓存、请求拦截、推送通知,PWA核心技术。
-
239、PWA渐进式网页应用优势 离线可用、桌面图标、推送通知、接近原生APP体验。
-
240、WebSocket与HTTP区别 HTTP单向短轮询;WebSocket长连接双向实时通信,低延迟聊天室/实时大屏。
六、Vue3全家桶(241~280)
-
241、Vue2与Vue3核心底层区别 Vue2 Object.defineProperty劫持;Vue3 Proxy代理整对象,支持数组/新增属性监听。
-
242、Proxy优势 监听数组下标、新增删除属性、嵌套对象递归简化、性能更好,弥补Object.defineProperty缺陷。
-
243、Vue3两大API风格 Options API选项式、Composition API组合式,大型项目推荐Composition。
-
244、setup执行时机 组件创建前,beforeCreate之前,无this,替代data/methods逻辑聚合。
-
245、ref与reactive区别 ref处理基础类型,底层封装对象;reactive代理对象/数组,直接解构丢失响应式。
-
246、toRefs作用 解构reactive对象,保持属性响应式,模板直接使用变量。
-
247、computed计算属性特点 依赖缓存,依赖不变不重新执行,有get/set读写模式。
-
248、watch与watchEffect区别 watch精准指定监听源;watchEffect自动收集依赖,无需指定监听字段。
-
249、生命周期组合式钩子 onMounted/onUpdated/onUnmounted/onBeforeMount,对应Options生命周期。
-
250、v-if与v-show区别 v-if销毁重建DOM,切换开销大;v-show仅display:none隐藏,频繁切换优先v-show。
-
251、v-for必须绑定key作用 唯一标识虚拟DOM节点,diff算法高效复用节点,避免错乱。
-
252、key禁止使用index弊端 数组删除中间项,index变化导致节点复用错误,产生渲染bug。
-
253、Vue diff算法核心流程 同层对比,key映射快速查找,头/尾/最长递增子序列优化移动逻辑。
-
254、虚拟DOM VNode作用 JS对象描述DOM结构,减少真实DOM操作,跨平台渲染统一适配。
-
255、组件通信八种方案 props父传子、emit子传父、provide/inject跨层级、pinia全局、ref获取实例、eventBus、attrs/listeners、Vue3 mitt。
-
256、provide/inject适用场景 深层祖孙组件传值,穿透多层组件,非响应式需包裹ref/reactive。
-
257、Props校验规范 类型校验、默认值default、必填required,提升组件健壮性。
-
258、单向数据流规则 子组件不可直接修改props,需拷贝本地变量或emit通知父修改。
-
259、自定义v-model双向绑定 Vue3组件modelValue参数 + update:modelValue事件,支持多v-model。
-
260、Pinia替代Vuex优势 去除mutations、API简洁、模块化自动拆分、TS友好、无命名空间繁琐写法。
-
261、Pinia核心概念 State/Getters/Actions State状态仓库;Getters计算属性;Actions同步/异步修改状态。
-
262、Vue Router4路由核心API createRouter、createWebHistory/HashHistory,history模式无#哈希。
-
263、hash与history路由区别 hash基于#,后端无需配置;history真实路径,刷新404需后端配置重定向。
-
264、路由守卫分类 全局前置/后置、路由独享、组件内守卫,鉴权登录拦截核心。
-
265、路由懒加载实现 import()动态导入,打包代码分割,首屏减少js体积。
-
266、keep-alive缓存组件 组件不销毁,缓存DOM状态,include/exclude匹配组件名。
-
267、SFC单文件组件scoped原理 CSS添加唯一data-v前缀,样式隔离不污染全局,避免选择器冲突。
-
268、Teleport传送门组件 将DOM挂载到body外层,解决弹窗父级overflow:hidden遮挡问题。
-
269、Suspense异步组件加载 异步组件加载时展示fallback占位,配合setup async。
-
270、自定义指令钩子函数 v-xxx指令created/beforeMount/mounted/update,封装通用DOM操作。
-
271、Vue3 Fragment多根节点 无需外层根div,直接多个根标签,简化DOM层级。
-
272、setup语法糖 Vue3组合式API语法糖,无需手动return变量、无需定义setup函数,简化代码结构,支持直接使用props、emit、路由等API,是目前Vue3主流开发写法。
-
273、defineProps/defineEmits setup语法糖专属编译宏,无需导入,用于声明组件props参数和自定义事件,支持类型校验、默认值配置,仅在274、defineExpose组件暴露属性语法糖模式下组件属性默认私密,通过defineExpose主动暴露方法/变量,供父组件通过ref调用。
-
275、useAttrs与useSlots useAttrs获取组件透传的所有属性,规避$attrs繁琐写法;useSlots精准获取插槽内容,适配自定义插槽渲染逻辑。
-
276、Vue3响应式丢失场景与解决 直接解构reactive对象、函数参数解构、赋值新对象会丢失响应式,通过toRefs/toRef、局部声明变量修复。
-
277、shallowRef/shallowReactive浅层响应式 仅监听顶层属性变化,深层不劫持,适合大型复杂对象/数据,大幅提升响应式性能。
-
278、readonly只读响应式 生成只读响应式数据,禁止修改,用于全局状态、常量数据保护,修改会触发控制台警告。
-
279、watch精准监听进阶 配置immediate立即监听、deep深度监听、flush同步/异步触发,适配不同数据监听场景。
-
280、Vue3全局属性挂载 app.config.globalProperties挂载全局方法/变量,组件内直接调用,替代Vue2原型挂载方式。
七、React18全家桶(281~320)
-
281、React18核心更新 并发渲染、自动批处理更新、Suspense服务端渲染、自动移除冗余渲染、新hooks、严格模式双渲染。
-
282、React与Vue核心区别 React JSX语法、JS驱动逻辑、函数式编程、自由度高;Vue模板语法、声明式、上手快、生态集成度高。
-
283、JSX语法规则 单一根节点、className替代class、htmlFor替代for、驼峰样式、表达式{}嵌入、注释写法特殊。
-
284、React组件两大类型函数组件(主流)、类组件(废弃老旧写法),函数组件无this、靠hooks管理状态。
-
285、组件Props特性 只读不可修改、父子传值、支持默认值、类型校验PropTypes、批量展开传参。
-
286、State状态更新规则 状态不可变,必须setState/setX更新,直接修改不会触发视图更新。
-
287、React18自动批处理 异步回调、定时器内多次更新自动合并,减少渲染次数,提升性能。
-
288、useState基础原理 定义组件状态,返回状态值和更新函数,异步更新、批量合并渲染。
-
289、useEffect副作用钩子 处理副作用请求、定时器、DOM操作,依赖项控制执行时机,支持清理函数。
-
290、useEffect依赖项规则 空依赖挂载执行一次、依赖更新触发执行、无依赖每次渲染都执行。
-
291、useRef三大用途 获取DOM节点、保存可变变量、存放定时器/实例对象,值变更不触发重渲染。
-
292、useContext跨组件传值 全局创建Context,Provider注入数据,子组件useContext消费,替代多层props穿透。
-
293、useReducer状态管理 复杂状态、多操作逻辑场景,集中管理状态更新,类似Redux核心思想。
-
294、useMemo缓存计算结果 缓存复杂计算值,依赖不变不重复计算,避免无效算力消耗。
-
295、useCallback缓存函数 缓存函数引用,防止子组件频繁接收新props引发重渲染,配合memo使用。
-
296、React.memo组件缓存 浅比较props,props不变阻止组件重渲染,函数组件性能优化关键。
-
297、useImperativeHandle 配合forwardRef,暴露子组件指定DOM方法,禁止父组件随意操作子DOM。
-
298、useLayoutEffect DOM绘制前同步执行,可读取布局信息,解决渲染闪烁问题,阻塞视图渲染慎用。
-
299、React18新增useId 生成唯一稳定ID,适配服务端渲染,避免客户端服务端ID不匹配。
-
300、React18新增useTransition 区分紧急更新与过渡更新,优先响应用户输入,流畅渲染大列表。
-
301、useDeferredValue 延迟更新非紧急数据,防抖式更新,优化大数据渲染卡顿。
-
302、React合成事件 统一封装原生事件,抹平浏览器兼容,事件委托到根节点,性能更优。
-
303、阻止React事件冒泡与默认行为 e.stopPropagation()阻止冒泡、e.preventDefault()阻止默认行为。
-
304、React组件渲染机制 状态/props变更 → 生成新虚拟DOM → diff对比 → 最小粒度更新真实DOM。
-
305、React diff算法策略 同层对比、key唯一标识、优先复用节点、优化移动/删除/新增逻辑。
-
306、key作用与禁忌 标识虚拟DOM节点,提升diff效率,禁止用index、随机数做key。
-
307、组件性能优化核心方案 memo+useCallback+useMemo、减少不必要渲染、拆分组件、懒加载。
-
308、React路由React Router6变化移除Switch改为Routes、路由element属性、编程式useNavigate、嵌套路由简化。
-
309、常用路由钩子 useNavigate跳转、useParams获取路由参数、useLocation获取路由信息、useRoutes配置路由。
-
310、路由懒加载与Suspense lazy+Suspense实现组件按需加载,首屏提速,展示loading占位。
-
311、Redux状态管理核心 Store仓库、State状态、Action动作、Reducer纯函数、Dispatch派发更新。
-
312、Redux三大原则 单一数据源、状态只读、纯函数修改状态。
-
313、Redux中间件作用 处理异步、日志、持久化,核心redux-thunk处理异步Action。
-
314、Redux Toolkit优势 简化Redux冗余代码、内置immer支持可变写法、自动合并reducer、无需手动switch。
-
315、RTK核心API createSlice创建模块、createAsyncThunk处理异步、configureStore配置仓库。
-
316、React表单受控与非受控组件 受控值绑定state、实时同步;非受控靠ref获取值,适合简单表单。
-
317、React严格模式作用 检测不安全生命周期、废弃API、副作用异常,开发环境双重渲染校验。
-
318、SSR服务端渲染原理 服务端生成HTML、注水hydrate激活交互,首屏快、利于SEO。
-
319、Next.js核心优势 基于React的SSR/SSG框架、路由即文件、自动优化、适配多端渲染。
-
320、React常用UI库 Ant Design、Material UI、Tailwind UI、Arco Design,企业级快速开发方案。
八、前端工程化(321~360)
-
321、前端工程化核心意义 解决代码混乱、兼容性、打包压缩、模块化、团队协作、工程规范、自动化构建问题。
-
322、工程化核心工具栈 包管理、构建打包、代码校验、格式化、自动化部署、工程规范体系。
-
323、npm/yarn/pnpm核心区别 npm原生默认、yarn速度快锁版本、pnpm硬链接节省磁盘、速度最快、无幽灵依赖。
-
324、package.json核心字段 name版本、scripts脚本、dependencies生产依赖、devDependencies开发依赖、main入口、module模块化入口。
-
325、依赖版本号规则 ^兼容次版本、~兼容补丁版本、*任意版本、固定版本号锁定。
-
326、CommonJS与ES Module区别 CJS运行时加载、同步、导出对象;ESM编译时解析、静态、支持tree-shaking。
-
327、Tree-Shaking原理 基于ESM静态语法,剔除未引用代码,减小打包体积,CJS不支持。
-
328、Webpack核心五大概念 Entry入口、Output出口、Loader转换器、Plugin插件、Mode模式。
-
329、Loader与Plugin区别 Loader转换文件资源(css/less/ts);Plugin贯穿构建生命周期,处理整体流程。
-
330、常用Loader作用 babel-loader转ES6+、css-loader解析css、style-loader插入页面、file-loader处理静态资源。
-
331、常用Plugin作用 HtmlWebpackPlugin生成html、CleanWebpackPlugin清空目录、DefinePlugin定义环境变量。
-
332、Webpack热更新HMR 模块热替换,修改代码局部刷新,不刷新整页、保留页面状态。
-
333、Webpack打包优化方案 代码分割、懒加载、缓存、压缩、tree-shaking、externals剥离依赖。
-
334、Vite相比Webpack优势 基于ESBuild预构建、原生ESM、无打包开发启动极速、按需编译、热更新更快。
-
335、Vite核心原理 开发环境不打包,浏览器原生加载ESM,拦截请求处理依赖,生产环境Rollup打包。
-
336、ESBuild优势 Go语言编写、极速编译、TS/ES6+一键转换、大幅提升构建速度。
-
337、Babel作用与原理 编译高版本JS/TS为低版本,解析AST、转换、生成代码三步流程。
-
338、Babel核心包 @babel/core核心、@babel/preset-env智能预设、@babel/plugin-*插件。
-
339、持久化缓存原理 webpack持久化缓存、vite预构建缓存,二次构建提速80%以上。
-
340、代码分割策略 入口分割、动态导入分割、第三方依赖单独分割、公共代码抽离。
-
341、Externals剥离依赖 打包忽略vue/react等框架,CDN引入,减小打包体积、提速构建。
-
342、ESLint代码校验 检查语法错误、代码风格、规避bug,统一团队代码规范。
-
343、Prettier代码格式化 统一代码缩进、换行、空格,解决格式不统一问题,配合ESLint共存。
-
344、Git规范与提交校验 husky拦截git钩子、lint-staged校验暂存区代码、commitlint规范提交信息。
-
345、Commit规范格式 feat新功能、fix修复、docs文档、style格式、refactor重构、test测试、chore构建。
-
346、模块化演进历程 全局变量→IIFE→CommonJS→AMD→ESM,从混乱到标准化。
-
347、静态资源处理方案 图片字体压缩、资源CDN、路径解析、资源内联、按需引入。
-
348、环境变量区分 开发/测试/生产环境区分,不同环境接口、打包策略、日志配置不同。
-
349、Mock数据方案 vite-plugin-mock、mockjs、接口预模拟,前端独立开发不依赖后端。
-
350、前端CI/CD流程 代码提交→校验构建→单元测试→打包上传→部署服务器,自动化流水线。
-
351、Docker部署前端 镜像打包静态资源、Nginx托管、容器化部署、环境统一。
-
352、Monorepo工程方案 单仓库管理多包、统一版本、共享依赖、适配大型组件库/框架开发。
-
353、pnpm workspace能力 多包联动、本地依赖互通、统一脚本、高效管理monorepo项目。
-
354、组件库工程化 文档站点、单元测试、版本管理、按需打包、主题定制、发布npm。
-
355、TS工程化配置 严格模式、路径别名、类型检查、编译过滤、声明文件生成。
-
356、路径别名优化 @匹配src目录,简化导入路径,避免层级混乱。
-
357、打包体积分析工具 webpack-bundle-analyzer可视化依赖体积,定位大文件优化。
-
358、Gzip压缩部署 打包生成gzip文件,Nginx配置解析,大幅减小传输体积、提升加载速度。
-
359、按需引入优化 babel-plugin-import、tree-shaking,剔除未使用组件与代码。
-
360、工程化最佳实践 规范校验、缓存优化、代码分割、资源压缩、环境隔离、自动化部署闭环。
九、Node.js基础(361~390)
-
361、Node.js定位与特点 基于V8引擎的后端JS运行环境、单线程、事件驱动、非阻塞IO、适合高并发IO场景。
-
362、Node与浏览器JS区别 Node无DOM/BOM、内置文件/网络/进程模块、可操作本地资源、服务端能力。
-
363、Node单线程优缺点 优点无线程竞争、开销小;缺点CPU密集型阻塞主线程、利用多核困难。
-
364、Node事件循环六阶段 timers定时器、pending延迟IO、idle空闲、poll轮询IO、check setImmediate、close关闭回调。
-
365、process进程核心API process.env环境变量、process.argv命令行参数、process.cwd()运行目录、process.exit()退出进程。
-
366、全局变量与模块作用域 Node无window,全局global;模块私有作用域,变量不污染全局。
-
367、CommonJS模块加载流程 路径解析→文件读取→编译包装→执行导出→缓存复用,重复加载读取缓存。
-
368、module.exports与exports区别 module.exports为真正导出对象;exports是引用指针,直接赋值失效。
-
369、__dirname与__filename __dirname当前文件目录路径;__filename当前文件完整路径。
-
370、fs文件系统核心能力 读写文件、创建删除目录、文件监听、流式读取大文件。
-
371、fs同步异步方法区别 sync后缀同步阻塞线程;异步回调/Promise写法不阻塞主线程。
-
372、path路径处理核心API path.join拼接路径、path.resolve绝对路径、path.extname后缀、path.dirname目录。
-
373、http模块搭建基础服务 创建服务、监听端口、解析请求报文、响应数据,原生实现接口服务。
-
374、req/res请求响应对象 req获取请求头/参数/体;res设置状态码、响应头、返回数据。
-
375、数据流Stream四类流 Readable可读、Writable可写、Duplex双工、Transform转换流,处理超大文件防内存溢出。
-
376、Buffer缓冲区作用 处理二进制数据、文件、网络流,弥补JS无二进制类型短板。
-
377、Node中间件原理 洋葱模型,req/res贯穿、逐层处理、next放行,Express/Koa核心机制。
-
378、Express核心特性 极简路由、中间件体系、静态资源托管、兼容原生http模块。
-
379、Koa相比Express优势 基于Promise、async/await、无回调地狱、洋葱模型更规范、轻量化。
-
380、跨域服务端解决方案 后端设置Access-Control-*响应头、允许跨域域名、携带cookie。
-
381、Node热更新原理 清除模块缓存、重新加载文件,无需重启服务更新代码。
-
382、Cluster多核利用 开启多进程、主进程管理、子进程工作,解决单线程无法利用多核CPU问题。
-
383、进程守护工具PM2 进程守护、自动重启、日志记录、负载均衡、性能监控。
-
384、Node异常捕获方案 同步try/catch、异步catch、全局unhandledRejection监听。
-
385、接口参数校验 Joi/Zod校验参数类型、长度、正则、必填,规避非法参数。
-
386、静态资源托管原理 匹配请求路径、读取本地文件、设置mime类型、返回文件流。
-
387、Node定时任务 setInterval定时、node-schedule cron表达式定时执行任务。
-
388、日志分级规范 info正常、warn警告、error错误、debug调试,区分生产日志级别。
-
389、JWT令牌鉴权原理 header+payload+signature,无状态、服务端不存会话,适配分布式服务。
-
390、Node性能瓶颈与优化 避开CPU密集任务、使用子进程/Worker、流式处理、缓存复用、异步解耦。
十、前端性能优化(391~420)
-
391、前端性能优化核心指标 FCP首次内容绘制、LCP最大内容绘制、FID交互延迟、CLS布局偏移,核心Web指标。
-
392、性能优化四大方向 加载优化、渲染优化、代码优化、用户体验优化。
-
393、首屏加载慢核心原因 资源体积大、请求过多、无缓存、阻塞渲染、大文件未拆分、首屏冗余代码。
-
394、网络加载优化方案 资源压缩、CDN加速、缓存策略、HTTP2多路复用、减少HTTP请求。
-
395、图片优化全套方案 无损压缩、WebP/AVIF格式、图片懒加载、合适尺寸、雪碧图、内联小图标。
-
396、JS加载优化 懒加载、代码分割、Tree-Shaking、移除冗余代码、第三方库按需引入。
-
397、CSS加载优化 内联首屏CSS、CSS压缩、去除无用样式、避免@import阻塞、样式预加载。
-
398、字体优化方案 字体压缩、WOFF2格式、字体懒加载、font-display:swap避免文字闪烁。
-
399、浏览器缓存分层优化 静态资源长期强缓存、接口数据协商缓存、频繁变动资源缩短缓存时间。
-
400、Gzip/Brotli压缩优势 服务端压缩文本资源,体积减少60%以上,大幅提升传输速度。
-
401、减少回流重绘策略 批量修改DOM、避免频繁读取布局属性、使用transform/opacity动画。
-
402、GPU加速优化动画 开启合成层,动画不走回流重绘,页面动画更流畅。
-
403、虚拟列表原理与场景 只渲染可视区域DOM,滚动动态替换数据,解决万级列表卡顿。
-
404、防抖节流性能优化 降低高频触发事件执行次数,减少CPU占用,适配滚动/输入/resize。
-
405、避免内存泄漏优化 及时销毁定时器、事件监听、清空引用、解除闭包占用。
-
406、首屏骨架屏作用 替代空白加载,提升用户感知体验,降低等待焦虑。
-
407、预加载与预连接 preload预加载关键资源、preconnect预连接域名、prefetch预加载未来资源。
-
408、长列表优化方案 虚拟滚动、分页加载、数据懒渲染、分批渲染避免一次性渲染大量DOM。
-
409、打包体积优化细节 移除无用依赖、替换轻量库、externals剥离大依赖、压缩混淆代码。
-
410、SSR/SSG性能优势 服务端直出HTML,首屏渲染快、减少客户端JS计算、利于SEO。
-
411、客户端水合优化 减少冗余水合、选择性水合、规避水合卡顿。
-
412、请求优化策略 接口合并、轮询改WebSocket、批量请求、缓存接口数据。
-
413、懒加载全覆盖场景 图片、视频、组件、路由、接口数据,按需加载减少首屏压力。
-
414、避免阻塞主线程 复杂计算拆分、WebWorker异步计算、任务分片执行。
-
415、LCP最大内容绘制优化 优化首屏大图、精简首屏JS、减少阻塞资源、提速DNS与连接。
-
416、CLS布局偏移优化 固定图片/广告尺寸、预留占位、避免动态插入元素挤压布局。
-
417、打包分析与性能监控 可视化体积占比、定位大文件、线上性能埋点监控。
-
418、移动端专属优化 适配视口、减少GPU滥用、避免超大图层、优化触摸响应。
-
419、性能兜底策略 弱网降级、资源兜底、超时重试、骨架占位。
-
420、性能优化落地流程 指标检测→定位瓶颈→针对性优化→复测对比→持续监控迭代。
十一、前端安全与跨域(421~440)
-
421、前端三大核心安全漏洞 XSS跨站脚本、CSRF跨站请求伪造、SQL注入(前端拦截)。
-
422、XSS漏洞原理 恶意脚本注入页面,浏览器解析执行,窃取cookie、劫持页面、篡改内容。
-
423、XSS三种类型 存储型(入库持久危害)、反射型(URL参数触发)、DOM型(前端渲染触发)。
-
424、XSS全套防御方案 输入过滤、输出转义、CSP内容安全策略、HttpOnly cookie、禁止eval执行。
-
425、CSP防御原理 限制脚本、样式、资源加载域名,禁止内联脚本、禁止eval,从根源拦截恶意代码。
-
426、CSRF漏洞原理 利用用户登录态,诱导浏览器自动发起跨域请求,冒用用户身份操作。
-
427、CSRF防御方案 Token校验、Referer/Origin校验、SameSite Cookie、验证码拦截。
-
428、SameSite Cookie属性 Strict严格禁止跨站、Lax允许简单导航、None允许所有跨站需HTTPS。
-
429、点击劫持原理与防御 透明iframe覆盖页面,诱导误点击;X-Frame-Options禁止被嵌套。
-
430、接口防刷方案 频率限制、Token时效、验证码、请求签名、IP限流。
-
431、敏感数据保护策略 前端脱敏展示、传输HTTPS、禁止本地存储密码、接口加密。
-
432、HTTP请求劫持防御 全站HTTPS、证书校验、禁止HTTP明文传输。
-
433、跨域完整解决方案对比 CORS正式生产、Nginx代理通用、JSONP仅兼容GET、postMessage页面通信。
-
434、CORS预检请求触发条件 非简单请求、自定义请求头、application/json、带Cookie跨域。
-
435、跨域携带Cookie条件 前端withCredentials=true、后端Allow-Credentials=true、禁止*通配域名。
-
436、Nginx反向代理跨域原理 同源访问本地代理、代理转发后端接口、服务器端无跨域限制。
-
437、WebSocket跨域特性 不受HTTP跨域限制,需后端校验Origin来源防恶意连接。
-
438、前端权限控制两层 接口权限(后端拦截)、页面按钮权限(前端隐藏禁用)。
-
439、Token安全存储方案 优先HttpOnly Cookie、规避localStorage被XSS窃取、定期刷新Token。
-
440、安全编码规范 禁止拼接HTML、优先textContent、参数校验、异常捕获、废弃接口下线。
十二、跨端、可视化、测试(441~470)
-
441、跨端开发核心价值 一套代码多端运行、降低开发维护成本、统一多端体验。
-
442、主流跨端方案分类 Web跨端、React Native/Weex原生渲染、Flutter、小程序跨端。
-
443、React Native原理 JS驱动、原生渲染、JS桥接通信,兼顾开发效率与原生体验。
-
444、Uni-app跨端能力 一套代码编译H5/小程序/App,生态完善,国内小程序开发主流。
-
445、Taro跨端优势 支持React/Vue语法、多端一致性高、工程化完善。
-
446、小程序双线程机制 渲染线程+逻辑线程,分离渲染与计算,提升流畅度。
-
447、小程序性能优化 分包加载、预加载、图片压缩、减少setData频次、虚拟列表。
-
448、大屏可视化技术栈 ECharts/AntV、DataV、Three.js、WebGL、SVG可视化。
-
449、ECharts核心能力 常规图表、自适应、事件交互、数据动态更新、tooltip、图例联动。
-
450、AntV生态优势 图表更美观、定制性强、支持复杂拓扑、流程图、地理可视化。
-
451、大数据可视化优化 数据采样、防抖更新、虚拟渲染、离屏画布、分层绘制。
-
452、WebGL/Three.js场景 3D模型、动画场景、三维大屏、模型交互、粒子特效。
-
453、Canvas大屏适配方案 分辨率适配、等比缩放、自动重绘、窗口resize监听。
-
454、前端测试三大类型 单元测试、集成测试、E2E端到端测试。
-
455、单元测试作用 校验工具函数、核心逻辑、边界用例,保障代码重构不崩。
-
456、Jest单元测试框架 零配置、快照测试、模拟函数、异步测试、覆盖率统计。
-
457、React/Vue组件测试 @testing-library渲染组件、断言DOM、模拟用户交互。
-
458、E2E端到端测试 Cypress/Playwright模拟真实用户操作,全流程自动化测试。
-
459、测试覆盖率指标 语句覆盖、分支覆盖、函数覆盖、行覆盖,保障代码健壮性。
-
460、自动化测试落地流程核心逻辑单测→页面E2E→CI自动执行→报错拦截。
-
461、组件库测试规范 单测校验功能、视觉回归测试、多浏览器兼容测试。
-
462、多浏览器兼容方案 Babel兼容、autoprefixer补样式、polyfill补API、浏览器差异适配。
-
463、移动端兼容要点 机型适配、系统版本兼容、手势兼容、软键盘适配。
-
464、PWA核心能力 离线缓存、桌面图标、消息推送、秒开体验、接近原生。
-
465、微前端核心价值 大型项目拆分、独立部署、技术栈异构、增量迭代升级。
-
466、微前端主流框架 qiankun、single-spa、icestark,实现应用隔离、样式隔离、JS隔离。
-
467、微前端隔离方案 样式隔离scoped/Shadow DOM、JS沙箱隔离、全局变量隔离。
-
468、前端监控体系 错误监控、性能监控、用户行为监控、白屏监控、接口监控。
-
469、错误捕获全覆盖 同步错误、异步错误、资源加载错误、路由错误、全局未捕获异常。
-
470、日志上报策略 异步上报、合并上报、防抖上报、异常分级上报,不阻塞主业务。
十三、大高频(471~500)
-
471、手写防抖函数完整版 定时器延迟执行、连续触发重置计时、立即执行选项、取消防抖功能。
-
472、手写节流函数完整版 时间戳/定时器双版本、固定间隔执行、首尾执行、取消节流。
-
473、手写深拷贝完整代码 递归遍历、区分数组对象、处理循环引用、兼容函数/Symbol/正则。
-
474、手写Promise核心原理 状态管理、resolve/reject、then链式调用、异步队列、值穿透。
-
475、手写Promise.all/race/allSettled 批量处理Promise、统计完成状态、处理失败逻辑。
-
476、手写bind/call/apply 改变this指向、参数处理、返回新函数、原型保留。
-
477、手写new操作符 创建空对象、绑定原型、执行构造函数、判断返回值。
-
478、手写数组去重(多种方案) Set、Map、双层循环、filter、对象键值去重。
-
479、手写数组扁平化 递归实现、迭代实现、兼容多维数组、Infinity全展开。
-
480、手写发布订阅模式 事件中心、on订阅、emit发布、off取消、once单次订阅。
-
481、手写节流防抖应用场景 搜索框、滚动加载、窗口缩放、鼠标移动、按钮防重复点击。
-
482、异步串行/并行控制 批量异步、顺序执行、并发限制、异步队列调度。
-
483、长列表卡顿解决方案 虚拟列表、分批渲染、数据分片、防抖渲染、销毁不可见DOM。
-
484、首屏白屏问题排查与修复 资源阻塞、JS报错、样式缺失、渲染阻塞、网络异常兜底。
-
485、前端跨域问题全方位解决 开发代理、生产Nginx、服务端CORS、WebSocket、postMessage场景适配。
-
486、大数据渲染优化实战虚拟滚动、数据懒加载、WebWorker计算、分片渲染、避免循环读写布局。
-
487、React重复渲染终极优化 memo+useCallback+useMemo、状态下沉、拆分组件、消除无效依赖。
-
488、Vue性能优化实战 按需引入、缓存组件、虚拟列表、减少watch监听、合理使用v-if/v-show。
-
489、前端内存泄漏排查与修复 定时器清空、事件解绑、DOM引用释放、闭包置空、全局变量回收。
-
490、打包速度与体积双重优化 缓存优化、代码分割、Gzip、按需引入、剥离依赖、压缩资源。
-
491、权限系统前端实现方案 路由权限、按钮权限、接口权限、动态路由、权限缓存。
-
492、登录态过期与Token刷新方案 无感刷新、双Token机制、过期拦截、排队请求重发。
-
493、海量日志/数据前端处理 流式解析、分片处理、WebWorker、避免主线程阻塞。
-
494、图片批量上传与断点续传 文件切片、并发控制、进度监听、失败重试、断点缓存。
-
495、复杂表单校验与性能优化 统一校验规则、防抖校验、按需校验、缓存校验结果。
-
496、前端异常监控与上报 全局捕获错误、错误分类、堆栈解析、用户信息上报、告警机制。
-
497、弱网/断网适配方案 网络监听、资源兜底、缓存降级、重试机制、友好提示。
-
498、组件封装最佳实践 props校验、默认值、插槽扩展、事件透出、样式隔离、TS类型约束。
-
499、项目工程化落地完整流程 规范约束、校验格式化、提交规范、自动化构建、CI/CD部署、监控迭代。
-
500、前端高阶成长总结 夯实原生基础、吃透框架原理、精通工程化、深耕性能安全、具备场景落地与问题排查能力。