字节跳动一面,二面

1.浏览器的静态资源缓存

A:分为强缓存和协商缓存
Q:有什么区别?

2.js判断数据类型的方法

A:typeOf()
Q:typeOf不够严谨,就比如Array用typeof输出出来的是什么?Object,有没有更严谨的方法判断数组类型?

instanceOf
  • 用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性
  • 可以在继承关系中用来判断一个实例是否属于它的父类型。

3.代码题:用reduce方法重写map

在这里插入图片描述

4.插值表达式

{{}}
就是双向绑定的表现形式

5.vue的生命周期

绑定事件应该在哪个生命周期?

在created

1.before create
实例、组件通过new Vue() 创建出来之后会初始化事件和生命周期,然后就会执行beforeCreate钩子函数,这个时候,数据还没有挂载呢,只是一个空壳,无法访问到数据和真实的dom,一般不做操作

2.created
挂载数据,绑定事件等等,然后执行created函数,这个时候已经可以使用到数据,也可以更改数据,在这里更改数据不会触发updated函数,在这里可以在渲染前倒数第二次更改数据的机会,不会触发其他的钩子函数,一般可以在这里做初始数据的获取

3.before mount
接下来开始找实例或者组件对应的模板,编译模板为虚拟dom放入到render函数中准备渲染,然后执行beforeMount钩子函数,在这个函数中虚拟dom已经创建完成,马上就要渲染,在这里也可以更改数据,不会触发updated,在这里可以在渲染前最后一次更改数据的机会,不会触发其他的钩子函数,一般可以在这里做初始数据的获取

4.mounted
接下来开始render,渲染出真实dom,然后执行mounted钩子函数,此时,组件已经出现在页面中,数据、真实dom都已经处理好了,事件都已经挂载好了,可以在这里操作真实dom等事情…

5.before update
当组件或实例的数据更改之后,会立即执行beforeUpdate,然后vue的虚拟dom机制会重新构建虚拟dom与上一次的虚拟dom树利用diff算法进行对比之后重新渲染,一般不做什么事儿

6.updated
当更新完成后,执行updated,数据已经更改完成,dom也重新render完成,可以操作更新后的虚拟dom

7.before destroy
当经过某种途径调用$destroy方法后,立即执行beforeDestroy,一般在这里做一些善后工作,例如清除计时器、清除非指令绑定的事件等等

8.destroied
组件的数据绑定、监听…去掉后只剩下dom空壳,这个时候,执行destroyed,在这里做善后工作也可以

6.ES6的新增数据类型

symbol ,每次创建的symbol值都是不一样的

7.MVVM的双向绑定

讲了一下响应式,然后写了一段代码让我说数据改变了之后函数是否执行。
得看官方文档:

二面:

1.算法题

s型遍历二叉树

2.上次的双向绑定

{{computeA()}}
{{c}}
{{b}}

data() {
return {
a: 0
}
}

computeA() {
console.log(‘called’)
return a + 1
}
watch
b() {
return this.computeA()
}

问compute和watch哪个执行哪个不执行
Answer:compute不执行,watch执行。因为compute数据没有变化直接走缓存就不重复计算,因此compute不执行,而watch执行。
且getter和setter是compute的属性

3.强缓存和协商缓存的区别

http返回的头:强缓存cache-control
协商缓存last-modified

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值