前端基础面试题(js、vue、react)

2023-11-06

vue2面试题

  1. vue的双向绑定原理?

双向绑定的原理也叫响应式原理,Vue它是采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()属性的setter、getter,在数据变动时发布消息给订阅者,触发相应的监听回调,来完成双向绑定。

vue3双向数据绑定使用的是代理,与Vue2相比的好处在于不消耗性能,因为Vue2使用Object.defineProperty()方法嵌套深层的话需要使用递归比较耗性能,而Vue3使用代理则不用。

  1. vue的组件通讯方式?

vue组件通信方式有:props、 e m i t 、 emit、 emiton、vuex、$parent 、 $children

  1. vue的生命周期?

1、beforeCreate(创建前)
2、created(创建后)
3、beforeMount(载入前)
4、mounted(载入后)
5、beforeUpdate(更新前)
6、updated(更新后)
7、beforeDestroy(销毁前)
8、destroyed(销毁后)

  1. vue的data为什么是一个函数,而不是一个对象?

如果vue组件中的data是对象,我们在几个地方使用一个组件,那么因为此时的几个组件中的数据引用的都是同一个内存地址,更改一个组件的时候其他组件也会受影响,数据污染产生。所以vue2中组件中的data是函数而不是对象

  1. vue中的created和watch的区别?

created只在new Vue()对象创建完成后触发一次,watch中的函数,只要变量变化,就会触发。反复变化多次,就会自动触发多次。

  1. vue中computed和watch的区别?

computed适用于一个数据被多个数据影响,而watch适用于一个数据影响多个数据。

  1. vue中的路由的原理?

  2. vue中keep-alive的作用?

keep-alive 是 Vue 内置的一个组件,可以使被包含的组件保留状态,或避免重新渲染。

  1. vue的指令有哪些?

常用的指令的有v-once指令、v-show指令、v-if指令、v-else指令、v-else-if指令、v-for指令、v-html指令、v-text指令、v-bind指令、v-on指令、v-model

  1. vue的修饰符有哪些?

事件修饰符
.stop 阻止事件继续传播
.prevent 阻止标签默认行为
.passive 告诉浏览器你不想阻止事件的默认行为
.capture 使用事件捕获模式,即元素自身触发的事件先在此处处理,然后才交由内部元素进行处理
.self 只当在 event.target 是当前元素自身时触发处理函数
.once 事件将只会触发一次

v-model的修饰符
.lazy change事件完成后再同步
.number 自动将用户的输入值转化为数值类型
.trim 自动过滤用户输入的首尾空格

  1. vue中路由传承那有哪几种方式?

vue路由传参到底有几种方式

  1. vuex的理解和使用场景以及优缺点?
    Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式
    优点:状态全局管理,减少组件通讯成本
    缺点:比较笨重

js面试题

JavaScript面试题大全之基础面试题(附答案)

react面试题

  1. React类组件和函数组件之间有什么区别?

函数组件是一个纯函数,它接收一个props对象返回一个react元素;而类组件需要去继承React.Component并且创建render函数返回react元素。
函数组件没有生命周期和状态state,而类组件有。

  1. 结合生命周期,谈一谈React类组件的运行机制。

componentDidMount() :组件已经出现在页面

componentDidUpdate() :组件已更新

componentWillUnmount() :组件将死

shouldComponentUpdate() :return false 阻止更新

  1. React中组件间通信,你有哪些方案?
  • 父子通信
  • 跨级组件通信
    1.props 逐层传递 (不考虑)
    2.context 传递
  • 非嵌套组件通信 (如兄弟组件等)
    使用机制:消息订阅与发布
    useModel/redux
  1. 谈一谈props和state之间的区别。

props是组件对外的接口,用于组件之间的传值,props在组件内部是不可修改,可以看作只读属性。

state可以看作组件的私有属性,用于组件内部的数据传递。

  1. this.setState()有什么特点?

调用 this.setState() 后, this.state 对象中的值不会立刻更新
多次调用 this.setState() 会产生合并效果
this.setState() 的第一个参数可以是函数

  1. 有哪些定义React组件的方式?

函数组件、类组件

  1. 谈一谈你对React受控组件的理解。

受控组件,简单来讲,就是受我们控制的组件,组件的状态全程响应外部数据
非受控组件,简单来讲,一般情况是在初始化的时候接受外部数据,然后自己在内部存储其自身状态

  1. 什么是组合?组合与继承在实现组件复用上的差别。

是由很多个组件组合使用的,而且每个组件之间或多或少的有些关系,我把这些组件就称作组合组件

  1. 谈一谈你对JSX的理解。

1、jsx是JavaScript的一种语法扩展,它跟模板语言很接近,但是它充分具备JavaScript的能力。

