跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python大前端算法

从 Stack Reconciler 到 Fiber:一份前端面试常考的 React 架构解读

梳理React Fiber架构的动机与设计,解析其如何解决Stack Reconciler同步渲染带来的卡顿问题,并整理前端面试高频题目,覆盖JS、React、Vue、CSS等专题,适合面试前查漏补缺。

时间旅人发布于 2026/6/16更新于 2026/10/1673 浏览
从 Stack Reconciler 到 Fiber:一份前端面试常考的 React 架构解读

面试时 Fiber 这种问题几乎绕不开。我第一次被问到的时候直接蒙了,后来花时间啃源码、看资料,才搞清楚 React 为什么要搞这么一套东西。这篇就当是我的复盘,希望帮你省点时间。

为什么会有卡顿?先看浏览器怎么干活

JavaScript 是单线程的,浏览器却是多线程的——除了跑 JS,还得管事件、定时器、网络、DOM 渲染。JS 线程和渲染线程互斥,同一时间只能有一个在干活。一旦 JS 长时间霸占主线程,界面就卡住,连点个按钮都没反应。

React 15 及之前版本用的 Stack Reconciler 正好踩了这个坑。它是一个同步递归过程,一旦开始更新就无法中断。虚拟 DOM 树是普通树结构,Diff 算法就是深度优先遍历:从根节点一路对比下去,直到最深层节点处理完才回头。

这有多要命?组件树复杂、数据量大时,整棵树 Diff 完可能要几十甚至几百毫秒。这段时间里 JS 线程完全被占用,渲染线程干瞪眼,用户看到的就是卡顿甚至卡死。

Fiber 想干什么:把大活切成小活

'Fiber'在计算机里是比线程更细的'纤程',React 借这个字眼就是想对渲染过程做精细控制。

  • 架构层面:Fiber 是 React 16 对调和过程「Reconciler」的重写
  • 数据结构层面:Fiber 节点是新版虚拟 DOM,每个节点保存了组件状态、副作用等信息
  • 工作流层面:一个 Fiber 就是一个工作单元

核心目标就一个:增量渲染。把一整个渲染任务分解到多帧里,这样就能随时暂停、恢复,还能给不同更新赋予优先级,体验自然更顺滑。

可中断、可恢复、优先级:三层架构成型

React 15 的架构只有两层:Reconciler 对比新旧虚拟 DOM,Renderer 把变化写入视图,整个过程严格同步。

React 16 加了一层 Scheduler 调度器,变成三层:

图片

旧 Reconciler 基于树的深度优先遍历,本质离不开递归。

图片

老架构:Reconciler → Renderer 是一条道走到黑。

图片

新架构多了 Scheduler,专门调度更新优先级。

工作流大概是这样的:每个更新任务都会带个优先级。高优先级任务一来,调度器会插队,中断当前正在 Reconciler 里干活的低优先级任务。等高优任务走完渲染了,之前被中断的任务再被推回 Reconciler 层接着干,这就是可恢复。

这套机制让 React 可以灵活控制渲染节奏,而不是像以前那样一干到底。当然,Fiber 不是银弹,任务切分和调度本身也有开销,但至少把「能不能中断」这个死结解开了。

面试题集锦

下面是我收集的高频前端面试题,按类别分了类,方便针对性复习。多数只列了问题,答案自己动手查一查印象更深。

JavaScript
  • pnpm 相比于 npm 和 yarn 的优势是什么?
  • 如果使用 Math.random() 计算中奖概率会有什么问题吗?
  • 怎么使用 js 实现拖拽功能?
  • 举例说明你对尾递归的理解,以及有哪些应用场景
  • 说说你对 Iterator, Generator 和 Async/Await 的理解
  • 说说你对模块化方案的理解,比如 CommonJS, AMD, CMD, ES Module
  • 前端跨页面通信,你知道哪些方法?
  • JavaScript 脚本延迟加载的方式有哪些?
  • 怎么理解 ES6 中 Generator 的?使用场景有哪些?
  • 导致页面加载白屏时间长的原因有哪些,怎么进行优化?
  • 微前端中的应用隔离是什么,一般是怎么实现的?
  • JavaScript 对象的底层数据结构是什么?
  • 浏览器和 Node 中的事件循环有什么区别?
  • 版本号排序
  • 哪些原因会导致 js 里 this 指向混乱?
  • 怎么实现大型文件上传?
  • 说说你的 ES6-ES12 的了解
  • Promise 的 finally 怎么实现的?
  • 怎么使用 js 动态生成海报?
  • 异步编程有哪些实现方式?
  • AST 语法树是什么?
  • JS 内存泄露的问题该如何排查?
  • 实现 mergePromise 函数
  • async、await 实现原理
  • 使用 Promise 实现:限制异步操作的并发个数,并尽可能快的完成全部
