面试中遇到的一些问题
关于vue的
- Vue,vue-router,vuex的实现原理
- Vue的生命周期
- Vue有哪些优势
- Vue组件间是如何通讯的
- 父组件和子组件created和mounted的顺序
- 由于 JavaScript 的限制,Vue 不能检测以下数组的变动,到底是不能实现还是vue不想实现
- vuex中mutation和action的作用
- 什么是双向绑定,实现一个简单双向绑定的思路
双向绑定就是视图变了数据会变化,数据变了试图也会变化。实现思路是把数据做成一个代理,监听数据变化了就更新dom;在dom上设置监听事件,监听到变化了就更新数据。
关于js的
- 对Js模块化的理解
- js两种函数定义方法有什么区别
- js闭包,闭包的作用和缺点
- 原生js获取dom和属性
- isNaN和Number.isNaN
- .sort() 方法用的是什么算法
不同浏览器使用的算法也不同,如谷歌在长度比较少时采用插入排序,长度较多时采用快速排序。火狐中采取的是归并排序。 - 一句代码实现数组去重
[...new Set(array)]
- 如何判断一个变量是否为数组
- 对事件循环了解
- call,apply,bind的用法和区别
三个方法第一个参数都是指定函数中的this指向;call,apply是立即执行,bind还要调用一次;函数调用时候的参数,call和bind可以直接传入,apply要以数组的形式传入 - callback,promise,generator,async之间的联系
callback是最初的异步调用方式;
promise是一个对象,是为了解决回调地狱的一种新的语法;
generator函数是协程在js中的实现,返回迭代器对象,当迭代器对象处理的是promise时,可以用同步的语法,完成异步的任务;
async函数是generator的优化,内置执行器、更好的语义化、更广的适用性,返回的是promise对象; - 观察者模式和发布订阅者模式
观察值模式是目标和观察者直接沟通,发布订阅者模式是发布者和订阅者通过一个中心进行沟通 - 函数节流和函数防抖
函数防抖:当一个动作连续触发,则只执行最后一次,例如电梯,搜索框搜索输入。函数节流:限制一个函数在一定时间内只能执行一次,例如滚动加载。 - 浅拷贝,深拷贝及循环调用
- 栈内存和堆内存的区别
栈内存:主要存储的是值类型(基本类型):String、Number、Boolean、Null、Undefined、Symbol,特点是数据大小与生存期是确定的,存取速度比较快;
堆内存:主要存储的是引用类型:Object、Array、Function,特点是动态分配内存大小,生存期是由垃圾回收机制决定的,存取速度比较慢;
值传递和引用传递、浅拷贝和深拷贝实际就是围绕堆内存和栈内存展开的,另外new关键字初始化的数据都是存储在堆内存中的 - 形参和实参,函数内部改变后会指向不同的指针
关于css的
- Flex样式有哪些属性
- css盒子模型,ie盒子模型和标准盒子模型的区别
ie盒子模型的宽和高包含了border,padding,content,类似于应用了box-sizing:border-box的标准盒子 - 对bfc(block formatting context)的理解,页面上一个独立的容器,里面的子元素不会和外面的元素相互影响
- 哪些css会触发gpu加速:transform、opacity、filter
- css优先级:important>style属性>id>class+属性选择器+伪类>标签+伪元素
其他
- 描述一下HTTP2
http1问题:tcp连接数限制,线头阻塞,header压缩,明文传输
http2解决:多路复用,头部压缩,服务端推送,二进制帧传输 - 浏览器的渲染过程
- 浏览器的缓存机制
- 浏览器的垃圾回收机制
- 对webpack的了解,使用过哪些插件
- webpack中哈希值的算法
常用的哈希值算法有MD5和SHA-1,webpack中有hash、chunkhash、contenthash三个层级的哈希算法来进行不同层级的缓存,默认算法应该是MD5 - 前端安全策略,常见的前端攻击及解决方法
xss(跨站脚本攻击),csrf(跨站请求伪造),sql注入攻击,点击劫持 - 浏览器中线程和进程的区别
进程是cpu资源分配的最小单位,线程是cpu调度的最小单位 - 一个有大量图片的页面怎么优化
- 页面的重排和重绘
重排就是在浏览器渲染过程中的渲染树重新计算布局,重绘就是重新绘制渲染树
所谓脱离文档流就是脱离渲染树,修改脱离文档流的元素如float元素、absolute元素、fixed元素等,不会引起正常渲染树元素的重排,另外在内存的操作也不会引起渲染树的重排 - get和post的区别
传输数据的大小,安全性,对数据类型的限制