面试八股文
这哪里是八股文啊,几乎是全部可能问到的问题了吧🥲
🔹 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