React
  • fiber 架构的工作原理?
  • React Reconciler 为何要采用 fiber 架构?
  • useState 是如何实现的?
  • React Fiber 是什么?
  • 简单介绍下 React 中的 diff 算法
  • 如何让 useEffect 支持 async/await?
  • React 中怎么实现状态自动保存 (KeepAlive)?
  • React Fiber 是如何实现更新过程可控?
  • react 中懒加载的实现原理是什么?
  • React 有哪些性能优化的方法?
  • 不同版本的 React 都做过哪些优化?
  • React18 新特性
  • 说说你对 React Hook 的闭包陷阱的理解,有哪些解决方案?
  • React 中,怎么给 children 添加额外的属性?
  • Fiber 为什么是 React 性能的一个飞跃?
  • react 是否支持给标签设置自定义的属性,比如给 video 标签设置 webkit-playsinline?
  • 说说 React render 阶段的执行过程
  • React 中,fiber 是如何实现时间切片的?
  • React 中为什么不直接使用 requestIdleCallback?
  • 说说 React commit 阶段的执行过程
  • React 中的路由懒加载是什么?原理是什么?
  • 为什么 useState 返回的是数组而不是对象?
Vue
  • Vue 模板是如何编译的
  • vue3 相比较于 vue2,在编译阶段有哪些改进?
  • 说说 Vue 页面渲染流程
  • Vue 项目中,你做过哪些性能优化?
  • 如果使用 Vue3.0 实现一个 Modal,你会怎么进行设计?
  • Vue3.0 里为什么要用 Proxy API 替代 defineProperty API?
  • Vue 有了数据响应式,为何还要 diff?
  • 说说 vue3 中的响应式设计原理
  • 说说 Vue 中 CSS scoped 的原理
  • vue3 的响应式库是独立出来的,如果单独使用是什么样的效果?
  • 手写 vue 的双向绑定
  • 什么是虚拟 DOM?如何实现一个虚拟 DOM?说说你的思路
  • SSR 是什么?Vue 中怎么实现?
  • 说下 Vite 的原理
CSS
  1. css 中的 animation, transition, transform 有什么区别?
  2. 怎么做移动端的样式适配?
  3. 相邻的两个 inline-block 节点为什么会出现间隔,该如何解决?
  4. grid 网格布局是什么?
  5. CSS3 新增了哪些特性?
  6. 怎么使用 CSS3 实现动画?
  7. 怎么理解回流跟重绘?什么场景下会触发?
  8. 什么是响应式设计?响应式设计的基本原理是什么?如何进行实现?
  9. 如果使用 CSS 提高页面性能?
  10. 如何实现单行/多行文本溢出的首略样式?
  11. 如何使用 css 完成视差滚动效果?
  12. 怎么使用 CSS 如何画一个三角形
  13. 说说对 CSS 工程化的理解
  14. 怎么触发 BFC,BFC 有什么应用场景?
  15. 单行文本怎么实现两端对齐?
  16. 说说你对 CSS 模块化的理解
  17. CSS 模块化的实现方式
  18. 怎么让 Chrome 支持小于 12px 的文字?
  19. flexbox(弹性盒布局模型) 是什么,适用什么场景?
  20. 如何实现两栏布局,右侧自适应?三栏布局中间自适应呢?
  21. 设备像素、css 像素、设备独立像素、dpr、ppi 之间有什么区别?
  22. 说说你对盒子模型的理解
  23. 怎么实现样式隔离?
  24. flex 布局下,怎么改变元素的顺序?
  25. "flex:auto;"是什么意思?
  26. object-fit 用法
  27. 行内元素和块级元素有什么区别
  28. em/px/rem/vh/vw 这些单位有什么区别?
  29. html 和 css 中的图片加载与渲染规则是什么样的?
  30. CSS 中,有哪些方式可以隐藏页面元素?有什么区别?
  31. CSS3 中 transition 和 animation 的属性分别有哪些?
  32. 说说对 CSS 预编语言的理解,以及它们之间的区别
