微派前端一面

1.挑一个你在项目中遇到比较有挑战的问题,如何去解决的

2.开发小程序的过程,有没有遇到一些性能问题或技术问题

3.最近关注哪些技术社区的动态,哪些技术的发展 这边我自己回答了ts+vue3,小程序的taro

4.vue3相对于vue2升级了哪些功能 回答了体积减小,渲染速度变快,使用了proxy,API变成了组合式API,对脚手架更好的支持,diff算法优化(没有讲清楚)

diff算法的优化:
vue2 在单个节点对比时不知道那些是要对比的所以全部对比一次

vue3 知道那些属性是动态的(对动态的属性进行标记), 非动态的属性直接就跳过了,每次更新只对比动态的属性

5.vue3体积变小怎么办到的(没有了解过) 回答了tree-shaking优化

6.被反问tree-shaking是vue3才引入吗,tree-shaking是谁来做的(回答了脚手架),那跟vue版本有关系吗

7.面试官去查了一下,说vue3的代码量实际上比vue2是要大的 (回答了整体是小的)面试官说是因为项目变小了和vue没有关系

vue2和vue3的对比

8.vue2的数据劫持和订阅-发布,vue3用的proxy,那还有用到订阅发布模式吗(没有讲清楚)

其实是没有用到订阅发布模式,proxy运用到的设计模式思想是代理模式。
Proxy本质是一个构造函数,用于创建一个对象的代理,从而实现对被代理对象操作的的拦截和自定义(如属性查找,赋值,枚举,函数调用等)。

9.vue为什么需要用vnode

在Vue中,vnode(Virtual Node)是一个虚拟的节点对象,用来描述DOM树中的节点信息,它主要有以下几个作用:

提高渲染性能:vnode可以减少真实DOM操作的次数,通过对比新旧vnode之间的差异,只对需要更新的部分进行操作,从而提高渲染性能。

实现组件化:vnode是Vue组件的基础,每个Vue组件都可以视为一个vnode树。

实现跨平台渲染:vnode可以作为抽象层,用于描述不同平台上的渲染对象,比如可以用vnode描述浏览器DOM,也可以用vnode描述原生App的UI组件。

实现动态组件:vnode可以动态地创建和销毁组件,即在运行时生成vnode,并将其插入到DOM树中。

。vnode是Vue的核心概念之一,它可以实现高效的渲染和组件化,为Vue提供了很强的灵活性和扩展性。

10.ES module有没有了解过 和commonJS有什么区别

CommonJS和ES Module是两种不同的模块系统,它们有以下几个主要区别:

语法差异:CommonJS使用require()函数和module.exports对象来导入和导出模块,而ES Module使用import语句和export关键字来导入和导出模块。

加载方式:CommonJS是同步加载,因为它假设模块都在本地;而ES Module是异步加载,因为它可以从远程服务器加载模块。

静态分析:ES Module在编译时就可以进行静态分析,即可以在代码执行之前确定模块的依赖关系;而CommonJS只能在运行时确定依赖关系,因此在性能上不如ES Module。

变量绑定:ES Module中的变量绑定是动态的,即导入模块的变量会随着导出模块的变化而改变;而CommonJS中的变量绑定是静态的,即导入模块的变量只是导出模块变量的一个副本,不会随着导出模块的变化而改变。

总的来说,ES Module相对于CommonJS有更好的性能和静态分析能力,但是由于它的语法和加载方式比较新,一些旧的浏览器和Node.js版本可能不支持。因此,根据具体的应用场景和需求,开发者需要选择适合自己的模块系统。

11.有没有了解计算机网络相关的知识,http2.0和http3.0的区别

HTTP 2.0:HTTP 2.0将数据传输方式从文本格式改为二进制格式,并引入了多路复用技术。主要改进包括:

1.使用二进制帧替代了HTTP 1.x的文本格式,减少了数据量和解析开销。
2.引入了多路复用技术,可以在一个TCP连接上同时发送多个请求和响应,提高了并发性能。
3.支持服务器主动推送(Server Push),可以在客户端请求之前将相关资源主动推送给客户端。

HTTP 3.0:HTTP 3.0基于UDP协议,并使用QUIC(Quick UDP Internet Connections)传输协议。主要改进包括:

1.使用UDP协议替代了TCP协议,减少了延迟和拥塞控制的问题。
2.使用QUIC协议,提供可靠性、安全性(解决了丢包和网络抖动)和流量控制等功能。
3.使用TLS 1.3作为底层安全协议。

12.http的强缓存和协商缓存分别讲一下

HTTP 缓存是指 Web 浏览器和服务器之间的一种机制,用于减少 HTTP 请求的数量和提高网页加载速度。HTTP 缓存可以分为两种类型:强制缓存和协商缓存。

强制缓存:当浏览器发出请求时,服务器在响应头中设置了 Cache-Control 或 Expires 字段,告诉浏览器这个资源可以在一定时间内直接从本地缓存中获取,而无需再次向服务器请求。这种缓存方式被称为强制缓存,因为即使该资源已经过期,浏览器也会直接使用本地缓存。

