编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

2020 的第一波面试题(理论部分)总结1

wxchong 2024-10-18 14:08:36 开源技术 10 ℃ 0 评论

因此总结一波2020年最新面试题,希望对大家有所帮助!后面的答案为自行整理,如有疏漏,欢迎指正!

· 原型

构造函数 ,是一种特殊的方法。主要用来在创建对象时初始化对象。每个构造函数都有prototype(原型)属性每个函数都有prototype(原型)属性,这个属性是一个指针,指向一个对象,这个对象的用途是包含特定类型的所有实例共享的属性和方法,即这个原型对象是用来给实例共享属性和方法的。而每个实例内部都有一个指向原型对象的指针。

· 闭包

简单来说就是函数嵌套函数,内部函数引用来外部函数的变量,从而导致来垃圾回收机制没有生效,变量被保存来下来。也就是所谓的内存泄漏,然后由于内存泄漏又会导致你项目逐渐变得卡顿等等问题。因此要避免内存泄漏。

· 原型链

提到原型链就不得不提原型的继承,继承的完美实现方案是借助寄生组合继承,主要实现原理PersonB.prototype = Object.create(PersonA.prototype)实现来继承PersonA的原型当我们通过new关键字实例化的对象身上就有了PersonB自身的属性和方法,也有了PersonA的原型方法当实例化对象调用某个方法时会先在自身和原型上查找,然后是在_proto_上一层层查找,这种方式就是原型链。

· vuex

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态并以相应的规则保证状态以一种可预测的方式发生变化。tate:Vuex 使用单一状态树——是的,用一个对象就包含了全部的应用层级状态。mutation:更改 Vuex 的 store 中的状态的唯一方法是提交 mutationaction: action 提交的是 mutation,而不是直接变更状态。action 可以包含任意异步操作。getter: 相当于Vue中的computed计算属性

· vue-router

Vue Router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌<router-link>和<router-view>和<keep-alive>

· 深拷贝浅拷贝

深拷贝:通过利用JSON.parse(JSON.stringify(Object))来达到深拷贝的目的但是JSON深拷贝的缺点是undefined和function还有symbol类型是无法进行深拷贝的如有需要可以自己手动封装函数来达到目的浅拷贝:通过ES6新特性Object.assign()与扩展运算符来达到浅拷贝的目的

· Vue通信

第一种:props和$emit第二种:中央事件总线 EventBus(基本不用)第三种:vuex(状态管理器)第四种:$parent 和 $children当然还有其他办法,但是基本不常用

· 你在工作终于到那些问题,解决方法是什么

经常遇到的问题就是Cannot read property 'prototype' of undefined解决办法通过浏览器报错提示代码定位问题,解决问题Vue项目中遇到视图不更新,方法不执行,埋点不触发等问题一般解决方案查看浏览器报错,查看代码运行到那个阶段未之行结束,阅读源码以及相关文档等然后举出来最近开发的项目中遇到的算是两个比较大的问题。

· webpack配置入口出口

module.exports={ //入口文件的配置项 entry:{}, //出口文件的配置项 output:{}, //模块:例如解读CSS,图片如何转换,压缩 module:{}, //插件,用于生产模版和各项功能 plugins:[], //配置webpack开发服务功能 devServer:{}}简单描述了一下这几个属性是干什么的。

· webpack3和webpack4区别

1.modewebpack增加了一个mode配置,只有两种值development | production。对不同的环境他会启用不同的配置。2.CommonsChunkPluginCommonChunksPlugin已经从webpack4中移除。可使用optimization.splitChunks进行模块划分(提取公用代码)。但是需要注意一个问题,默认配置只会对异步请求的模块进行提取拆分,如果要对entry进行拆分需要设置optimization.splitChunks.chunks = 'all'。3.webpack4使用MiniCssExtractPlugin取代ExtractTextWebpackPlugin。4.代码分割。使用动态import,而不是用system.import或者require.ensure5.vue-loader。使用vue-loader插件为.vue文件中的各部分使用相对应的loader,比如css-loader等6.UglifyJsPlugin现在也不需要使用这个plugin了,只需要使用optimization.minimize为true就行,production mode下面自动为trueoptimization.minimizer可以配置你自己的压缩程序

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表