Skip to content

面试八股文

这哪里是八股文啊,几乎是全部可能问到的问题了吧🥲

🔹 HTTP / 网络相关(共 70+ 题)

  • 【Q035】http 常见的状态码有哪些
  • 【Q036】http 状态码中 301,302和307有什么区别
  • 【Q050】http 状态码 502 和 504 有什么区别
  • 【Q079】简述 http 的缓存机制
  • 【Q081】http proxy 的原理是什么
  • 【Q084】随着 http2 的发展,前端性能优化中的哪些传统方案可以被替代
  • 【Q085】http2 与 http1.1 有什么改进
  • 【Q107】什么是 Basic Auth 和 Digest Auth
  • 【Q108】gzip 的原理是什么,如何配置
  • 【Q109】可以对图片开启 gzip 压缩吗,为什么
  • 【Q110】http 的请求报文与响应报文的格式是什么
  • 【Q111】http 响应头中的 ETag 值是如何生成的
  • 【Q112】如果 http 响应头中 ETag 值改变了,是否意味着文件内容一定已经更改
  • 【Q116】http 服务中静态文件的 Last-Modified 是根据什么生成的
  • 【Q117】既然 http 是无状态协议,那它是如何保持登录状态
  • 【Q119】https 是如何保证报文安全的
  • 【Q121】我们如何从 http 的报文中得知该服务使用的技术栈
  • 【Q122】在发送 http 请求报文时,Host 是必要的吗
  • 【Q133】http 响应头中如果 content-type 为 application/octet-stream,则代表什么意思
  • 【Q136】http 向 https 做重定向应该使用哪个状态码
  • 【Q141】http 响应头中的 Date 与 Last-Modified 有什么不同,网站部署时需要注意什么
  • 【Q144】http 1.1 中的 keep-alive 有什么作用
  • 【Q147】当在浏览器中看到某资源使用了 http2 后,使用curl为什么看到的仍是 http 1.1
  • 【Q149】什么是队首阻塞,如何解决,原理如何
  • 【Q192】简述你们前端项目中资源的缓存配置策略
  • 【Q206】no-cache 与 no-store 的区别是什么
  • 【Q252】https 中如何保证证书是可信任的
  • 【Q267】CSP 是干什么用的了
  • 【Q273】http2 中的首部压缩的实现原理是什么
  • 【Q283】http 请求头中的 X-Forwarded-For 代表什么意思
  • 【Q301】base64 由哪64个字符构成
  • 【Q325】关于 cors 的响应头有哪些
  • 【Q327】如何避免 CDN 为 PC 端缓存移动端页面
  • 【Q356】在 node 端如何向服务器上传文件
  • 【Q358】什么情况下会发送 OPTIONS 请求
  • 【Q359】CORS 如果需要指定多个域名怎么办
  • 【Q361】既然 cors 配置可以做跨域控制,那可以防止 CSRF 攻击吗
  • 【Q387】http2 中 server push 与 websocket 有什么区别
  • 【Q388】简述下 TLS 握手过程
  • 【Q390】简单介绍一下 RSA 算法
  • 【Q391】https 层可以做哪些性能优化
  • 【Q392】ECDHE 与 RSA 有何区别
  • 【Q394】https 中证书的格式化信息有哪些
  • 【Q395】https 连接时如何保证证书没被废弃掉
  • 【Q396】TLS1.3 相比 TLS1.2 有何不同
  • 【Q398】在 wireshark 中如何抓包 https/http2
  • 【Q401】在 TLS 层如何优化网站性能
  • 【Q419】DV、OV、EV 类的证书有何区别
  • 【Q420】https 中是如何进行身份认证的
  • 【Q431】http 状态码 401 和 403 有什么区别
  • 【Q434】当服务器资源返回 304 时与那些 HTTP 响应头有关
  • 【Q442】http3 解决了什么问题
  • 【Q554】SameSite Cookie 有哪些值,是如何预防 CSRF 攻击的
  • 【Q560】Data URL 的应用场景及如何生成
  • 【Q578】HTTP 响应头 cache-control: s-maxage=0 是什么意思
  • 【Q579】http 缓存控制中 Cach-Control 为 public 与 private 有何区别
  • 【Q580】http 方法 get 与 post 有何区别
  • 【Q583】http 状态码 204 使用在什么场景
  • 【Q584】现代前端应用应如何配置 HTTP 缓存机制
  • 【Q585】如何确保你们的项目开启了 gzip
  • 【Q586】HTTP 有哪些常见的请求头和响应头
  • 【Q588】什么是 HSTS
  • 【Q589】http 中 referer 请求头是做什么的
  • 【Q616】在 nginx 中如何配置 HTTP 协商缓存
  • 【Q617】什么是 base64 与 URL Safe base64
  • 【Q639】HTTP 与 TCP 中的 keep-alive 各是什么
  • 【Q650】http 各个版本间各有什么改进
  • 【Q651】简述 http3,http3 解决了什么问题
  • 【Q652】http2 中 Stream 与 Frame 是什么关系
  • 【Q658】什么是点击劫持(ClickJacking),如何预防
  • 【Q687】https 如何被抓包,原理是什么
  • 【Q696】OSCP Stapling 是什么
  • 【Q700】http client 中如何得知已接收完所有响应数据
  • 【Q738】websocket 和短轮询有什么区别
  • 【Q741】我们上传图片为 Blob/File 对象时,是如何向服务器端传送数据的

