面试1

70 阅读2分钟

1.Typescript中interface和type有什么区别?

  • type 可以声明基本类型别名,联合类型,元组等类型
  • type 语句中还可以使用 typeof 获取实例的 类型进行赋值
  • interface 能够声明合并 一般来说,如果不清楚什么时候用interface/type,能用 interface 实现,就用 interface , 如果不能就用 type 。

2.cookie和localStorage的区别

cookie 一般由服务器生成,可设置失效时间。如果在浏览器端生成Cookie,默认是关闭浏览器后失效,存放数据大小一般4K左右,而sessionStorage与localStorage大小在5兆左右,在客户端生成,localStorage除非被清除,否则会永久保存,sessionStorage仅在当前会话下有效,关闭页面或浏览器后被清除,cookie在与服务器端通信每次都会携带在HTTP头中,如果使用cookie保存过多数据会带来性能问题,而sessionStorage与localStorage仅在客户端(即浏览器)中保存,不参与和服务器的通信。

差异性:(面试经常问)
相同点:都是存储数据,存储在web端,并且都是同源
不同点:
(1)cookie 只有4K 小 并且每一次请求都会带上cookie 体验不好,浪费带宽
(2)session和local直接存储在本地,请求不会携带,并且容量比cookie要大的多
(3)session 是临时会话,当窗口被关闭的时候就清除掉 ,而 local永久存在,cookie有过期时间
(4)cookie 和local都可以支持多窗口共享,而session不支持多窗口共享 但是都支持a链接跳转的新窗口

对于 cookie 来说,我们还需要注意安全性。 image.png

3.Array(100).filter(item => 1)的结果,怎么创建100个1的数组?

结果:[] ,new Array(100).fill(1)

4.Proxy 与Object.defineProperty区别

Object.definePropert缺点: Object.defineProperty的第一个缺陷,无法监听数组变化

区别

  • Proxy可以直接监听对象而非属性
  • Proxy直接可以劫持整个对象,并返回一个新对象,不管是操作便利程度还是底层功能上都远强于Object.defineProperty。
  • Proxy可以直接监听数组的变化
  • Proxy有多达13种拦截方法,不限于apply、ownKeys、deleteProperty、has等等是Object.defineProperty不具备的。

5.vue3如何监听数组变化

const state= reactive({ 
    arr: [1,2,3,4,5] 
})
 
watch(() => [...state.arr], (now, old) => {
    console.log(now, old)
})

6.react hooks与class组件对比

  • 写法更加的简洁
  • 业务代码更加聚合
  • 逻辑复用方便