微派前端一面

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 项目的开发效率和依赖包管理的可靠性。选择合适的包管理工具需要考虑项目需求和个人偏好,例如安装速度、缓存机制、存储方式、兼容性、命令行界面等方面。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值