首先是自我介绍,这个就不多详细说;
看我简历,问为啥学的前端,就大概回答了下;
接下来也是根据简历上问的问题,就不排序了,想到啥就写啥!
1. 事件循环,有那些宏任务、有哪些微任务?
事件循环:
由于js是单线程运行的,为了防止一个函数的执行时间过长阻塞后面的代码,会先将同步代码压入栈中,依次执行,将异步代码推进异步队列中,当异步事件执行完毕后,将其对应的回调加入到一个任务队列中等待执行。执行完栈中的任务,看是否有微任务,如果有微任务则执行为微任务,如果没有,则执行宏任务。
宏任务:
setTimeout、setInterval、ajax、script
微任务:
promise.then、
2. vue 的生命周期?
create 阶段
beforCreate
created:可以发送数据请求
mount 阶段
beforeMount
mounted:可以操作DOM
update 阶段
beforeUpdate、updated
destroy 阶段
beforeDestroy、destroyed
3. 能不能在created中,强制操作DOM元素?有没有了解nextTick?
可以的,使用nextTick就行
nextTick 实现原理:
在下次DOM 更新循环结束后执行延迟回调。nextTick 方法会在队列中加入一个回调函数,确保该函数在前面操作DOM后才调用。
4. vue 的计算属性(好像问的是通过计算属性更改值,然后localstorage里面相对应的值会不会更改?)
写在 computed 中,使用场景: 一个变量的值需要其他变量计算而来
注意:计算属性也是vue中的变量,因此不能和data 中的变量重名
computed:{
"计算属性名" () {
return "值"
}
}
计算属性是带缓存的,只要计算属性中的依赖项不发生改变,执行一次后就会将结果保存在缓存中;下次使用时,只要依赖项不发生变化就会从缓存中获取结果;当依赖项发生变化时,计算属性会自动重新执行,并将新的数值缓存。
5. git指令?
常见指令:
git init (新建 git 仓库)、git add ( 添加指定文件到暂存区)、git commit ( 提交暂存区的文件到仓库区)、git branch ( 列处所有分支)、git checkout -b (创建+切换分支)、git merge (合并分支)
6. 项目的优化?
自己说了一点,像是精灵图、第三方库按需加载,但面试官说,精灵图在现在的企业中不咋用,现在主要是进行无关性优化、同构等,对代码块尽量使用 Base 64的。
7. uniapp有哪些优点?与原生相比有啥好处?
8. uniapp 为啥可以多端适应?
9. 讲一下promise
见下面这个博客
(12条消息) Promise难懂?一篇文章让你轻松驾驭_promise 的地位_前端小白在前进的博客-CSDN博客https://blog.csdn.net/m0_52040370/article/details/127197204?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168628900616782425130252%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=168628900616782425130252&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-2-127197204-null-null.142^v88^control_2,239^v2^insert_chatgpt&utm_term=promise&spm=1018.2226.3001.4187Promise 对象 - ECMAScript 6入门 (ruanyifeng.com)
https://es6.ruanyifeng.com/#docs/promise
10. 讲一下箭头函数
箭头函数,其this指向绑定看的是: this 所在函数定义在哪个对象下,就绑定哪个对象。如果有嵌套,则绑定到最近的一层对象上;
箭头函数不能使用 arguments 参数
11. 改变this的指向可以用啥?
强调: 箭头函数的this 是不能改变的,只有普通函数的this可以改变;
三种方法:
apply、call、bind
12. call 与 apply 之间的区别?
总结:
两者作用、效果一致,只是对于原始函数的参数赋值方法不同,
call 是通过其他多个参数实现,apply 是通过一个数组参数实现
call()
语法: 函数.call(参数1,其他参数【可以没有或者多个】)
作用: 执行函数的同时,将函数的this 指向 参数1
其他参数,为原始函数的实参
apply()
语法: 函数.apply(参数1,参数2)
作用: 参数1,改变this 指向
参数2, 原始函数的是实参,必须是数组的形式
12. HBuilder X
总结: 面试官非常不错,有些没答上来的问题,面试官有跟我讲解,就说企业里面的项目优化,如果他不说,没经历过实习的我是不知道的,也可以说,这次面试涨知识了,确实这次比前两次的面试收获大,给面试官点个赞!!