HTML
  1. 什么是 DOM 和 BOM?
  2. 简单描述从输入网址到页面显示的过程
  3. 一台设备的 dpr,是否是可变的?
  4. 前端该如何选择图片的格式?
  5. 前端跨页面通信,你知道哪些方法?
  6. 说说你对 Dom 树的理解
  7. 行内元素有哪些?块级元素有哪些?空 (void) 元素有那些?
  8. html 和 css 中的图片加载与渲染规则是什么样的?
  9. title 与 h1 的区别、b 与 strong 的区别、i 与 em 的区别?
  10. script 标签为什么建议放在 body 标签的底部 (defer、async)
  11. 说说你对 SSG 的理解
  12. 什么是 HTML5,以及和 HTML 的区别是什么?
  13. 什么是渐进增强和优雅降级?
  14. Node 和 Element 是什么关系?
  15. 导致页面加载白屏时间长的原因有哪些,怎么进行优化?
  16. 如何控制 input 输入框的输入字数?
  17. 渐进式 jpg 有了解过吗?
  18. 假设我要上传图片,怎么在选择图片后,通过浏览器预览待上传的图片?
  19. 怎么实现'点击回到顶部"的功能?
  20. SPA 应用怎么进行 SEO?
  21. 如何实现 SEO 优化
  22. SEO 是什么?
  23. SEO 的原理是什么?
  24. DNS 预解析是什么?怎么实现?
  25. HTML5 有哪些 drag 相关的 API?
  26. 浏览器乱码的原因是什么?如何解决?
  27. Canvas 和 SVG 有什么区别?
  28. 浏览器是如何对 HTML5 的离线储存资源进行管理和加载?
  29. HTML5 的离线储存怎么使用,它的工作原理是什么
  30. img 的 srcset 属性的作用?
  31. label 标签有什么用?
  32. js 和 css 是如何影响 DOM 树构建的?
  33. CSSOM 树和 DOM 树是同时解析的吗?
Node.js
  1. common.js 和 es6 中模块引入的区别?
  2. 为什么 Node 在使用 es module 时必须加上文件扩展名?
  3. 浏览器和 Node 中的事件循环有什么区别?
  4. Node 性能如何进行监控以及优化?
  5. 如果让你来设计一个分页功能,你会怎么设计?前后端如何交互?
  6. 如何实现文件上传?说说你的思路
  7. 如何实现 jwt 鉴权机制?说说你的思路
  8. 说说对中间件概念的理解,如何封装 node 中间件?
  9. 说说 Node 文件查找的优先级以及 Require 方法的文件查找策略?
  10. 说说对 Nodejs 中的事件循环机制理解?
  11. 说说 Node 中的 EventEmitter?如何实现一个 EventEmitter?
  12. 说说对 Node 中的 Stream 的理解?应用场景?
  13. 说说对 Node 中的 Buffer 的理解?应用场景?
  14. 说说对 Node 中的 fs 模块的理解?有哪些常用方法
  15. 说说对 Node 中的 process 的理解?有哪些常用方法?
  16. Node.js 有哪些全局对象?
  17. 说说你对 Node.js 的理解?优缺点?应用场景?
  18. body-parser 这个中间件是做什么用的?
  19. Koa 中,如果一个中间件没有调用 await next(),后续的中间件还会执行吗?
  20. 在没有 async await 的时候,koa 是怎么实现的洋葱模型?
  21. koa 框架中,该怎么处理中间件的异常?
  22. Node.js 如何调试?
  23. 说说你对 koa 洋葱模型的理解
  24. pm2 守护进程的原理是什么?
  25. koa 和 express 有哪些不同?
  26. 两个 Node.js 进程如何通信?
  27. npm 是什么?
TypeScript
  1. 说说对 TypeScript 中命名空间与模块的理解?区别?
  2. 说说你对 typescript 的理解?与 javascript 的区别?
  3. Typescript 中泛型是什么?
  4. TypeScript 中有哪些声明变量的方式?
  5. 什么是 Typescript 的方法重载?
  6. 请实现下面的 sleep 方法
  7. typescript 中的 is 关键字有什么用?
  8. TypeScript 支持的访问修饰符有哪些?
  9. 请实现下面的 myMap 方法
  10. 请实现下面的 treePath 方法
  11. 请实现下面的 product 方法
  12. 请实现下面的 myAll 方法
  13. 请实现下面的 sum 方法
  14. 请实现下面的 mergeArray 方法
  15. 实现下面的 firstSingleChar 方法
  16. 实现下面的 reverseWord 方法
  17. 如何定义一个数组,它的元素可能是字符串类型,也可能是数值类型?
  18. 请补充 objToArray 函数
  19. 使用 TS 实现一个判断传入参数是否是数组类型的方法
  20. TypeScript 的内置数据类型有哪些?
  21. ts 中 any 和 unknown 有什么区别?
  22. 如何将 unknown 类型指定为一个更具体的类型?
  23. 使用 ts 实现一个判断入参是否是数组类型的方法?
  24. tsconfig.json 文件有什么用?
  25. TypeScript 中的 Declare 关键字有什么用?
  26. 解释一下 TypeScript 中的枚举。
  27. TypeScript 的主要特点是什么?
  28. TypeScript 中的方法重写是什么?
  29. 什么是 TypeScript 映射文件?
  30. TypeScript 中的类型有哪些?
  31. 如何检查 TypeScript 中的 null 和 undefined?
  32. 如何在 TypeScript 中实现继承?
  33. 什么是 TypeScript Declare 关键字?
  34. TypeScript 和 JavaScript 的区别是什么?