协商缓存:当该资源的强制缓存过期后,浏览器会向服务器发送一个请求,服务器会根据该资源的 ETag 或 Last-Modified 字段检查该资源是否有更新。如果资源未更新,则返回一个 304 Not Modified 状态码,并告诉浏览器可以直接使用本地缓存。这种缓存方式被称为协商缓存,因为浏览器和服务器需要协商是否使用缓存。

可以将强制缓存和协商缓存看作是一种逐级降级的缓存策略。首先使用强制缓存,如果强制缓存过期了,就使用协商缓存。如果协商缓存也过期了,就重新从服务器请求资源。

需要注意的是,强制缓存和协商缓存都可以减少 HTTP 请求的数量和提高网页加载速度,但也存在一些缺点。例如,强制缓存可能会导致用户看到过期的内容,而协商缓存需要向服务器发送请求,增加了网络负担。因此,在使用 HTTP 缓存时,需要权衡缓存时间和缓存策略,以便提高用户体验和性能。

13.npm用过吗 pnpm用过吗(回答用的yarn比较多) pnpm和npm两者的差异 yarn为什么要比npm要快

npm、pnpm 和 Yarn 都是 JavaScript 包管理工具,用于管理 Node.js 项目中的依赖包。它们之间的主要区别如下:

安装速度:Yarn 和 pnpm 的安装速度比 npm 快,因为它们可以并行下载多个包。

存储方式:npm 和 Yarn 将每个依赖包都存储在项目根目录下的 node_modules 文件夹中,而 pnpm 采用类似软链接的方式将依赖包存储在一个全局的存储库中。这样做可以避免重复下载依赖包,节省磁盘空间和带宽。

缓存机制:Yarn 的缓存机制更加高效,可以避免重复下载相同的依赖包,节省磁盘空间和带宽。

兼容性:pnpm 只支持 Node.js 版本 >=12,而 npm 和 Yarn 支持更早期的 Node.js 版本。

命令行界面:Yarn 和 pnpm 的命令行界面比 npm 更加友好,提供了更多的交互式功能,例如检查依赖包的更新情况、列出已安装的依赖包等。

需要注意的是,尽管这些工具在某些方面存在差异,它们的目标都是为了提高 JavaScript 项目的开发效率和依赖包管理的可靠性。选择合适的包管理工具需要考虑项目需求和个人偏好,例如安装速度、缓存机制、存储方式、兼容性、命令行界面等方面。

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

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

相关文章

OpenCv之Canny

目录 一、自适应阈值 二、边缘检测Canny 一、自适应阈值 引入前提:在前面的部分我们使用是全局闻值,整幅图像采用同一个数作为闻值。当时这种方法并不适应与所有情况,尤其是当同一幅图像上的不同部分的具有不同亮度时。这种情况下我们需要采用自适应闻…

C# OpenCvSharp 直方图均衡化 图像去雾

直方图 直方图均衡化 自适应的直方图均衡化 全局直方图均衡化 局部直方图均衡化 对比度调整 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using Sy…

手打 小份 kubernetes v1.27.3 集群

文章目录 1. 准备2. yum3. 安装 ansible4. 互信5. hosts6. 关闭防火墙、swap、selinux7. 配置系统文件句柄数8. 启用ipvs9. 修改内核参数10. 安装 containerd11. 安装nerdctl12. kubernetes yum13. 部署 kubernetes13.1 安装工具13.2 初始化配置 14. 部署 master15. 部署 node1…

Tensorflow入门(2)——深度学习框架Tesnsflow 线程+队列+IO操作 文件读取案例

目录 一、二、Tesnsflow入门 & 环境配置 & 认识Tensorflow三、线程与队列与IO操作1.队列实例:完成一个出队列、1、入队列操作(同步操作) 2.队列管理器 创建线程3.线程协调器 管理线程案例:通过队列管理器来实现变量加1,入队&#xff…

使用更少数据训练更好的alpaca

概述 该论文的研究背景是指令微调在大型语言模型中取得了重要的成果,但现有的训练数据质量问题导致模型性能下降。 过去的方法主要是使用低质量的数据进行指令微调,这些数据中存在错误或无关的回答,导致结果误导和训练成本增加。该论文的方…

Redis对象结构 — RedisObject

目录 Redis 键值对数据库的全过程​编辑 RedisObject结构体 Redis的encoding编码方式 type对应的数据对象类型 Redis 键值对数据库的全过程 redisDb 结构,表示 Redis 数据库的结构,结构体里存放了指向了 dict 结构的指针;dict 结构&#…

Windows操纵kafka

这里写目录标题 启动kafk创建一个测试主题查看所有主题查看first详细信息修改分区数(分区数只能增加 不能减少)删除主题生产者生产数据消费命令 启动kafk 安装目录下 .\bin\windows\kafka-server-start.bat .\config\server.properties创建一个测试主题 安装目录下 .\bin\wi…

