方式:线上面试
时间:2023/2/27 10:30-11:00
公司:汇合发展
岗位:前端开发
技术一面:
1、自我介绍
2、VUE组建传值,以及provide使用时需要注意的点
(子孙层的provide会掩盖祖父层provide中相同key的属性值)
3、VUE自定义指令
(v-copy之类)
4、VUE2和VUE3的区别,VUE3的好处,为什么体积会更小
(tree-sharking)
5、keep-alive以及生命周期相关
https://juejin.cn/post/7173272566415491080
6、mixin组件相关
7、CSS加载是否会阻碍JS加载
css加载不会阻塞DOM树的解析
css加载会阻塞DOM树的渲染
css加载会阻塞后面js语句的执行、
因此,为了避免让用户看到长时间的白屏时间,我们应该尽可能的提高css加载速度,比如可以使用以下几种方法:
使用CDN(因为CDN会根据你的网络状况,替你挑选最近的一个具有缓存内容的节点为你提供资源,因此可以减少加载时间)
对css进行压缩(可以用很多打包工具,比如webpack,gulp等,也可以通过开启gzip压缩)
合理的使用缓存(设置cache-control,expires,以及E-tag都是不错的,不过要注意一个问题,就是文件更新后,你要避免缓存而带来的影响。其中一个解决防范是在文件名字后面加一个版本号)
减少http请求数,将多个css文件合并,或者是干脆直接写成内联样式(内联样式的一个缺点就是不能缓存)
8、微前端相关
9、const定义了一个常量是否可以修改其中的引用类型
10、如果想要给一个对象中的属性定义常量不允许其修改可以怎么做?
(1) Object.preventExtensions——可以使一个对象不能够增加新的属性,但是可以对原有属性进行修改和删除操作
(2)Object.seal()——不可以增加、删除新的属性,可以修改原有的属性
(3)Object.freeze()——无法添加新属性、无法删除旧属性、也无法改变属性的值
11、type和interface
区别:
(1)interface只能定义对象数据结构类型;type侧重于直接定义类型
(2)type 可以为基本类型,联合类型 或 元组 甚至any等等 赋值定义别名,interface 明显办不到
(3)interface 定义重名了会合并属性,type 办不到(会报错提醒 重复定义)
相似:type 和 interface都支持扩展extends;
type 的一般使用场景
一般定义基本或联合类型
一般定义元组类型
一般定义函数类型
定义映射类型
interface 的使用场景
需要interface 重名会自动合并属性扩展的
定义对象数据结构(不使用type时)
12、第一次请求响应较慢,第二次请求响应完成后第一次请求成功,如何解决?
第一种方法
在前一次未返回结果时,禁止发送下一次请求,也就是把异步的请求强行改为同步的,这显然不是最好的解决方案。
第二种方法
在每次响应后且在渲染之前,判断当前响应是不是对应最新一次请求的。是,则渲染;不是,则不渲染。
这种思路最容易想到的实现就是使用全局变量标记最新请求,局部变量标记当前请求,然后在响应回调中判断局部变量的值是否和全局变量的值一样。如果不一样,忽略响应结果;如果一样,我们可以断言这是最新请求的响应,直接渲染。
第三种
防抖节流
13、如何实现权限管理?