react高频面试题(react篇)

这篇博客整理了当前流行的React前端面试题,包括JSX、虚拟DOM、类组件与函数组件的区别、Hooks、React Fiber等核心概念。内容涵盖React的基础知识和高级特性,适合面试准备。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

网上的React面试题文章有非常多,但很多题都过时了。

有的文章只包含了react相关题目,但是真正面试不只考react问题,js,css,http,es6都会涉及的到。

此片文章,针对以上几点,整理了一些时下高频的react前端面试题,并且做出相应的解析。


其他篇

react高频面试题(JavaScript篇).

react高频面试题(css篇).

react高频面试题(http&&浏览器篇).


正文

1.什么是JSX?

JSX是一种Javascript的语法扩展,可以很好的描述UI的架构。是React.createElement的语法糖。浏览器不能直接解析JSX文件,需要通过Bable进行转译成js。


2.讲一下虚拟Dom?

虚拟Dom:虚拟Dom是描述真实Dom的js对象。
特点:

(1)处理了浏览器兼容性问题,避免用户操作真实DOM,不容易出错。

(2)内容经过了XSS处理,可以防范XSS攻击。

(3)可以实现跨平台开发。

(4)在更新的时候,比较两棵虚拟DOM树的差异,差异化更新。

延伸题:
什么是diff算法?

diff算法,就是用来找出两段文本之间的差异的一种算法。

vdom为什么用diff算法?

由于DOM操作是非常昂贵的,就可以通过diff算法来减少DOM操作。

vdom比真实dom快?

回答:不一定。

在比较性能的时候,要分清楚初始渲染、小量数据更新、大量数据更新这些不同的场合。

无效、无意义的diff是需要浪费性能的,因此有些场景不如直接操作原生DOM性能好。


3.类组件和函数组件之间的区别是什么?

相同点:它们都可以接收属性并且返回React元素。

不同点:

(1)类组件需要创建实例,是基于面向对象的方式编程,函数组件不需要创建实例,接收输入,返回输出,是基于函数编程的思想。

(2)类组件需要创建并且保持实例,会占用一定的内存,函数组件不需要创建实例,可以节约内存占用。

(3)类组件有完整的生命周期,函数组件没有生命周期(现在通过useEffect实现类似生命周期的功能)

(4)类组件通过shouldComponent和pureComponent跳过更新,而函数组件可以通过React.memo跳过更新。

(5)类组件服用逻辑一般用HOC,函数组件可以自定义Hook。

延伸题:
源码如何区分函数组件与类组件?
通过Component.prototype.isReactComponent属性来判断。


4.hooks出现的意义?

Hook 是 React 16.8 的新增特性。它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。
Hooks 优势:

(1)函数组件无 this 问题

(2)自定义 Hook 方便复用状态逻辑

(3)副作用的关注点分离


5.了解React Fiber吗?

React Fiber初衷是改变js在浏览器的主线程上长时间执行,会阻塞其他操作,影响用户体验。

Fiber的关键特性:

(1)增量渲染(把渲染任务拆分成块,匀到多帧)

(2)更新时能够暂停,终止,复用渲染任务

(3)给不同类型的更新赋予优先级

(4)并发方面新的基础能力

协调器reconciler :
Fiber前的 Reconciler 被命名为Stack Reconciler 运作的过程无法中断(持续占用主线程),这样主线程上的布局、动画等周期性任务以及交互响应就无法立即得到处理,影响体验。

而新的Reconciler 命名为Fiber Reconciler 每执行一段时间,都会将控制权交回给浏览器,可以分段执行。

Fiber Reconciler 在执行过程中,会分为 2 个阶段 :

(1)render阶段,生成 Fiber 树,得出需要更新的节点信息。这一步是一个渐进的过程,可以被打断。

(2)commit阶段,将需要更新的节点一次过批量更新,这个过程不能被打断。


6

内容概要:本文档《互联网大厂200道高频React面试题.pdf》涵盖了React核心概念及其进阶应用,旨在帮助开发者应对大厂面试。文档详细列举了200个面试题,涉及React的基础知识(如核心理念、虚拟DOM、状态管理等)、React Hooks(如useState、useEffect、useReducer等)、React Router(如BrowserRouter、HashRouter、动态路由等)、Redux(如核心概念、中间件、Thunks、Saga等)、性能优化技巧(如memo、useCallback、useMemo等)、并发特性(如useTransition、useDeferredValue等)以及一些高级主题(如微前端、复杂状态机、动态表单、拖拽排序、权限控制等)。每个问题不仅提供了答案解析,还附带了代码示例,帮助读者更好地理解和掌握React的各个方面。 适合人群:具备一定JavaScript和React基础,正在准备互联网大厂面试的研发人员,尤其是前端工程师。 使用场景及目标:①帮助开发者系统复习React的核心知识点,加深对React的理解;②通过实战案例和代码示例,提高解决实际问题的能力;③为准备技术面试提供全面的参考资料,确保能够从容应对各种面试问题。 阅读建议:由于文档内容丰富且深入,建议读者在阅读过程中结合实际项目经验进行思考,并尝试动手实现代码示例。对于不熟悉的领域,可以进一步查阅官方文档或其他资料进行补充学习。同时,文档中的面试题可以作为自我评估的工具,检验自己对React的掌握程度。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值