面试题汇总
js篇
1.js 的执行机制?微任务和宏任务?
-
js 是单线程的
所谓单线程就是一次只能执行一段代码,在执行的时候如果遇到比较耗时的操作,默认就会停下来等待这个操作完成之后继续走。这种情况下,就会出现页面卡在那里不动。为了解决这个问题 js 一般把比较耗时的操作做异步处理;
-
js 中的异步处理
-
js 中存在一个异步队列,所有比较耗时的操作都会被丢在这个异步队列中。当主线程空闲(同步代码)之后会执行异步队列中的代码,这个就是 js 中的 eventloop(事件循环);
-
宏任务,是运行环境提供的异步操作,例如:setTimeout;
-
微任务,是 js 语言自身的异步操作,例如:Promise;
-
在一个宏任务周期中会执行当前周期中的所有微任务,当所有的微任务都执行完成之后会进入下一个宏任务周期;
vue篇
1.封装axios拦截
axios拦截分为请求式拦截跟响应式拦截
- request请求拦截器:发送请求前统一处理,如:设置请求头headers等。
- response响应拦截器:有时候我们要根据响应的状态码来进行下一步操作
2.watch监听对象
- vue3可以使用新的响应性api watch和watchEffect来替代该方法
- 结合计算属性(computed)方法实现监听
webpack篇
用webpack干啥
1.Webpack的基本功能有哪些?
-
代码转换:TypeScript 编译成 JavaScript、SCSS 编译成 CSS 等等
-
文件优化:压缩 JavaScript、CSS、html 代码,压缩合并图片等
-
代码分割:提取多个页面的公共代码、提取首屏不需要执行部分的代码让其异步加载
-
模块合并:在采用模块化的项目有很多模块和文件,需要构建功能把模块分类合并成一个文件
-
自动刷新:监听本地源代码的变化,自动构建,刷新浏览器
-
代码校验:在代码被提交到仓库前需要检测代码是否符合规范,以及单元测试是否通过
-
自动发布:更新完代码后,自动构建出线上发布代码并传输给发布系统。