我是靠谱客的博主 大方诺言,最近开发中收集的这篇文章主要介绍React一到三年面试题以及进阶题分享,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

感谢内容提供者:金牛区吴迪软件开发工作室

笔者是众多React开发者之一,编写react已有不少时日了,面试的时候遇到了很多自己不懂的东西,每次面试后都会把自己感觉蛮重要的内容总结下来,于是便有了此篇文章。希望此文章能够帮助到大家。


React面试题正文:
  1. React的特点和关键版本区别。
    答案:React的特定及缺点以及关键版本介绍
  2. 请讲讲react的this.setState()方法
    答案:React的this.setState详细介绍
  3. 为什么this.setState是异步的?
    答案:https://blog.csdn.net/weixin_43606158/article/details/100572101
  4. React的ref是干嘛的?怎么创建ref?
    答案:React函数组件和类组件创建ref及其常用场景讲解
  5. 你知道的React生命周期有哪些?分别都是用来做什么的?
    答案:React的生命周期钩子函数详细介绍
  6. React运用了什么算法?你有了解过这个算法么?
    答案:
    React的diff算法解析
    React的fiber算法解析
  7. 如何提高React框架的性能?
    答案:React详细介绍性能优化的方法
  8. React创建组件有几种方式?
    答案:React创建组件的3种方式介绍
  9. 你开发React的时候用过哪些UI框架并讲一下他们的设计理念?
    答案: 有很多,请自行百度
  10. 请讲讲React的组件的概念。
    答案:React之组件介绍
  11. 你知道JSX么?请简要讲述一下。
    答案:JSX浅析
  12. 你的react项目当中用过哪些插件?
    答案:React实际项目常用插件
  13. React父子组件传参是通过什么方式?
    答案:React父子组件传参
  14. 你知道React的虚拟DOM么?为什么虚拟DOM会提升性能?
    答案:React虚拟DOM的机制特点
  15. 当使用F5刷新页面的时候会经过react的哪些生命周期?
    答案:与渲染页面的时候走的是一样的
  16. 你用过Redux么?请讲一下Redux的特点。
    答案:Redux核心知识
  17. 请讲一下react-router。
    答案:React-router详细介绍
  18. 你了解react-hook么?
    答案:了解react-hook以及State Hook
    React Hook之Effect Hook
    React Hook之useContext的介绍与使用
  19. React Hooks相对高阶组件和Class组件有什么优势/缺点?
  20. react做路由跳转的方法你知道哪些?
    答案:React做路由跳转
  21. webpack中,是借助loader完成的JSX代码转换还是babel?
    答案:借助了babel的 preset-react
  22. 调用setState后,发生了什么?
    答案:
    分为俩种情况:
  • React的更新策略已经被启动时(事件触发时):
    React响应事件处理 => 启动更新策略事务(绑定了wrapper) => 事务perform => setState => 获取内部实例 => 存储新的状态 => 发现更新策略事务已启动 => 将当前内部实例放入脏组件数组 => setState执行结束 => 更新策略事务perform完毕 => wrapper处理组件状态的更新
  • React的更新策略没有被启动时(异步触发时):
    setState => 获取内部实例 => 存储新的状态 => 发现更新策略事务未启动 => 启动更新策略事务(绑定了wrapper) => 事务perform => 将当前内部实例放入脏组件数组 => 更新策略事务perform完毕 => wrapper处理组件状态的更新 => setState执行结束
  1. setState是异步的,这个点你在什么时候遇到过坑
    答案:比如说你使用了setState更改了状态,但是你在他这个方法后面输出那个状态值会发现结果还是之前的状态,只有在他的第二个参数回调函数中才可以输出更改后的state。
    再就是当多次调用setState的时候对于相同的会被糅合成一个,后面的覆盖掉前面的。【它会集齐一批需要更新的组件然后一起更新。】
  2. refs的作用是什么,你在什么业务场景下使用过refs?
    答案:用来控制dom不好控制的内容,比如说我们做一个上传图片的功能,自定义样式,这时候我们用上ref就可以很轻松的实现:可参考:React自定义input样式以及实现上传照片功能。以及Refs是一种很好的发送消息给特定子实例(通过流式的Reactive props 和 state来做会不方便)的方式。