🔹 CSS(共 60+ 题)

  • 【Q009】如何实现一个元素的水平垂直居中
  • 【Q017】css 如何实现左侧固定300px,右侧自适应的布局
  • 【Q034】如何实现一个 loading 动画
  • 【Q175】如何使用 css 写一个魔方
  • 【Q178】如何使用 css 写一个有 3D 效果的立方体
  • 【Q184】有没有使用过 css variable,它解决了哪些问题
  • 【Q185】谈谈你对 styled-component 的看法
  • 【Q190】使用 CSS 如何画一个三角形
  • 【Q279】display: inline 的元素设置 margin 和 padding 会生效吗
  • 【Q280】html 的默认 display 属性是多少
  • 【Q281】响应式布局需要注意哪一些
  • 【Q282】对一个非定长宽的块状元素如何做垂直水平居中
  • 【Q306】如何实现左右固定,中间自适应布局
  • 【Q307】如何实现表格单双行条纹样式
  • 【Q309】简述下 css specificity
  • 【Q315】'+' 与 '~[' 选择器有什么不同
  • 【Q317】有哪些 css 属性不能展示动画效果
  • 【Q319】css 动画与 js 动画哪个性能更好
  • 【Q321】 css 中属性选择器及类选择器的权重哪个高
  • 【Q324】为什么会发生样式抖动
  • 【Q334】position: sticky 如何工作,适用于哪些场景
  • 【Q335】什么是层叠上下文 (stacking contect),谈谈对它的理解
  • 【Q336】你用 css 实现过什么不错的效果
  • 【Q337】你做前端有多少时间花在写 css 上
  • 【Q339】伪类与伪元素有什么区别
  • 【Q364】css 如何匹配前N个子元素及最后N个子元素
  • 【Q370】如何使用 CSS 实现网站的暗黑模式 (Dark Mode)
  • 【Q444】介绍 CSS 隐藏页面中某个元素的几种方法
  • 【Q465】css 如何实现响应式布局大屏幕三等分、中屏幕二等分、小屏幕一等分
  • 【Q468】前端开发中如何进行多主题配置
  • 【Q471】如何自定义滚动条的样式
  • 【Q478】如何实现容器中子元素三个三列布局,子元素两个则两列布局
  • 【Q481】网站设置字体时,如何设置优先使用系统默认字体
  • 【Q485】写 CSS 时如何避免命名样式冲突
  • 【Q492】CSS 如何设置方格背景
  • 【Q496】如何更好地给元素设置 z-index
  • 【Q504】画一个 100x100 的方框,其中文字可以正常换行,文字过多超过方框显示滚动条
  • 【Q506】Grid 布局如何实现类似 flex: row-reverse
  • 【Q516】HTML 标签有哪些行内元素
  • 【Q517】CSS如何设置一行超出显示省略号
  • 【Q518】CSS如何设置多行超出显示省略号
  • 【Q525】flex 布局中 order 有何作用
  • 【Q526】flex 布局中 align-content 与 align-items 有何区别
  • 【Q531】子元素垂直居中,并且该子元素的长度/宽度为父容器宽度(width)一半的正方形
  • 【Q532】简述 css 中 position 的值
  • 【Q533】什么是 BFC
  • 【Q534】CSS 如何实现固定长宽比的元素
  • 【Q535】rem、em、vw、vh 的值各是什么意思
  • 【Q536】normalize.css 与 reset.css 又何区别
  • 【Q537】line-height 的值分别取2, 2em, 200%有什么区别?
  • 【Q547】某元素的 fontSize: 2rem; lineHeight: 1.5em; 此时 lineHeight 为多少像素
  • 【Q553】Grid 布局的优势在哪里
  • 【Q557】如何实现三列均分布局
  • 【Q563】什么是媒体查询,JS 可以监听媒体查询吗
  • 【Q564】z-index: 999 元素一定会置于 z-index: 0 元素之上吗
  • 【Q608】请简介 CSS 的盒模型
  • 【Q620】CSS 有哪些选择器
  • 【Q621】CSS 有哪些伪类与伪元素选择器
  • 【Q654】css加载会阻塞DOM树的解析和渲染吗
  • 【Q669】在 CSS 中,使用 rem 作为单位有何缺点
  • 【Q695】Flex 布局中的 flex-basis 与 width 有何区别

