前端面试题总结

99 阅读3分钟

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 / emit/emit / parent / ref / attrs兄弟组件attrs 兄弟组件 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 都有哪些属性?