备注:Refs 不能连接到一个 stateless function(无状态函数),因为这些组件没有支持实例。你总是可以包装一个无状态组件在一个标准复合组件里并且连接一个ref到这个复合组件。

  1. useEffect如何在props改变的时候才更新,初始化的时候不触发?
    答案:【伪代码】
import React,{useEffect, useRef} from 'react'
function Test(props) {
	const refs = useRef(0);
	useEffect(() => {
		console.log('mount')
	}, [])
	useEffect(() => {
		if (refs.current++) {
			console.log('update')
		}
	}, [props.param])
	/* 后面代码省略 */
}
  1. ref是一个函数,有什么好处?
    答案:react可以更优雅的完成对组件销毁时的变量回收,你只要这么用,react在销毁组件时,this.test 很方便的就可以被清理变为null。
    另一好处:ref是一个回调函数,使得我们能在这个函数中做更多的事情,比如说,我们可以借助这种函数的机制,让父组件直接获取子组件的Dom。而如果你让ref是一个字符串,实现这个功能是不可能的。
  2. useImperativeHandle是做什么的?
    答案:https://react.docschina.org/docs/hooks-reference.html#useimperativehandle
  3. 高阶组件你是怎么理解的,它本质是一个什么东西?
  4. 高阶组件和继承哪一个更好,在React里用过继承么?
  5. 高阶组件的缺点是什么?
  6. 受控组件与非受控组件的区别?
  7. 受控组件与非受控组件分别适合在什么场景使用?
    答案:在这里插入图片描述
  8. this指向问题你一般怎么解决?
    答案:方法很多种,使用bind,call,apply,或者定义变量然后赋值。
  9. 函数组件怎么做性能优化
  10. 函数组件比普通组件性能高还是低?
    答案:高,因为函数组件没有类组件哪些冗余的生命周期等等
  11. 你在哪个生命周期里发送ajax?
    答案:componentDidMount
  12. ssr的原理是什么?
  13. redux-sage的设计思想是什么?什么是sideEffects
  14. react,jquery,vue是否有可能共存在一个项目中?
  15. 组件是什么?类是什么?类被编译成什么?
  16. 你是如何跟着社区成长的?
  17. 如何避免ajax数据重新获取?
  18. react-router4的核心思想是什么,和3有什么区别
  19. immutable.js和redux的最佳实战
  20. reselect是做什么使用的
  21. react-router的基本原理,hasHistory,browserHistory
  22. 什么情况下使用异步组件
  23. xss攻击在react中如何防范?
    答案:使用JSX就可以防范,但注意少用react的这个方法(dangerouslySetInnerHTML):(特殊情况还是可以用的)详细介绍:https://blog.csdn.net/weixin_43606158/article/details/95863666
  24. useMemo和useCallback用过么?他们是做什么的?他们的区别是什么?
  25. 请讲讲React 16.X 的Fiber原理。
  26. React跨平台的实现原理。
  27. 说一说redux,以及比flux先进的原因。
  28. React你做过降级处理么?降级以后有什么作用?【个人认为有点过时了】
    答案:React总结笔记之降级兼容
  29. React.lazy 实现原理
  30. antd 按需加载实现原理
  31. react-router 实现原理,hash 路由实现原理
  32. React 事件注册实现原理



面试题持续更新中,欢迎朋友们投稿~
投稿的朋友们请在下方评论留下自己的qq或者微信号,笔者加您

最后

以上就是大方诺言为你收集整理的React一到三年面试题以及进阶题分享的全部内容,希望文章能够帮你解决React一到三年面试题以及进阶题分享所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部