🔹 DOM / 浏览器 API(共 50+ 题)

  • 【Q001】网站开发中,如何实现图片的懒加载
  • 【Q160】如何设置一个 cookie
  • 【Q161】如何删除一个 cookie
  • 【Q210】如何判断当前环境是移动端还是PC端
  • 【Q214】input 中监听值的变化是在监听什么事件
  • 【Q215】什么是跨域,如何解决跨域问题
  • 【Q267】CSP 是干什么用的了
  • 【Q284】prefetch 与 preload 的区别是什么
  • 【Q295】fetch 中 credentials 指什么意思,可以取什么值
  • 【Q311】当 cookie 没有设置 maxage 时,cookie 会存在多久
  • 【Q313】在浏览器中如何获取剪切板中内容
  • 【Q362】js 动画和 css 动画那个性能比较好
  • 【Q374】简单介绍 requestIdleCallback 及使用场景
  • 【Q411】如何找到当前页面出现次数最多的HTML标签
  • 【Q425】什么是层叠上下文 (stacking context)
  • 【Q430】如何把 DOM 转化为图片
  • 【Q437】浏览器的剪切板中如何监听复制事件
  • 【Q439】JSONP 的原理是什么,如何实现
  • 【Q446】如何实现页面文本不可复制
  • 【Q448】异步加载 JS 脚本时,async 与 defer 有何区别
  • 【Q454】load 事件与 DomContentLoaded 事件的先后顺序
  • 【Q455】React/Vue 中的 router 实现原理如何
  • 【Q463】前端如何实现文件上传功能
  • 【Q472】什么是 HTML 的实体编码 (HTML Entity Encode)
  • 【Q493】如何取消请求的发送
  • 【Q542】DOM 中如何阻止事件默认行为,如何判断事件否可阻止?
  • 【Q543】什么是事件冒泡和事件捕获
  • 【Q544】什么是事件委托,e.currentTarget 与 e.target 有何区别
  • 【Q545】关于事件捕获和冒泡,以下代码输出多少
  • 【Q546】浏览器中 cookie 有哪些字段
  • 【Q548】DOM 中 Element 与 Node 有何区别
  • 【Q554】SameSite Cookie 有哪些值,是如何预防 CSRF 攻击的
  • 【Q555】sessionStorage与localStorage有何区别
  • 【Q556】如何封装一个支持过期时间的 localStorage
  • 【Q558】如何统计当前页面出现的所有标签
  • 【Q559】如何监听 localStorage 的变动
  • 【Q560】Data URL 的应用场景及如何生成
  • 【Q565】浏览器中事件有哪些属性与方法
  • 【Q570】浏览器中如何读取二进制信息
  • 【Q595】React 中监听 input 的 onChange 事件的原生事件是什么
  • 【Q596】在浏览器中点击 a 标签保存为文件如何做
  • 【Q646】如何禁止打开浏览器控制台
  • 【Q667】简述下 WebWorker,它如何进行通信
  • 【Q671】浏览器中监听事件函数 addEventListener 第三个参数有那些值
  • 【Q675】浏览器中 Frame 与 Event Loop 的关系是什么
  • 【Q726】浏览器中如何使用原生的 ESM
  • 【Q755】简述 WebWorker API

