面试历程---三(6.2)

首先是自我介绍,这个就不多详细说;

看我简历,问为啥学的前端,就大概回答了下;

接下来也是根据简历上问的问题,就不排序了,想到啥就写啥!

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博客icon-default.png?t=N4P3https://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)icon-default.png?t=N4P3https://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

总结: 面试官非常不错,有些没答上来的问题,面试官有跟我讲解,就说企业里面的项目优化,如果他不说,没经历过实习的我是不知道的,也可以说,这次面试涨知识了,确实这次比前两次的面试收获大,给面试官点个赞!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值