2020-11-6面试总结

150 阅读3分钟

用于自己对面试的总结,有问题欢迎指正,自己对于前端学习的太少,知识点理解模糊,有建议的同学希望能给予我指正和建议

1.组件设计

2.Vue源码

3.Vue原理

4.双向绑定原理

监听器Observer,订阅者Watcher

5.双向绑定用到的设计模式,其他的设计模式有了解吗

6.Javascript书籍,有看过吗?怎么看的?

7.虚拟dom优缺点

优点:dom具有批处理和高效率的Diff算法,最终表现在只是修改真实dom变更部分,可以保证高效的渲染,提高渲染性能

缺点:首次渲染大量dom时,会多一层虚拟dom计算,会比innerHTML计算慢一点

8.虚拟dom实现原理

1.内存中生成一棵虚拟dom树 2.将内存中的虚拟dom初始化其真实的dom 3.当我们修改vue实例中的data数据时候 4.将之前的虚拟dom结合新的数据,生成一条新的虚拟dom树 5.将此次生成好的虚拟dom树与上一次虚拟dom进行对比,通过diff算法进行对比的 6.将对比出来的差异的部分进行重新的真实dom的渲染

9.Vue性能优化

1.v-if 和 v-show 2.computed 和 watch 区分使用场景 3.v-for 遍历必须为 item 添加 key,且避免同时使用 v-if 4.不需要改变的数据,通过 Object.freeze 方法来冻结一个对象,一旦被冻结的对象就再也不能被修改了。 5.事件的销毁 6.图片资源懒加载 7.路由懒加载 8.第三方插件的按需引入 9.优化无限列表性能,使用插件来处理 10.服务端渲染 SSR or 预渲染 11.webpack优化,图片等静态资源压缩,es6转es5减少冗余代码,公共js,公共css 12.浏览器缓存 13.cdn的使用

10.无限列表

优化无限列表性能,使用插件来处理

11.Proxy和definePrototy的区别

Object.defineProperty只能劫持对象的属性,而 Proxy 是直接代理对象 bject.defineProperty对新增属性需要手动进行 Observe。

12.Vue组件通信方式

props和emitemit attrs和listeners新建一个Vue事件bus对象,然后通过bus.listeners 新建一个Vue事件bus对象,然后通过bus.emit触发事件,bus.on监听触发的事件provideinject on监听触发的事件 provide 和 inject  parent和$children vuex处理组件之间的数据交互

13.Vue使用场景

8个生命周期的使用

14.Created和mounted的区别?实际开发中区别?Created什么时候用到的

创建完成:已经完成了 初始化注册和响应 挂载之后:已完成HTML虚拟化,创建了el节点 可以操作DOM了

15.Vue自定义指令和自定义事件

自定义指令:Vue.directive('focus'),例子:初始化input聚焦 自定义事件:可用于父子组件传值

16.Keep-alive

keep-alive用于保存组件的渲染状态。

17.动态组件

按需加载组件,组件切换

18.This的指向,箭头函数指向

箭头函数本身没有this,通过继承获取this

19.浏览器缓存,区别,使用场景

Cookie,sessionStorage,localStorage,indexDB

20.Promise几个状态

Pending,resolved,rejected

21.Axios拦截器,封装会做什么