🔹 HTML(共 10+ 题)

  • 【Q001】网站开发中,如何实现图片的懒加载
  • 【Q019】浏览器中如何实现剪切板复制内容的功能
  • 【Q126】localhost:3000 与 localhost:5000 的 cookie 信息是否共享
  • 【Q159】什么是 CSRF 攻击
  • 【Q313】在浏览器中如何获取剪切板中内容
  • 【Q349】如何把 json 数据转化为 demo.json 并下载文件
  • 【Q374】简单介绍 requestIdleCallback 及使用场景
  • 【Q461】如何计算白屏时间和首屏时间
  • 【Q464】什么是重排重绘,如何减少重拍重绘
  • 【Q469】HTML 中的 input 标签有哪些 type
  • 【Q470】什么是 Data URL
  • 【Q472】什么是 HTML 的实体编码 (HTML Entity Encode)
  • 【Q476】textarea 如何禁止拉伸
  • 【Q477】在 Canvas 中如何处理跨域的图片
  • 【Q493】如何取消请求的发送
  • 【Q516】HTML 标签有哪些行内元素
  • 【Q530】HTML 中有哪些语义化标签
  • 【Q582】什么是 URL 编码 (URL Encode)

🔹 JavaScript(共 130+ 题)

  • 【Q003】什么是防抖和节流,他们的应用场景有哪些
  • 【Q022】如何实现一个简单的 Promise
  • 【Q027】在前端开发中,如何获取浏览器的唯一标识
  • 【Q031】js 中如何实现 bind
  • 【Q032】js 中什么是 softbind,如何实现
  • 【Q088】如何实现 promise.map,限制 promise 并发数
  • 【Q102】有没有用 npm 发布过 package,如何发布
  • 【Q137】js 代码压缩 minify 的原理是什么
  • 【Q148】关于 JSON,以下代码输出什么
  • 【Q159】什么是 CSRF 攻击
  • 【Q168】在 js 中如何把类数组转化为数组
  • 【Q169】Array(100).map(x => 1) 结果是多少
  • 【Q177】如何在 url 中传递数组
  • 【Q181】如何实现 compose 函数,进行函数合成
  • 【Q196】前端中遇到过处理二进制的场景吗
  • 【Q197】什么是 TypedArray
  • 【Q198】如何实现类似 lodash.get 函数
  • 【Q201】js 中什么是可选链操作符,如何访问数组
  • 【Q202】如何实现一个深拷贝 (cloneDeep)
  • 【Q215】什么是跨域,如何解决跨域问题
  • 【Q220】请简述一下 event loop
  • 【Q228】如何实现一个 flatMap 函数 (头条)
  • 【Q230】如何裁剪图片 (情景:选择头像)
  • 【Q240】如何实现一个 async/await
  • 【Q241】如何使用 async/await 实现 Promise.all 的效果
  • 【Q243】有没有遇到 js 捕捉不到异常堆栈信息的情况
  • 【Q245】有没有用过 Promise.allSettled() ,它是干什么的
  • 【Q249】使用 js 实现一个 lru cache
  • 【Q253】cookie 有哪些字段
  • 【Q263】你们项目的测试覆盖率是怎么做的
  • 【Q266】bind 与 call/apply 的区别是什么
  • 【Q272】如何查看你们 JS 项目中应采用的 node 版本
  • 【Q285】有没有做过裁剪头像图片的需求,如何实现
  • 【Q291】简述 node/v8 中的垃圾回收机制
  • 【Q295】fetch 中 credentials 指什么意思,可以取什么值
  • 【Q305】如何删除项目中没有使用到的 package
  • 【Q312】如何实现 Promise.race
  • 【Q338】js 中在 new 的时候发生了什么
  • 【Q355】什么是 Iterable 对象,与 Array 有什么区别
  • 【Q357】js 如何全部替代一个子串为另一个子串
  • 【Q377】在 js 中如何实现继承
  • 【Q384】python 中的 self 与 javascript 中的 this 有何不同
  • 【Q389】以下输出顺序多少 (setTimeout 与 promise 顺序)
  • 【Q399】实现一个 once 函数,记忆返回结果只执行一次
  • 【Q402】如何实现一个函数 isPlainObject 判断是否为纯对象
  • 【Q421】如何实现一个无限累加的 sum 函数
  • 【Q422】JS 如何实现一个同步的 sleep 函数
  • 【Q429】实现一个函数用来解析 URL 的 querystring
  • 【Q435】JS 如何实现一个 sleep/delay 函数
  • 【Q436】如何实现一个 sample 函数,从数组中随机取一个元素
  • 【Q437】浏览器的剪切板中如何监听复制事件
  • 【Q439】JSONP 的原理是什么,如何实现
  • 【Q440】实现一个函数用来对 URL 的 querystring 进行编码
  • 【Q441】v8 是如何执行一段 JS 代码的
  • 【Q443】实现一个数组扁平化的函数 flatten
  • 【Q444】介绍 CSS 隐藏页面中某个元素的几种方法
  • 【Q445】实现一个数组去重函数 unique
  • 【Q446】如何实现页面文本不可复制
  • 【Q447】如何实现一个数组洗牌函数 shuffle
  • 【Q448】异步加载 JS 脚本时,async 与 defer 有何区别
  • 【Q449】vue3 中,如何监听数组的变化
  • 【Q452】现代框架如 React、Vue 相比原生开发有什么优势
  • 【Q453】typeof 与 instanceof 的区别
  • 【Q462】JS 如何翻转一个字符串
  • 【Q463】前端如何实现文件上传功能
  • 【Q473】关于模块化,什么是 amd 和 umd
  • 【Q474】简单介绍以下浏览器中的 module
  • 【Q475】什么是 commonjs2
  • 【Q479】前端上传文件时如何读取文件内容
  • 【Q480】你最喜欢的三个 js 库是什么
  • 【Q482】现代化前端框架中如何进行调试
  • 【Q489】如何实现一个函数 lodash.merge
  • 【Q490】如何实现一个 promise.any
  • 【Q491】如何实现一个 Promise.all
  • 【Q494】如何过滤数组中的 falsy value
  • 【Q495】如何把一个数组随机打乱
  • 【Q505】JS 中基础数据类型有哪些
  • 【Q507】如何创建一个数组大小为100,每个值都为0的数组
  • 【Q513】有没有使用过 async/await,他们的原理是什么
  • 【Q514】什么是闭包,闭包的应用有哪些地方
  • 【Q515】关于事件循环,一道异步代码执行输出顺序问题
  • 【Q527】解构赋值一个数组,a 取第一项默认值为 3,c取剩下的值组成数组
  • 【Q528】解构赋值以下对象,他们的值是多少
  • 【Q529】Map 与 WeakMap 有何区别
  • 【Q539】Javascript 数组中有那些方法可以改变自身,那些不可以
  • 【Q540】如何判断一个数组是否包含某个值
  • 【Q541】如何判断字符串包含某个子串
  • 【Q549】如何判断某一个值是数组
  • 【Q550】简述 Object.defineProperty
  • 【Q551】Object.keys 与 Object.getOwnPropertyNames() 有何区别
  • 【Q558】如何统计当前页面出现的所有标签
  • 【Q561】实现一个 inherits 函数进行继承
  • 【Q562】WeakMap 与垃圾回收有何关系
  • 【Q563】什么是媒体查询,JS 可以监听媒体查询吗
  • 【Q566】关于块级作用域,以下代码输出多少,在何时间输出
  • 【Q567】如何逆序一个字符串
  • 【Q568】为何 0.1+0.2 不等于 0.3,应如何做相等比较
  • 【Q569】关于 this 与包装对象,以下输出多少
  • 【Q571】关于类型转化,判断以下代码输出
  • 【Q572】关于暂时性死域,判断以下代码输出
  • 【Q573】关于词法作用域,判断以下代码输出
  • 【Q574】关于 this,判断以下代码输出
  • 【Q575】关于 new,判断以下代码输出
  • 【Q577】关于简单的事件循环,判断以下代码输出
  • 【Q581】箭头函数和普通函数的区别
  • 【Q591】什么是纯函数
  • 【Q594】给数字添加千位符
  • 【Q598】如何实现一个深比较的函数 deepEqual
  • 【Q599】Object.is 与全等运算符( === )有何区别
  • 【Q602】如何把对象转化为 key/value 的二维数组
  • 【Q603】在 JS 中如何监听 Object 某个属性值的变化
  • 【Q605】js 中什么是 AsyncIterable
  • 【Q606】关于事件循环,仅有 Promise,判断以下代码输出
  • 【Q610】了解什么是 JSBridge 吗
  • 【Q618】列举 Number、String、Array、Object、Promise 有哪些 API
  • 【Q619】使用 JS 如何生成一个随机字符串
  • 【Q622】Number.isNaN 与 globalThis.isNaN 有何区别
  • 【Q623】如何判断一个数值为整数
  • 【Q630】什么是安全整数,如何判断一个整数是安全整数
  • 【Q638】如何把字符串全部转化为小写格式
  • 【Q647】Array 中那些 API 可改变自身
  • 【Q648】如何把一个数组 Array 转化为迭代器 Iterable
  • 【Q656】JS 中如何实现 call/apply
  • 【Q661】Number 中最大数、最大安全整数、EPSILON 都是多少,原理是什么
  • 【Q665】JS 如何检测到对象中有循环引用
  • 【Q666】实现二进制与十进制的互相转化的两个函数
  • 【Q668】JS 中异步任务为何分为微任务与宏任务
  • 【Q672】什么是原码、补码与反码
  • 【Q685】如何遍历一个对象
  • 【Q688】setTimeout为什么最小只能设置4ms,如何实现一个0ms的setTimeout?
  • 【Q689】JS 中如何原生实现 instanceOf
  • 【Q702】return promise 与 return await promise 有何区别
  • 【Q703】在 ES6 Class 中,super 的过程中做了什么
  • 【Q704】关于 Promise,判断以下代码的输出
  • 【Q737】如何取得一个数字的小数部分与整数部分
  • 【Q743】实现 batchFn 函数,可以批量执行函数
  • 【Q756】Promise.race 与 Promise.any
  • 【Q757】如何解决深拷贝问题中的循环引用