性能优化
  1. script 标签放在 header 里和放在 body 底部里有什么区别?
  2. 前端性能优化指标有哪些?怎么进行性能检测?
  3. SPA(单页应用) 首屏加载速度慢怎么解决?
  4. 如果使用 CSS 提高页面性能?
  5. 怎么进行站点内的图片性能优化?
  6. 虚拟 DOM 一定更快吗?
  7. 有些框架不用虚拟 dom,但是他们的性能也不错是为什么?
  8. 如果某个页面有几百个函数需要执行,可以怎么优化页面的性能?
  9. 讲一下 png8、png16、png32 的区别,并简单讲讲 png 的压缩原理
  10. 页面加载的过程中,JS 文件是不是一定会阻塞 DOM 和 CSSOM 的构建?
  11. React.memo 和 useMemo 的用法是什么,有哪些区别?
  12. 导致页面加载白屏时间长的原因有哪些,怎么进行优化?
  13. 如果一个列表有 100000 个数据,这个该怎么进行展示?
  14. DNS 预解析是什么?怎么实现?
  15. 在 React 中可以做哪些性能优化?
  16. 浏览器为什么要请求并发数限制?
  17. 如何确定页面的可用性时间,什么是 Performance API?
  18. 谈谈对 window.requestAnimationFrame 的理解
  19. css 加载会造成阻塞吗?
  20. 什么是内存泄漏?什么原因会导致呢?
  21. 如何用 webpack 来优化前端性能
  22. 说说常规的前端性能优化手段
  23. 么是 CSS Sprites?
  24. CSS 优化、提高性能的方法有哪些?
  25. script 标签中,async 和 defer 两个属性有什么用途和区别?
编程题
  1. 使用 Promise 实现红绿灯交替重复亮
  2. bind、call、apply 有什么区别?如何实现一个 bind?
  3. 利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串 aabcccccaaa 会变为...
  4. 说说 new 操作符具体干了什么?
  5. 如何实现上拉加载,下拉刷新?
  6. 大文件怎么实现断点续传?
  7. 什么是防抖和节流,以及如何编码实现?
  8. 说说 ajax 的原理,以及如何实现?
  9. 深拷贝浅拷贝有什么区别?怎么实现深拷贝?
  10. 用 js 实现二叉树的定义和基本操作
  11. 如何实现一个轮播图组件?
  12. 写出一个函数 trans,将数字转换成汉语的输出,输入为不超过 10000 亿的数字。
  13. 将下面的数组转成树状结构
  14. 编写一个 vue 组件,组件内部使用插槽接收外部内容,v-model 双向绑定,实现折叠展开的功能
  15. 实现 lodash 的 set 和 get 方法
  16. 去除字符串中出现次数最少的字符,不改变原字符串的顺序。
  17. 实现一个批量请求函数,要求能够限制并发量
  18. 树转数组
  19. 数组转树
  20. 删除链表的一个节点
  21. 请实现一个函数,要求能在页面请求很多时,尽可能快地按照顺序输出返回的结果。
  22. 实现一个请求函数:fetchWithRetry,要求会最多自动重试 3 次,任意一次成功就直接返回
  23. 链表中,环的入口节点
  24. 多叉树指定层节点的个数
  25. 请手写'快速排序'
  26. 使用 js 实现有序数组原地去重
  27. 计算出下面数组中的平均时间
  28. 实现 compose 函数,类似于 koa 的中间件洋葱模型
  29. 请按以下要求实现方法 fn:遇到退格字符就删除前面的字符,遇到两个退格就删除两个字符
  30. Promise 的 finally 怎么实现的?
  31. 实现一个函数,可以间隔输出
  32. 不定长二维数组的全排列
  33. 两个字符串对比,得出结论都做了什么操作,比如插入或者删除
  34. 实现一个方法,从某个数值数组中,获取最小正数 (非零非负数) 的索引值
