面试题总结(一)

1、什么是 EventLoop 

EventLoop是一种事件循环机制,可以用来解决javascript单线程运行不会堵塞的一种机制,也就是我们经常使用的异步原理

在执行任务时,任务会分为宏观任务和微观任务

执行时,会先执行宏任务队列,判断是否是空,不为空,先执行宏任务,执行完成之后,进入微任务队列,判断是否为空,不为空,执行微任务,执行完成之后,重新渲染

在宏任务队列为空时,进入微任务队列,若微任务队列也为空,重新渲染

2、constructor()中 super() 的作用是什么

constructor()是构造方法,并且,该方法是类中必有的,如果没有显示定义,则默认添加空的constructor()方法

super() 作用是继承,在class方法中,继承是使用extends关键字来实现。子类必须在constructor()调用 super()方法,否则新建时会报错

报错原因是:子类没有自己的this对象,它只能继承父类的this对象

3、react 和 vue 的共同点和不同点

共同点:

1、都是单页面应用开发

2、都有状态管理

3、都使用虚拟dom

4、都遵循组件化思想

5、都是数据驱动视图

不同点:

vue:支持双向数据绑定

state对象不是必须的,数据由data属性在vue对象中管理

react:仅支持单向数据流,不支持双向数据绑定

在更新satate时,必须使用setState方法进行更新

4、箭头函数和普通函数的区别

箭头函数:

this的指向是上下文,若没有的话,指向的就是全局(windows)

箭头函数全部是匿名函数,不能用于构造函数、不具备arguments对象

普通函数:

this的指向是调用它的对象,可以使用bind、apply、call来改变this的指向

可以是匿名函数,可以是普通函数

每一个普通函数调用后都具有一个

5、描述vue生命周期,说下created和mounted两个生命周期中请求数据有什么区别

created:在模板渲染html之前调用,做一些数据初始化,完成data数据的加载,el还未加载

mounted:在模板渲染html之后调用,只要在方法中执行了页面渲染操作,都在mounted中执行,完成el和data之后的加载

6、SPA首屏加载速度慢的原因以及如何解决

原因:

1、网络延迟问题

2、资源文件体积是否过大

3、资源是否重复发送了加载请求

解决:

1、静态资源本地缓存

2、减小入口文件

3、图片资源压缩

4、组件重复打包

7、vue中组件和插件有什么区别

组件:用来构建项目的业务模块,把页面进行模块化,进行复用

插件:用来增强技术栈的功能模块,通常是全局添加的功能,如:指令、过滤器等

8、vue组件之间的通讯方式有哪些

1、父子通讯:props和$emit

父组件传递参数,子组件通过Props来接受

子组件可以通过$emit向外弹出一个自定义事件,在父组件的属性监听事件,可以获取子组件传递出来的值

2、$ref

通过引用的方式来获取子节点,常用于父组件调用子组件的方法或者获取子组件的属性

若是在for循环上调用,获取到的是一个数组值

3、vuex

4、localStorage 和 sessionStorage

9、求两个数组的交集

var a = [1,2,3,4,5]; var a2 = [2,3,1,5,5]

var a3 = a.filter((n)=> a2.indexOf(n) !== -1).filter((val,index,arr)=> arr.indexOf(val,0)=== index)

你可能感兴趣的:(面试题总结(一))