🔹 TypeScript(共 5 题)

  • 【Q676】在 Typescript 中如何实现类型标记 Pick 与 Omit
  • 【Q692】什么是协变与逆变
  • 【Q693】在 ts 中如何实现 Partial
  • 【Q694】在 ts 中什么是 infer,并实现 Parameters 与 ReturnType
  • 【Q706】typescript 中 interface 与 type 有何区别
  • 【Q707】请简述 typescript 中的 infer

🔹 React(共 50+ 题)

  • 【Q008】当新入职一家公司时,如何快速搭建开发环境并让应用跑起来
  • 【Q010】了解 React 中的 ErrorBoundary 吗,它有那些使用场景
  • 【Q013】有没有使用过 react hooks,它带来了那些便利
  • 【Q014】如何使用 react hooks 实现一个计数器的组件
  • 【Q021】React 中,cloneElement 与 createElement 各是什么,有什么区别
  • 【Q038】使用 react 实现一个通用的 message 组件
  • 【Q066】如何使用 react hooks 实现 useFetch 请求数据
  • 【Q067】react 如何使用 render prop component 请求数据
  • 【Q068】React Portal 有哪些使用场景
  • 【Q069】什么是 virtual DOM,它的引入带了什么好处
  • 【Q071】react 与 vue 数组中 key 的作用是什么
  • 【Q092】react 中 ref 是干什么用的,有哪些使用场景
  • 【Q100】如何使用 react/vue 实现一个 message API
  • 【Q142】react hooks 中如何模拟 componentDidMount
  • 【Q146】如果使用 SSR,可以在 created/componentWillMount 中访问 localStorage 吗
  • 【Q151】react hooks 如何替代或部分替代 redux 功能
  • 【Q152】如何实现一个 react hook,你有没有自己写过一个
  • 【Q154】在 react/vue 中数组是否可以以在数组中的次序为 key
  • 【Q164】React 中 fiber 是用来做什么的
  • 【Q211】React hooks 中 useCallback 的使用场景是什么
  • 【Q235】useEffect 中如何使用 async/await
  • 【Q271】react hooks 的原理是什么
  • 【Q277】redux 解决什么问题,还有什么其他方案
  • 【Q278】为什么不能在表达式里面定义 react hooks
  • 【Q367】redux 和 mobx 有什么不同
  • 【Q368】关于 React hooks 的 caputre value,以下输出多少
  • 【Q369】在 React 项目中 immutable 是优化性能的
  • 【Q371】在 redux 中如何发送请求
  • 【Q375】在 redux 中如何写一个记录状态变更的日志插件
  • 【Q378】React 在 setState 时发生了什么
  • 【Q380】如何设计一个UI组件库
  • 【Q403】React 中的 dom diff 算法如何从 O(n3) 优化到 O(n) 的
  • 【Q404】在 React 应用中如何排查性能问题
  • 【Q408】React 17.0 有什么变化
  • 【Q452】现代框架如 React、Vue 相比原生开发有什么优势
  • 【Q455】React/Vue 中的 router 实现原理如何
  • 【Q466】在 SSR 项目中如何判断当前环境时服务器端还是浏览器端
  • 【Q497】React.setState 是同步还是异步的
  • 【Q498】什么是服务器渲染 (SSR)
  • 【Q499】在 React 中如何实现代码分割 (code splitting)
  • 【Q500】在 React 中如何做好性能优化
  • 【Q501】在 React 中发现状态更新时卡顿,此时应该如何定位及优化
  • 【Q502】当多次重复点击按钮时,以下三个 Heading 是如何渲染的
  • 【Q539】Javascript 数组中有那些方法可以改变自身,那些不可以
  • 【Q552】关于 setState 以下代码的输出
  • 【Q590】React 中什么是合成事件
  • 【Q592】前端项目中有哪些副作用
  • 【Q593】React/Vue 中受控组件与不受控组件的区别
  • 【Q595】React 中监听 input 的 onChange 事件的原生事件是什么
  • 【Q600】在 React hooks 中如何模拟 forceUpdate
  • 【Q611】React/Vue 中兄弟组件如何进行通信
  • 【Q612】React.memo 中是如何实现性能优化的
  • 【Q614】immer 的原理是什么,为什么它的性能更高
  • 【Q615】React.useMemo 与 React.useCallback 是如何进行性能优化的
  • 【Q624】同一页面三个组件请求同一个 API 发送了三次请求,如何优化
  • 【Q627】如何优化 React 项目的性能
  • 【Q653】useLayoutEffect 和 useEffect 有什么区别
  • 【Q659】在 React Hooks 中实现 usePreviouseValue 取上次渲染的值
  • 【Q699】在虚拟 DOM 中进行 diff 算法时,介绍当根据 key 对数组进行重用时的算法
  • 【Q474】在 react 中,以下父子组件的 useEffect/useLayoutEffect 顺序如何
  • 【Q749】React18 有哪些新特性
  • 【Q750】React19 有哪些新特性