场景题
  • 怎么在前端页面中添加水印?
  • 如何封装一个请求,让其多次调用的时候实际只发起一个请求的时候,返回同一份结果
  • web 网页如何禁止别人移除水印
  • react 中怎么实现下拉菜单场景,要求点击区域外能关闭下拉组件
  • 如何搭建一套灰度系统?
  • React 如何实现 vue 中 keep-alive 的功能?
  • 如何监控前端页面的崩溃?
  • 如何在前端团队快速落地代码规范
  • 前端如何实现即时通讯?
  • 用户访问页面白屏了,原因是啥,如何排查
  • 如何给自己团队的大型前端项目设计单元测试?
  • 如何做一个前端项目工程的自动化部署,有哪些规范和流程设计?
  • 你参与过哪些前端基建方面的建设?
  • 假如让你负责一个商城系统的开发,现在需要统计商品的点击量,你有什么样设计与...
  • 前端怎么做错误监控?
  • 如何判断用户设备
  • 将多次提交压缩成一次提交
  • 介绍下 navigator.sendBeacon 方法
  • 混动跟随导航(电梯导航)该如何实现
  • 退出浏览器之前,发送积压的埋点数据请求,该如何做?
  • 如何统计页面的 long task(长任务)【热度:140】
  • PerformanceObserver 如何测量页面性能
  • 移动端如何实现下拉滚动加载(顶部加载)
  • 判断页签是否为活跃状态
  • 在网络带宽一定的情况下,切片上传感觉和整体上传消费的时间应该是差不多的这种说法正确吗?
  • 大文件切片上传的时候,确定切片数量的时候,有那些考量因素
  • 页面关闭时执行方法,该如何做
  • 如何统计用户 pv 访问的发起请求数量
  • 长文本溢出,展开/收起如何实现
  • 如何实现鼠标拖拽
  • 统计全站每一个静态资源加载耗时,该如何做
  • 防止前端页面重复请求
  • ResizeObserver 作用是什么
  • 要实时统计用户浏览器窗口大小,该如何做
  • 当项目报错,你想定位是哪个 commit 引入的错误的时,该怎么做
  • 如何移除一个指定的 commit
  • 如何还原用户操作流程
  • 可有办法将请求的调用源码地址包括代码行数也上报上去?
  • 请求失败会弹出一个 toast,如何保证批量请求失败,只弹出一个 toast【热度:420)
  • 如何减少项目里面 if-else【热度:310】
  • babel-runtime 作用是啥【热度:200】
  • 如何实现预览 PDF 文件
  • 如何在划词选择的文本上添加右键菜单(划词:标滑动选择一组字符,对组字符进行操作)【热度:100】
  • 富文本里面,是如何做到划词的(鼠标滑动选择一组字符,对组字符进行操作?【热度:100】
  • 如何做好前端监控方案【热度:672】
  • 如何标准化处理线上用户反馈的问题【热度:631】
  • px 如何转为 rem【热度:545】
  • 浏览器有同源策略,但是为何 cdn 请求资源的时候不会有跨域限制【热度:579】
  • cookie 可以实现不同域共享吗【热度:533】
  • axios 是否可以取消请求【热度:532】
  • 前端如何实现折叠面板效果?
  • dom 里面,如何判定 a 元素是否是 b 元素的子元素【热度:400】
  • 判断一个对象是否为空,包含了其原型链上是否有自定义数据或者方法。该如何判定?
  • is 如何判空?「空」包含了:空数组、空对象、空字符串、0、undefined、null、空 map、空 set 都属于为空的数据【热度:640】
  • css 实现翻牌效果【热度:116】
  • flex:1 代表什么【热度:400】
  • 一般是怎么做代码重构的
  • 如何清理源码里面没有被应用的代码,主要是 JS、TS.CSS 代码【热度:329】
  • 前端应用如何做国际化?【热度:199】
  • 应用如何做应用灰度发布【热度:247】
  • [微前端] 为何通常在微前端应用隔离,不选择 iframe 方案【热度:280】
  • [微前端] Qiankun 是如何做 JS 隔离的【热度:228】
  • [微前端] 微前端架构一般是如何做 JavaScript 隔离
  • [React] 循环渲染中为什么推荐不用 index 做 key【热度:320】
  • [React] 如何避免使用 context 的时候,引起整个挂载节点树的重新渲染【热度:420】
  • 前端如何实现截图?
  • 当 QPS 达到峰值时,该如何处理?
  • js 超过 Number 最大值的数怎么处理?
  • 使用同一个链接,如何实现 PC 打开是 web 应用、手机打开是一个 H5 应用?【腾讯二面】
  • 如何保证用户的使用体验【字节一面】
  • 如何解决页面请求接口大规模并发问题【必会】
  • 设计一套全站请求耗时统计工具
  • 大文件上传了解多少【百度一面】
  • H5 如何解决移动端适配问题【美团一面】
  • 站点一键换肤的实现方式有哪些?【美团一面】
  • 如何实现网页加载进度条?【百度一面】
  • 常见图片懒加载方式有哪些?【京东一面】
  • cookie 构成部分有哪些【百度一面】
  • 扫码登录实现方式【腾讯一面】
  • DNS 协议了解多少【字节一面】
  • 函数式编程了解多少?【京东一面】
  • 前端水印了解多少?【腾讯一面】
  • 什么是领域模型【必会】
  • 一直在 window 上面挂东西是否有什么风险【百度一面】
  • 深度 SEO 优化的方式有哪些,从技术层面来说
  • 小程序为什么会有两个线程【腾讯一面】
  • web 应用中如何对静态资源加载失败的场景做降级处理
  • html 中前缀为 data-开头的元素厘性是什么?
  • 移动端如何实现上拉加载,下拉刷新?【字节一面】
  • 如何判断 dom 元素是否在可视区域【字节一面】
  • 前端如何用 canvas 来做电影院选票功能【美团一面】
  • 如何通过设置失效时间清除本地存储的数据?【腾讯二面】
  • 如果不使用脚手架,如果用 webpack 构建一个自己的 react 应用
  • 用 nodejs 实现一个命令行工具,统计输入目录下面指定代码的行数
  • packagejson 里面 sideEffects 厘性的作用是啥【必会】
  • script 标签上有那些厘性,分别作用是啥?【必会】
  • 为什么 SPA 应用都会提供一个 hash 路由,好处是什么?
  • [React] 如何进行路由变化监听【字节一面】
  • 单点登录是是什么,具体流程是什么【腾讯一面】
  • web 网页如何禁止别人移除水印【百度一面】
  • 用户访问页面白屏了,原因是啥,如何排查?
  • [代码实现] s 中如何实现大对象深度对比
  • 如何理解数据驱动视图,有哪些核心要素?【腾讯二面】
  • vue-cli 都做了哪些事儿,有哪些功能?
  • JS 执行 100 万个任务,如何保证浏览器不卡顿?【百度一面】
  • JS 放在 head 里和放在 body 里有什么区别?
  • Eslint 代码检查的过程是啥?【必会】
  • 虎拟混动加载原理是什么,用 JS 代码简单实现一个虚拟滚动加载
  • [React] react-router 和原生路由区别
  • html 的行内元素和块级元素的区别【京东一面】
  • 介绍一下 requestIdleCallback api
  • documentFragment api 是什么,有哪些使用场景?【必会】
  • git pull 和 git fetch 有啥区别?
  • 前端如何做页面主题色切换【腾讯一面】
  • 前端视角 - 如何保证系统稳定性【字节一面】
  • 如何统计长任务时间、长任务执行次数【腾讯二面】
  • V8 里面的 JT 是什么?【京东一面】
  • 用 Js 写一个 cookies 解析函数,输出结果为一个对象
  • vue 中 Scoped Styles 是如何实现样式隔离的,原理是啥
  • 样式隔离方式有哪些【字节一面】
  • 在 JS 中,如何解决递归导致栈溢出问题?
  • 站点如何防止爬虫?【百度一面】
  • ts 项目中,如何使用 nodemodules 里面定义的全局类型包到自己项目 src 下面使用?【百度二面】
  • 不同标签页或窗口间的【主动推送消息机制】的方式有哪些?(不借助服务端)
  • 【React】在 react 项目开发过程中,是否可以不用 reactrouter 使用浏览器原生 history 路由来组织页面路由?
  • 在表单校验场景中,如何实现页面视口滚动到报错的位置
  • 如何一次性渲染十万条数据还能保证页面不卡顿【百度二面】
  • 【webpack】打包时 hash 码是如何生成的【必会】
  • 如何从 0 到 1 搭建前端基建【京东一面】
  • 你在开发过程中,使用过哪些 TS 的特性或者能力?【美团一面】
  • JS 的加载会阻塞浏览器渲染吗?【百度一面】
  • 浏览器对队头阻寒有什么优化?【百度一面)
  • Webpack 项目中通过 script 标签引入资源,在项目中如何处理?
  • 应用上线后,怎么通知用户刷新当前页面?【腾讯一面】
  • Eslint 代码检查的过程是啥?
  • HTTP 是一个无状态的协议,那么 Web 应用要怎么保持用户的登录态呢?
  • 如何检测网页空闲状态(一定时间内无操作)【百度二面】
  • 为什么 Vite 速度比 Webpack 快?
  • 列表分页,快速翻页下的竟态问题【百度二面】
  • JS 执行 100 万个任务,如何保证浏览器不卡顿?
  • git 仓库迁移应该怎么操作
  • 如何禁止别人调试自己的前端页面代码?【字节二面】
  • web 系统里面,如何对图片进行优化?【必会】
  • OAuth2.0 是什么登录方式
  • 单点登录是如何实现的?
  • 常见的登录鉴权方式有哪些?
  • 需要在跨域请求中携带另外一个域名下的 Cookie 该如何操作?
  • vite 和 webpack 在热更新上有啥区别?
  • 封装一个请求超时,发起重试的代码
  • 前端如何设置请求超时时间 timeout【必会】
  • nodejs 如何充分利用多核 CPU?【字节二面】
  • 后端一次性返回树形结构数据,数据量非常大前端该如何处理?
  • 你认为组件封装的一些基本准则是什么?
  • 页面加载速度提升 (性能优化) 应该从哪些反向来思考?
  • 前端日志埋点 SDK 设计思路
  • token 进行身份验证了解多少?【腾讯一面】
  • 在前端应用如何进行权限设计?【字节二面】
  • 【低代码】代码平台一般消染是如何设计的?
  • 【低代码】代码平台一般底层协议是怎么设计的
  • 【Webpack】有哪些优化项目的手段?
  • IndexedDB 存储空间大小是如何约束的?
  • 浏览器的存储有哪些【腾讯一面】
  • 【Webpack】如何打包运行时 chunk,且在项自工程中如何去加载这个运行时 chunk?
  • 为何现在市面上做表格泊染可视化技术的,大多数都是 canvas,而很少用 svg 的?
  • 在你的项目中,使用过哪些 webpack plugin,说一下他们的作用
  • 在你的项目中,使用过哪些 webpackloader,说一下他们的作用
  • 【React】如何避免不必要的染?【美团一面】
  • 全局样式命名冲突和样式盖问题怎么解决?
  • 【React】如何实现专场动画?
  • 【React】从 React 层面上,能做的性能优化有哪些?
  • 【VUE】中为何不要把 v-if 和 v-for 同时用在同一个元素上,原理是什么?
  • 将静态资源缓存在本地的方式有哪些?
  • SPA 首屏加载速度慢的怎么解:决
  • axios 是如何区分是 nodejs 环境还是浏览器环境的?
  • 如何拦截 web 应用的请求
  • 前端有哪些跨页面通信方式?
  • H5 下拉刷新如何实现?
  • 如何修改第三方 npm 包?