2、JSX会被babel编译为:React.createElement(),React.createElement()将返回一个叫作“ReactElement”的JS对象。

  1. 描述 Diff运算过程,如何比较两个虚拟DOM的差异?
  2. 谈一谈 React Context 上下文的实践应用

跨级组件通信

  1. 高阶组件有哪些应用场景?
  2. 常用 React Hooks API 及其作用、特点。

useState 建议根据哪些值是一起变化的,将state拆分成多个小的state。而不是一上来就设一个大的复杂state。
useEffect 函数组件没有生命周期,但用useEffect代替
useContext 上下文
useRef 绑定DOM,或者跨useEffect周期读数据
useCallback
useMemo

  1. 封装自定义Hooks,有哪些注意事项。

提炼出自己业务中那些公共的逻辑
如提取日/月/季/年=》起始时间的转换逻辑

  1. React技术栈中,有哪些代码复用的技巧?

自定义hooks,高阶组件

  1. React中的refs作用是什么?

Refs 是 React 提供给我们的安全访问 DOM 元素或者某个组件实例的句柄。

  1. 从React的角度,说一说有哪些性能优化策略。

列表渲染的时候加key;
在函数组件中使用useCallback和useMemo来进行组件优化,依赖没有变化的话,不重复执行;
合理设计组件,减少props和state

  1. 谈一谈你对React服务端渲染的理解。
  2. react-router常用组件有哪些,分别有什么用?

React Router中的组件主要分为三类:
路由器,像和
Route匹配器,例如和
和导航,比如,和

  1. withRouter有什么用?如何自定义封装withRouter?

目的就是让被修饰的组件可以从属性中获取history,location,match,
路由组件可以直接获取这些属性,而非路由组件就必须通过withRouter修饰后才能获取这些属性了。

  1. 什么是动态路由?如何使用路由传参?什么是嵌套路由?什么场景下会用到嵌套路由?

react-router v4 中,请把路由看成普通的 React 组件,传递 props 来正常使用(之前会忽略掉这些属性),借助它来控制组件的展现。展示的逻辑及权利回归到了组件本身,回归到了熟悉的 React。这样,没有了静态配置的路由规则,取而代之的是程序在运行渲染过程中动态控制的展现。这便是 v4 中称之为的动态路由。

所谓的嵌套路由就是在某些以及路由下面存在二级路由,这些二级路由除了公用一级路由导航模块外,还公用当前的二级路由的导航模块,也就是部分进行了切换

  1. mobx中有哪些核心概念?常用的修饰器方法有哪些?
  2. 说一下redux的工作流程,谈一谈你对redux数据的理解。
  3. 谈一谈mobx和redux的区别、使用场景。
  4. react常用生命周期,及其特点、使用场景。
  5. react严格模式下有哪些限制
  6. 什么Fiber?谈一谈你对React Fiber架构的理解。
  7. 什么是redux中间件?常用的有哪些?谈一谈redux-saga、redux-thunk的理解。
  8. 什么是React合成事件?为什么存在合成事件?有什么特点?

React合成事件是React 模拟原生DOM事件所有能力 的一个事件对象。
根据 W3C规范 来定义合成事件,兼容所有浏览器,拥有与浏览器原声事件相同的接口。合成事件除了拥有和浏览器原生事件相同的接口,包括stopPropagetion()和preventDefault();在React中,所有事件都是合成的,不是原生DOM事件

为什么出现这个技术?
浏览器兼容,实现更好的跨平台。顶层事件代理机制:保证冒泡一致性,可以跨浏览器执行。将不同平台事件模拟成合成事件;
避免垃圾回收。React引入事件池,在事件池中获取或释放事件对象。React事件对象不会被释放掉,而是存入一个数组中;当事件触发,就从这个数组中弹出,避免频繁地创建和销毁(垃圾回收);
方便事件统一管理和事务机制

  1. 以你的做过一个react项目为例,说一说如何优雅地地实践组件化和数据流管理?

模块化:抽取业务中的重复逻辑,自定义成hook
组件化:基于使用的UI库,根据业务自底向上封装更复杂的黑盒组件
数据流管理:在hook出现,数据流管理变得更加简便。页面中有自己的数据流,如果是一个公用的数据,可以使用useModel放到全局。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

前端基础面试题(js、vue、react) 的相关文章