🔹 Vue(共 15+ 题)

  • 【Q008】当新入职一家公司时,如何快速搭建开发环境并让应用跑起来
  • 【Q011】vue3.0 中为什么要使用 Proxy,它相比以前的实现方式有什么改进
  • 【Q071】react 与 vue 数组中 key 的作用是什么
  • 【Q089】vue 中 v-if 和 v-show 的区别是什么
  • 【Q090】vue 中 computed 的原理是什么
  • 【Q091】vue-loader 的实现原理是什么
  • 【Q100】如何使用 react/vue 实现一个 message API
  • 【Q146】如果使用 SSR,可以在 created/componentWillMount 中访问 localStorage 吗
  • 【Q154】在 react/vue 中数组是否可以以在数组中的次序为 key
  • 【Q380】如何设计一个UI组件库
  • 【Q449】vue3 中,如何监听数组的变化
  • 【Q450】Vue 中 nextTick 的实现原理是什么
  • 【Q452】现代框架如 React、Vue 相比原生开发有什么优势
  • 【Q455】React/Vue 中的 router 实现原理如何
  • 【Q592】前端项目中有哪些副作用
  • 【Q593】React/Vue 中受控组件与不受控组件的区别
  • 【Q611】React/Vue 中兄弟组件如何进行通信
  • 【Q699】在虚拟 DOM 中进行 diff 算法时,介绍当根据 key 对数组进行重用时的算法

🔹 其他分类(手写代码 / Node / Webpack / 工程化 / 算法等)

  • 手写代码:深拷贝、LRU、Promise.all、防抖节流等
  • Node.js:cluster、stream、中间件、GC 等
  • Webpack:loader/plugin、HMR、Tree Shaking、Code Splitting
  • 前端工程化:npm、CI/CD、部署、性能监控
  • 算法与数据结构:LRU