No9.精选前端面试题,享受每天的挑战和学习

news2025/1/11 5:59:09

在这里插入图片描述

文章目录

    • 从recat源码角度说明下setState流程
    • 同源策略限制什么行为
    • computed和watch的区别
    • http和https的区别
    • vue中的route和router的异同点,区别

从recat源码角度说明下setState流程

在 React 的源码中,setState 方法是用于更新组件的状态(state)的关键方法。下面是 setState 方法的流程概述:

  1. 事件处理函数中调用 setState 方法:当组件的事件处理函数中调用 setState 方法时,React 会将状态更新请求加入到队列中。

  2. 将更新添加到队列:React 使用一个称为“更新队列”(update queue)的数据结构来存储待更新的状态和组件。

  3. 构建待更新的状态对象:React 会根据 setState 方法的参数构建一个待更新的状态对象。这个对象可以是一个新的状态值,也可以是一个函数,接受前一个状态作为参数,并返回一个新的状态值。

  4. 合并更新:如果在同一事件循环中多次调用 setState 方法,React 会将这些更新合并为一个更新,以减少不必要的状态更新操作。

  5. 准备执行更新:在调度更新之前,React 会对更新进行一些准备工作,包括创建更新事务(UpdateTransaction)并分配更新 ID。

  6. 调度更新:React 使用调度器(scheduler)机制来进行批量更新操作,从而提高性能。它会根据一定的优先级和策略,决定何时进行更新。

  7. 更新过程开始:React 会通过 render 方法重新渲染组件,生成新的虚拟 DOM(Virtual DOM)树。

  8. 更新状态:React 将更新应用到组件的状态上,即将更新后的状态值更新到组件实例上。

  9. 执行生命周期钩子:根据新的状态和属性,React 会触发相应的生命周期函数(如 shouldComponentUpdategetSnapshotBeforeUpdatecomponentDidUpdate)。

  10. 渲染过程结束:React 标记更新成功,并通知相关的订阅者,如 React Redux 或 React Router。

需要注意的是,React 的 setState 方法并不是立即更新状态,而是通过一系列的流程最终更新状态。这样做可以在性能上进行优化,避免不必要的状态更新和重新渲染。

同源策略限制什么行为

同源策略(Same-Origin Policy)是一种浏览器安全策略,用于限制不同源之间的交互行为。

同源是指协议(protocol)、域名(domain)和端口号(port)完全相同。

同源策略限制了以下行为:

  1. DOM 访问限制:不同源的页面无法通过 JavaScript 访问彼此的 DOM 结构,例如无法使用 document.getElementById 获取其他域名下的元素。

  2. Cookie、LocalStorage 和 IndexedDB 限制:不同源的页面无法读取或修改彼此的 Cookie、LocalStorage 或 IndexedDB 数据。

  3. XMLHttpRequest 和 Fetch 请求限制:JavaScript 发起的 XMLHttpRequest 或 Fetch 请求受到同源策略影响,只能向同源服务器发送请求。跨域资源共享(CORS)是一种跨域访问的机制,通过设置适当的响应头,服务器可以允许来自其他源的请求。

  4. 脚本执行限制:不同源的页面无法加载或执行其他源的 JavaScript 文件。

  5. 窗口和框架限制:不同源的页面无法直接操作或获取彼此的窗口和框架。

这些限制有助于保护用户的隐私和安全,防止恶意网站通过跨域攻击获取用户的敏感信息或执行恶意操作。

需要注意的是,可以通过一些方法绕过同源策略,如跨域资源共享(CORS)机制、跨文档消息传递(Cross-Document Messaging)、JSONP(JSON with Padding)等。但这些方法需要服务器端和客户端的支持,并且使用时需要注意安全性。

computed和watch的区别

在Vue.js中,computedwatch 是用于响应式地监视和处理数据变化的两种常用方式。它们之间的区别如下:

1. 作用域不同:

  • computed 是在Vue实例中声明的计算属性。它通过依赖于其他数据,并根据这些数据进行计算,返回一个新的计算结果。在模板中使用时,可以像访问普通属性一样使用计算属性。
  • watch 则是在Vue实例中设置的观察者函数。它用于监听特定数据的变化,并在数据变化时执行指定的操作。

2. 触发时机不同:

  • computed 只有在依赖的数据发生变化时才会重新求值。当依赖的数据没有变化时,会读取缓存的计算结果,避免无效的重复计算。
  • watch 则是在被观察的数据发生变化时立即触发相应的操作。可以通过配置选项来控制是在数据变化后立即执行还是等待下一次事件循环。

3. 使用场景不同:

  • computed 适用于根据一个或多个响应式数据的变化,派生出一个新的值。例如根据商品的数量和单价计算总价。
  • watch 适用于监测数据的变化并执行异步操作或复杂逻辑。例如监听输入框的变化并发送网络请求。

综上所述,computed 适用于基于已有数据派生出新的属性值,而 watch 适用于需要在数据变化时执行自定义操作的场景。它们是不同的响应式机制,在不同的情况下使用可以更好地满足需求。