随机推荐

  • APISIX源码解析-执行阶段【http_header_filter_phase、http_body_filter_phase、http_log_phase、http_balancer_phase】

    http header filter phase function M http header filter phase if ngx var ctx ref then prevent for the table leak local st
  • nodejs之时间、时间戳

    一共有5中方法 执行效率依次降低 Date now new Date getTime new Date process uptime process hrtime Date now new Date getTime 和 new Date 是
  • Array的reduce方法

    let arr 1 2 3 4 5 6 arr reduce function pre value index array console log pre value 结果如下 1 2 undefined 3 undefined 4 und
  • lpad()函数oracle,oracle 中lpad的用法

    pad翻译 填充 lpad函数 在字符串的左侧添加指定字符串 用法 lpad String 截取长度 添加的字符串 说是添加字符串也不准确 比较准确的说法是对String进行截取字符串 如果截取长度大于String的长度 则在 String
  • nginx离线安装与SSL配置

    离线安装nginx 如果系统没有nginx所需环境 gcc prec等 下载链接 https download csdn net download qq 45497146 87340629 进入此文件下执行 rpm Uvh rpm node
  • 同时使用mybatis和mybatis-plus时,pageHelper失效问题解决

    添加一个类 这个类用于初始化 PageInterceptor 这个类 这一次尝试成功 正确返回分页数据 代码如下 import com baomidou mybatisplus extension plugins inner Paginat
  • Vue 项目中按需引入 ElementUI

    安装 ElementUI npm i element ui save 安装 babel plugin component npm install babel plugin component D 打开项目根目录下的 babel config
  • 智能优化算法-布谷鸟搜索算法Cuckoo Search algorithm(附Matlab代码)

    引言 布谷鸟搜索算法Cuckoo Search algorithm算法是另一种非线性元启发式算法 由Yang Xin She和Suash Deb于2009年提出在Pro ceedings of World Congress on Natur
  • RedHat 6.4启动卡在Starting certmonger

    yum groupinstall X Window System 调整 etc inittab id 5 initdefault 重启主机 一直卡在starting certmonger Ctrl Alt F2进入命令行界面是正常的 再调整
  • SpringSecurity基础教程

    SpringSecurity 目标 权限管理简介 了解 权限管理解决方案 掌握 初识Spring Security 了解 Spring Security 认证配置 重点 Spring Security 鉴权配置 重点 Spring Secu
  • OSI七层协议和TCP四层协议

    应用层 直接为用户的应用进程提供服务 如 HTTP 支持文件传输的 FTP 协议等 运输层 向两个主机中进程之间的通信提供服务 由于一个主机可同时运行多个进程 因此运输层有复用和分用的功能 复用就是多个应用层进程可同时使用下面运输层的服务
  • linux根据进程名称,查看后台任务的运行目录

    linux后台跑一堆python的时候想关闭一个程序都不知道哪个是哪个 使用ps ef也可以查看 不过内容比较多 容易误杀 所以我们改进一下 主要使用的命令有两个 pgrep 它可以列出所有这个进程名运行的进程id 比如pgrep pyth
  • HLSL Introduction

    By Chang Li High Level Shading Language HLSL a programming language for Graphic Processing Unit GPU in DirectX 9 10 11 s
  • VMware安装Linux后自动获取IP地址

    1 VMware网络连接设置为桥接模式 2 进入Linux系统 ifconfig查看IP地址信息 3 cd etc sysconfig network scripts 4 vim ifcfg eth0 5 ONBOOT yes 6 serv
  • smali文件对比java文件

    smali文件对比java文件 class 类名 super 父类 source 源文件名 implements 继承的接口 field 类成员变量 method 类方法 parameter 函数参数 p1 p2 locals x 局部变量
  • 活动目录服务详细操作

    作者 小刘在C站 个人主页 小刘主页 每天分享云计算网络运维课堂笔记 努力不一定有收获 但一定会有收获加油 一起努力 共赴美好人生 夕阳下 是最美的绽放 树高千尺 落叶归根人生不易 人间真情 目录 第一章 Active Directory与
  • 技术赋能水务数字化转型,上海市水旱灾害防御技术中心领导一行调研上海控安

    NEWS 3月1日下午 上海市水旱灾害防御技术中心主任张鹏一行莅临上海控安 对双方联合实验室建设及公司智慧水务板块业务进行调研指导 并就助力上海城市水务高质量发展及数字化转型相关工作展开交流讨论 上海控安总经理蒲戈光 首席信息官杨昆等平台公
  • 【旅行商问题】蚁群算法解决旅行商问题【Matlab】

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 一 旅行商问题 1 问题描述 2 数学模型 二 蚁群算法 1 引言 2 蚁群算法求解TSP原理 三 源代码 四 结果展示 五 备注 一 旅行商问题 1 问题描述 旅
  • 彻底卸载VMware虚拟机

    开始 gt 运行 gt regedit gt 找到HKEY LOCAL MACHINE gt Software gt VMware inc 把这个整个删除 关闭注册表后 重新运行VMware的安装文件 问题即可解决
  • 前端基础面试题(js、vue、react)

    文章目录 vue2面试题 js面试题 react面试题 vue2面试题 vue的双向绑定原理 双向绑定的原理也叫响应式原理 Vue它是采用数据劫持结合发布者 订阅者模式的方式 通过Object defineProperty 属性的sette