1、js的基本数据类型有哪些? 值类型 (基本类型) :字符串(String)、数字 (Number)、布尔 (Boolean)、对空(Null)、未定义(Undefined)、Symbol(ES6新增)、 引用数据类型 :对象 (Object)、数组 (Array)、函数 (Function)。
2、js常用的字符串方法? charAt()、charCodeAt()、indexOf() 、lastIndexOf()、search()、slice()、substring()、substr()、replace()、toUpperCase()、toLowerCase()、concat()、trim()、split();
3、js常用的数组方法? concat()、join()、pop()、shift()、unshift()、push()、reverse()、slice()、sort()、splice()、toString()、valueOf()、indexOf()、lastIndexOf()、forEach()、map()、filter()、every()、some()、reduce()、reduceRight()
3、js中BOM对象? location、document、navigator、screen、history
4、什么是闭包? 能够读取其他函数内部变量的函数。
5、原型链? 每个对象都可以有一个原型_proto_,这个原型还可以有它自己的原型,以此类推,形成一个原型链。查找特定属性的时候,我们先去这个对象里去找,如果没有的话就去它的原型对象里面去,如果还是没有的话再去向原型对象的原型对象里去寻找...... 这个操作被委托在整个原型链上,这个就是我们说的原型链了。
5、ES6新增特性? 1.let和const关键字 2.解构赋值 3.箭头函数 4.模板字符串 5.扩展运算符 6.新增了一些字符串和数组方法 (str.includes()、str.startsWith()、str.endsWith();arr.includes()、arr.map()、arr.filter()、arr.reduce()、arr.some()、arr.find()、arr.findIndex();) 7.Symbol 8.迭代器(Iterator) 9.Promise承诺 10.class 6、Promise原理?
7、vue的组件传参方式 ⽗⼦组件 props / parent / ref / parent / $root / eventbus / vuex 跨层级关系 eventbus / vuex / provide + inject 8、vue的生命周期
beforeCreate 组件实例被创建之初
created 组件实例已经完全创建
beforeMount 组件挂载之前
mounted 组件挂载到实例上去之后
beforeUpdate 组件数据发⽣变化,更新之前
updated 数据数据更新之后
beforeDestroy beforeUnmounted 组件实例销毁之前
destroyed unmounted 组件实例销毁之后
activated keep-alive 缓存的组件激活时
deactivated keep-alive 缓存的组件停⽤时调⽤
9、前端性能优化?
一、减少 HTTP 请求
建议将多个小文件合并为一个大文件,从而减少 HTTP 请求次数,
二、使用http2代替http1.1
三、静态资源使用 CDN
四、将 CSS 放在文件头部,JavaScript 文件放在底部
CSS 执行会阻塞渲染,阻止 JS 执行
JS 加载和执行会阻塞 HTML 解析,阻止 CSSOM 构建
五、使用字体图标 iconfont 代替图片图标
压缩字体文件
使用 [fontmin-webpack] 插件对字体文件进行压缩
六、使用缓存,不重复加载相同的资源
七、压缩文件
八、使用服务端渲染
九、图片优化
(1). 图片延迟加载
(2). 响应式图片
十、通过 webpack 按需加载代码,提取第三方库代码,减少 ES6 转为 ES5 的冗余代码
根据文件内容生成文件名,结合 import 动态引入组件实现按需加载
提取第三方库 , splitChunks
减少 ES6 转为 ES5 的冗余代码(plugin-transform-runtime)
十一、减少重绘重排
十二、使用事件委托
十三、使用 requestAnimationFrame 来实现视觉变化
十四、使用 Web Worker
10、vue3.0新增特性?
11、flex 都有哪些属性?