http和https的区别

HTTP(Hypertext Transfer Protocol)和HTTPS(Hypertext Transfer Protocol Secure)都是用于在客户端和服务器之间传输数据的协议,它们之间的区别如下:

1. 安全性:

  • HTTP 是明文传输协议,所有的数据在传输过程中都是以纯文本的形式进行传送。这意味着攻击者可以截取和窃听传输的数据。
  • HTTPS 使用了 SSL/TLS 加密协议来对数据进行加密和身份验证,确保数据在传输过程中的安全性。使用 HTTPS 可以有效防止数据被拦截、篡改和窃听。

2. 默认端口号:

  • HTTP 的默认端口号是 80,即如果没有显示指定端口号,浏览器会默认使用 80 端口进行 HTTP 请求。
  • HTTPS 的默认端口号是 443,即如果没有显示指定端口号,浏览器会默认使用 443 端口进行 HTTPS 请求。

3. 证书和身份验证:

  • 在使用 HTTPS 进行通信时,服务器需要拥有一个有效的数字证书。证书用于证明服务器的身份,并由可信任的第三方机构(CA - Certificate Authority)签发。客户端会通过证书来验证服务器的身份是否可信。
  • 在使用 HTTP 进行通信时,并不需要证书和身份验证,因此无法确保连接的绝对安全性和服务器的真实性。

4. 性能影响:

  • HTTPS 在数据传输过程中需要进行加密和解密操作,相对于 HTTP 来说会增加一定的计算和处理开销。因此,在性能方面,HTTPS 比 HTTP 略有延迟,但随着硬件技术的发展,这种差距逐渐减小。

综上所述,HTTPS 相对于 HTTP 具有更高的安全性和保护用户隐私的能力,适用于需要保护敏感信息(如个人身份、密码等)的网站和应用。而 HTTP 则更适合在不涉及敏感信息传输的情况下使用。

vue中的route和router的异同点,区别

在Vue.js中,routerouter 是路由相关的概念,它们之间存在一定的区别和联系。

  1. 路由定义:

    • route(路由)是指一个完整的路由对象,包括路径、参数、查询参数、哈希等信息,它描述了用户当前访问的页面状态。
    • router(路由器)是指用来管理和控制路由的实例,它负责解析路由,并根据路由匹配的规则来加载对应的组件或执行相应的操作
  2. 功能职责:

    • route 主要用于描述用户当前的页面状态,包含了当前页面的路径、参数、查询参数等信息。
    • router 则负责定义应用程序的路由规则,将不同的路由映射到不同的组件,并提供导航功能,例如通过点击链接或编程方式进行页面跳转。
  3. 使用方式:

    • route 在 Vue.js 的组件中通过 $route 对象进行访问。可以使用 $route 对象获取当前路由的各种信息,例如当前路径、参数、查询参数等。
    • router 则需要事先创建一个 Vue Router 的实例,并配置路由规则。在主应用程序中通过 this.$router 来访问路由器实例,从而可以调用导航方法(如 pushreplace 等)进行页面跳转。

综上所述,route 主要用于描述当前页面状态的对象,而 router 则是负责管理和控制路由的实例。routerouter 的一部分,它提供了获取和操作路由信息的方式。通过 router,我们可以定义路由规则和导航功能,以便根据不同的路由加载相应的组件和进行页面跳转。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/717176.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java中预览pdf或者图片