项目细节难点
  1. 测试和调试
  2. 跨域请求问题
  3. 数据安全和隐私保护
  4. 移动端触摸事件处理
  5. 性能优化
  6. 响应式布局的挑战
  7. 浏览器兼容性问题
  8. 获取首页链接里面的参数问题
  9. 更新文件缓存的坑
  10. 解析后端返回的 map 格式数据的坑。
  11. vue 组件动态加载的坑
  12. 页面缓存的坑。
  13. 路由传参的功能的坑。
  14. axios 请求中 post 请求的坑。
  15. 为什么需要二次封装组件库?
  16. 请结合一个组件库设计的过程,谈谈前端工程化的思想
  17. 如何对一个组件库进行测试?
  18. 在使用 qiankun 时,你如何处理多个子项目的调试问题?
  19. 你能解释一下 qiankun 如何实现 keep-alive 的需求吗?
  20. 在使用 qiankun 时,你如何处理 js 沙箱不能解决的 js 污染问题?
  21. 在项目中有没有单独封装组件
  22. 在项目中发送请求怎么携带 token
  23. 工作中有用到 git 吗
  24. git 版本发生冲突你怎么解决的
  25. 如何快速让一个盒子水平垂直居中
  26. 首屏加载白屏怎么进行优化
  27. 路由传参 query 与 params 区别
  28. 项目基础优化
  29. 对 $nextTick 异步渲染的理解
  30. 你是怎么对 axios 进行二次封装的,有什么作用
  31. 用戶 token 失效你是怎么处理的
  32. 说一下项目的流程
  33. 商品和增删改查
  34. Element-UI 的 form 表单验证你是怎么使用的
  35. 项目中的商品详情页你是怎么实现的
  36. 什么是数组扁平化
  37. 你这个项目登陆是怎么实现的
  38. 项目中的权限管理怎么实现的
  39. Vue 的$nextTick0 方法有用到过吗
  40. 深拷贝与浅拷贝
  41. 在 Vue 是项目中如何打开新的页面
  42. 请解释一下微前端的概念以及它的主要优点和挑战?
  43. 你能详细描述一下 qiankun 微前端框架的工作原理吗?
  44. 在使用 qiankun 时,如果子应用是基于 jQuery 的多页应用,你会如何处理静态资源的加载问题?
  45. 在使用 qiankun 时,如果子应用动态插入了一些标签,你会如何处理?
  46. 在使用 qiankun 时,你如何处理老项目的资源加载问题?你能给出一些具体的解决方案吗?
  47. 你能解释一下 qiankun 的 start 函数的作用和参数吗?如果只有一个子项目,你会如何启用预加载?
  48. axios-请求中 post 请求的坑
  49. 路由传参的功能的坑
  50. 页面缓存的坑
  51. vue 组件动态加载的坑
  52. 解析后端返回的 map 格式数据的坑
  53. 更新文件缓存的坑
  54. h5 页面打开调试日志
  55. 获取首页链接里面的参数问题
  56. h5 里面的搜索
  57. 登录接口 bug
  58. 封装的请求方法不需要在传入相同的参数。
  59. 进来不在 index.htmI 文件里面引入公共的文件
  60. 你做的项目中都使用过那些中间件呢?
  61. 你在开发过程中有什么困难点(或者使用了什么技术)
  62. 会写接口吗?项目你负责什么?
  63. 你之前做过小程序吗?主要包括哪些功能?
  64. 这个小程序的具体设计逻辑是怎么样的?有几个人开发?周期多长?在你离职时,这个小程序项目是否还在开发?或者你离职时,你们公司在开发什么?
  65. 你说你负责支付环节,那么微信支付的流程是否可以简单说一下?
  66. 那好,既然流程说完了,那么,我问你,你这个项目涉及到了 mb,它在用戶点击支付之后的逻辑关系和表关系你是怎么理解的?有多少张表?表关系?
  67. 你觉得这个小程序项目的细节之处有哪些?
  68. 如何自定义 tabbar?
  69. 你刚才提到了异步,在这个项目中你是否被异步坑过,最后又是如何解决的?
  70. 你能描述一下渐进增强和优雅降级之间的不同吗?
  71. 为什么利用多个域名来存储网站资源会更有效?
  72. 一个页面上有大量的图片(大型电商网站),加载很慢,你有哪些方法优化这些图片的加载,给用户更好的体验。
  73. 一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?
  74. 前端如何进行登录身份的判断
  75. 电商项目跟其它项目有什么不同?
  76. 实践题
  77. 项目开发中有遇到什么挑战没?
  78. 项目研发流程中作为前端开发一般扮演的啥角色?
  79. 现在有的项目中觉得哪些项目可以继续优化,为啥没有优化?
  80. 平时写项目总结么,一般总结哪些东西?
  81. 请简单绘制登录场景的业务流程图,如不熟悉登录业务,也可以选择自己之前项目的业务简单说明。
  82. 项目上线后,会将 index.html 给后端,在地址栏上输入 www.abc.com,当在地址后面缀上/layout 回车后,页面会报 404,是否遇见过这个问题,又该如何去解决?
  83. 项目中由谁定接口,公司文档如何管理,由谁负责上传代码,怎么上传代码的,项目发布都是怎么做的?
  84. 请你说说高级前端工程师和初级以及中级有什么区别?
  85. 用过 echars 与 highchars 么,你遇到哪些问题及如何解决的
  86. 项目开发中是用什么工具来管理代码的:说一下你是用过的工具用法(git、svn)
  87. 讲一下最近的这个项目中都负责什么
  88. 怎么判断是开发环境生产环境
  89. Vue 如何在用戶没登陆的时候重定向登录界面?
  90. Vue 项目常见优化点
  91. 异步解决方案有哪些?
  92. 移动端点击事件 300ms 延迟如何去掉?原因是什么?
  93. 如何实现函数的柯里化?比如 add(1)(2)(3)
  94. 什么是反柯里化
  95. 如何避免回调地狱?
  96. 开发过程中遇到内存泄漏的问题都有哪些?
  97. 浏览器有哪些兼容问题,你封装过什么插件
  98. 假如 A 页面我定义了一个定时器,然后跳到 B 页面如果让 A 页面的定时器暂停
  99. 深拷贝是什么?项目哪里是用到了深拷贝?
  100. swiper 插件从后台获取数据没问题,css 代码啥的也没问题,但是图片不动,应该怎么解决?