Revit中墙体的问题,门窗洞口及柱断梁墙

一、如何同时开两道相邻墙的门窗洞口 做外墙装饰的时候,我们很经常为了方便、简洁在已经绘制好的墙体外围再绘制一面墙体,并且添加上材质作为外饰面,提高工作效率;但是遇到有门窗洞口的墙体时,外饰面墙体却没办法直接被门窗剪切&a…

Android APP性能及专项测试

Android篇 1. 性能测试 Android性能测试分为两类: 1、一类为rom版本(系统)的性能测试 2、一类为应用app的性能测试Android的app性能测试包括的测试项比如: 1、资源消耗 2、内存泄露 3、电量功耗 4、耗时 5、网络流量消耗 6、移动…

【hadoop】部署hadoop的伪分布模式

hadoop的伪分布模式 伪分布模式的特点部署伪分布模式hadoop-env.shhdfs-site.xmlcore-site.xmlmapred-site.xmlyarn-site.xml对NameNode进行格式化启动Hadoop 对部署是否完成进行测试免密码模式免密码模式的原理(重要)免密码模式的配置 伪分布模式的特点…

东莞-戴尔R540服务器故障告警处理方法

DELL PowerEdge R540服务器故障维修案例:(看到文章就是缘分) 客户名称:东莞市某街道管理中心 故障机型:DELL R540服务器 故障问题:DELL R540服务器无法开机,前面板亮黄灯,工程师通过…

MyBatis XML 中大于等于小于等于的写法

第一种方法&#xff1a; XML转义字符 用了转义字符把 > 和 < 替换掉&#xff0c;然后就没有问题了 大于&#xff1a;> 小于&#xff1a;< 大于等于&#xff1a;> 小于等于&#xff1a;< 第二种方法&#xff1a;<![CDATA[ sql语句 ]]>语法 因为这个是…

备战秋招 | 笔试强训9

目录 一、选择题 二、编程题 三、选择题题解 四、编程题题解 一、选择题 1、某函数申明如下&#xff08;&#xff09; void Func(int &nVal1); A. Func(a) B. Func(&a) C. Func(*a) D. Func(&(*a)) 2、C语言中&#xff0c;类ClassA的构造函数和析构函数的执行…

Layui基本功能(增删改查)

话不多说&#xff0c;根据我前面的博客我们直接进行操作。记住以下的文件放置&#xff0c;防止操作出不来. 这是我们要完成的界面及功能 后台功能实现 数据查看 我们在userDao方法里面进行增删改查的方法我们在userAction进行方法的编写R工具类的介绍 查询 userDao方法 因为我…

PETR: Position Embedding Transformation for Multi-View 3D Object Detection

PETR: Position Embedding Transformation for Multi-View 3D Object Detection 作者单位 旷视 目的 DETR3D 中 2D->3D过程 存在的问题&#xff1a; 预测的参考点坐标可能不准确&#xff0c;在采样图片特征时可能拿不到对应的特征。只有参考点 投影位置的图像特征被使用…

pico添加devmem2读写内存模块

devmem2读写内存 自定义msh命令devmem2验证msh命令devmem2读CPUID读写全局变量 devmem2模块可实现对设备寄存器的读写操作。在RT-Thread的命令行组件Fish中添加devmem2模块&#xff0c;用户可在终端输入devmem2相关命令&#xff0c;FinSH根据输入对指定寄存器进行读写&#xff…

Flask SQLAlchemy_Serializer ORM模型序列化

在前后端分离项目中&#xff0c;经常需要把ORM模型转化为字典&#xff0c;再将字典转化为JSON格式的字符串。在遇到sqlalchemy_serializer之前&#xff0c;我都是通过类似Java中的反射原理&#xff0c;获取当前ORM模型的所有字段&#xff0c;然后写一个to_dict方法来将字段以及…

ES(5)单节点集群

分布式集群 创建单节点集群 PUT http://101.43.146.44:9200/users body: {"settings":{"number_of_shards":3,"number_of_replicas":1} }返回结果 {"acknowledged": true,"shards_acknowledged": true,"index&quo…

gitLab修改密码后,sourceTree如何修改密码

修改gitLab密码后&#xff0c;在sourceTree提交或者更新代码会报&#xff1a;fatal: Authentication failed for~ 简单粗暴的方法&#xff1a; 到C:\Users\用户\AppData\Local\Atlassian\SourceTree&#xff0c;找到passwd文件&#xff0c;并删除&#xff1b; 重启sourceTre…

FPGA adrv9002 4收4发板卡,支持NVME SATA EMMC 光口 FMC

板卡采用ADI 射频直采芯片ADRV9002 &#xff0c;支持4收4发支持外部本振 跳频 同时支持4X 10G光口对外传输&#xff0c;FMC扩展 。同时支持4X NVME接口&#xff0c;可以实时流盘&#xff0c;备份一路SAT A接口&#xff0c;板卡同时预留了EMMC&#xff0c;可以PS PL选通访问&…