GetMapping("preview1")ApiOperation(value "根据文件名实现预览功能")public void previewFile1( HttpServletResponse response) throws IOException {String filePath"C:\\Users\\Harbor Lau\\Desktop\\哈哈\\""11月燃油费(公开).pdf&q…

照片如何恢复?试试这3个简单操作!

我的电脑里保存了很多照片,都是对我来说意义重大的,但最近电脑内存不足了,在清理内存时,我不小心把照片也清空了,这些照片应该如何恢复呢?谁有什么好的方法恢复电脑里的照片吗? 可能很多人都会选…

【UnityDOTS 小知识】RequireMatchingQueriesForUpdate与RequireForUpdate

RequireMatchingQueriesForUpdate与RequireForUpdate 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 一、RequireMatchingQueriesForUpdate 将这个特性放置于System类上…

【算法与数据结构】字符串匹配算法

文章目录 一、暴力穷解法二、KMP算法二、BM算法三、Sunday算法四、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、暴力穷解法 思路分析:首先判断字符串是否合法,然后利用for循环,取出…

2024考研408-操作系统 第一章-计算机系统概述学习笔记

文章目录 前言一、操作系统的基本概述1.1、操作系统的概念1.2、操作系统的功能1.2.1、操作系统提供的功能及示例1.2.2、操作系统提供的方便易用服务1.2.2.1、操作系统刚普通用户使用(GUI用户界面、命令接口)1.2.2.2、给程序员提供的程序接口小总结&#…

Cesium中加载WMS、WMTS、WFS三类服务,并进行点击查询

近期工作中需要使用Cesium加载各类服务,并进行点击查询。故针对不同的服务对加载方法和点击查询方法进行了整理。 一、加载方法 1.1加载WMS export function wmsService(url,layer){let wmsnew Cesium.WebMapServiceImageryProvider({url : url,//如http://106.12…

【Spring Boot】Spring Boot配置文件详情

前言 Spring Boot是一个开源的Java框架,用于快速构建应用程序和微服务。它基于Spring Framework,通过自动化配置和约定优于配置的方式,使开发人员可以更快地启动和运行应用程序。Spring Boot提供了许多开箱即用的功能和插件,包括嵌…

【笔记】微机原理及接口技术4 -- ADC/DAC

模数数模转换器 控制系统中的模拟接口 A/D 转换器 把模拟信号转成数字信号,供微处理器使用; D/A 转换器 输出模拟信号,供外部控制装置使用; D/A 原理 D/A 转换器的主要部件是电阻开关网络 通常是由输入的二进制数的各位控制一些…

EasyCVR如何在不修改分辨率的情况下进行H.265自动转码H.264?

EasyCVR视频融合平台基于云边端一体化架构,可支持多协议、多类型设备接入,在视频能力上,平台可实现视频直播、录像、回放、检索、云存储、告警上报、语音对讲、电子地图、集群、H.265转码、智能分析以及平台级联等。 我们在此前的文章中介绍过…

【Python实战】Python采集某大夫文字数据

前言 今天,有一位粉丝找到我,希望我出一期关于某大夫数据采集的文章,今天,我们就来采集某大夫的问诊数据。 环境使用 python 3.9pycharm 模块使用 requests 模块介绍 requests requests是一个很实用的Python HTTP客户端库&…

java 健身营养师网站系统myeclipse定制开发mysql数据库B/S模式java编程计算机网页

一、源码特点 JSP 健身营养师网站系统 是一套完善的系统源码,对理解JSP java 编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。研究的基本内容是基于网上 书店系统,使用JSP作为页面开发工具。Web服…

MMaction2 使用记录1——config介绍

目录 了解config (模型训练测试的整体过程配置文件) 通过脚本参数修改config Config 文件 结构 config文件的命名规则 动作识别的config系统 了解config (模型训练测试的整体过程配置文件) 我们使用python文件作为config&a…

FreeRTOS学习笔记—任务挂起和恢复

文章目录 一、任务挂起和恢复API函数1.1 vTaskSuspend()函数1.2 vTaskResume()函数1.3 xTaskResumeFromISR()函数 二、任务挂起和恢复2.1 任务1挂起解挂任务22.2 中断中解挂任务1 三、补充内容3.1 FreeRTOS数据类型3.2 中断优先级分组3.3 错误问题 一、任务挂起和恢复API函数 …

ChatGPT | Word文档如何更好地提取表格内容给ChatGPT

本文来自http://blog.csdn.net/hellogv/ ,引用必须注明出处! Word文档如何更好地提取表格内容给ChatGPT做知识库,这属于文本预处理工作。 本文只讲思路、测试结果,技术实现用Python和Java都能完成,下一篇文章再贴源码…

Python实用工具--全python制作一个音乐下载器

前言 又来展示一下关于Python的实用小技巧了,这次就来分享分享–如何用Python来制作一个音乐下载器 做这个有什么用啊,我只能说,可以免费下载歌曲啊,这样就能每月保住自己钱包咯 效果展示 基本界面 图片以及文字都是可以自己更…

《动手学深度学习》——线性神经网络

参考资料: 《动手学深度学习》 3.1 线性回归 3.1.1 线性回归的基本元素 样本: n n n 表示样本数, x ( i ) [ x 1 ( i ) , x 2 ( i ) , ⋯ , x d ( i ) ] x^{(i)}[x^{(i)}_1,x^{(i)}_2,\cdots,x^{(i)}_d] x(i)[x1(i)​,x2(i)​,⋯,xd(i)​…

序列化对象

1:对象序列化 以内存为基准,把内存中的对象存储到磁盘文件中去,称为对象序列化。使用到的流是对象字节输出流:ObjectOutputStream 2:对象要序列化,必须实现Serializable序列化接口 2:对象反序…

二十四、HTTPS

文章目录 一、HTTPS(一)定义(二)HTTP与HTTPS1.端口不同,是两套服务2.HTTP效率更高,HTTPS更安全 (三)加密,解密,密钥等概念(四)为什么要…

【H5】文件下载(javascript)

系列文章 【移动设备】iData 50P 技术规格 本文链接:https://blog.csdn.net/youcheng_ge/article/details/130604517 【H5】avalon前端数据双向绑定 本文链接:https://blog.csdn.net/youcheng_ge/article/details/131067187 【H5】安卓自动更新方案&a…

hivesql列转行

原表: 目标表: sql代码: select dp as 日期 ,city_name as 城市, split_part(subject,‘:’,1) as 指标, cast( split_part(subject,‘:’,2) as double ) as 数值 from( select trans_array(2,‘;’,dp,city_name,subject) as (dp,city_na…