图片 图片

目录

  1. 为什么会有卡顿?先看浏览器怎么干活
  2. Fiber 想干什么:把大活切成小活
  3. 可中断、可恢复、优先级:三层架构成型
  4. 面试题集锦
  5. JavaScript
  6. React
  7. Vue
  8. CSS
  9. HTML
  10. Node.js
  11. TypeScript
  12. 性能优化
  13. 编程题
  14. 场景题
  15. 项目细节难点

更多推荐文章

查看全部
  • SQL Server 到 KingbaseES 跨平台迁移与性能优化指南
  • Git 如何安全临时回退查看历史版本
  • GitHub Copilot Pro 学生免费权益获取与 VS Code 配置指南
  • 基于 FastGPT 与 MCP 协议构建工具增强型 AI Agent
  • LLM 评估指标详解:如何客观对比 LLaMA-3 与 GPT-4 能力
  • Llama3 个人电脑本地部署与 WebUI 使用指南
  • 从 ReAct 到 Plan-and-Execute:AI Agent 推理架构的理解与选择
  • ReAct 与 Plan-and-Execute:AI Agent 推理架构对比与选择
  • 网络安全基础术语速查指南
  • GESP 2025 年 12 月 C++ 七级认证真题与解析(单选题 1-7)
  • 全栈毕业设计实战:前后端分离架构与核心实现指南
  • ComfyUI Windows 环境排错:解决 Python 版本与 CUDA 冲突
  • Windows 平台 ComfyUI 环境配置与启动问题排查指南
  • Python 网络编程基础:Socket、TCP 与 UDP 实战指南
  • AI 编程工具选型:Copilot、Cursor、Codex 核心差异
  • Python 数学可视化:显函数、隐函数及复杂曲线交互绘图
  • 基于 Python 数据分析瑞幸与星巴克全国门店分布及关联关系
  • 本地私有化部署 Llama3 8B/70B 大模型方法(支持 CPU/GPU)
  • 立创开源智能家居键盘SmartKB32_v2:基于ESP32-S3的蓝牙/有线双模多功能控制器设计详解
  • 2024 网络安全学习路线与实战指南

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online