最近也在准备换工做了,而后收集了一些我以为今年面试会遇到常见的问题。css
若是有机会,记得也帮忙分享我一下。
2019的行情确实很糟糕。看到这么多人收藏点赞。个人心里也是哇凉哇凉的。
我也给一些除了面试题以外的经验吧我相信不景气也是相对的,提高自我也是必要的。我说说我最近在准备些什么。html
- 首先优化本身的博客。有技术博客的求职者,一定会给面试官筛选简历时一个很好的印象
- 针对你想求职的企业规模,乘着这段时间,深刻的了解一些源码。如中型企业大多都偏心vue。我最近也在研究其中的源码。
- 更高bigger的,能够在研究框架源码中,得出一些经验,写一套本身框架。目前我也正在准备。
- 还有本身的npm的组件包。
核心:引用类型和非引用类型的拷贝结果是不一样的
浅拷贝只是拷贝基本类型的数据,若是父对象的属性等于数组或另外一个对象,那么实际上,子对象得到的只是一个内存地址,所以存在父对象被篡改的可能,浅拷贝只复制指向某个对象的指针,而不复制对象自己,新旧对象仍是共享同一块内存vue
//简单的浅拷贝 var a = 1; var b = a;//赋值 console.log(b) //1 a = 2;//改变a的值 console.log(b) //1
JSON.parse() + JSON.stringify()(缺点:只能处理能够被枚举的属性);
for in 循环递归遍历;webpack
深拷贝就是可以实现真正意义上的数组和对象的拷贝。递归调用"浅拷贝"。(深拷贝会另外创造一个如出一辙的对象,新对象跟原对象不共享内存,修改新对象不会改到原对象)es6
Object.defineproperties (定义属性)、Object.getOwnPropertyDescriptors(es2017,获取对象的多个属性)、Object.getOwnPropertyDescriptor(老一点,获取对象的单个属性的属性),但babel能够解决。web
__proto__
__proto__
是非标准化的;全部东西的原型链向上延伸到原型链的顶端,是什么;面试
Object.prototype.__proto__
,结果是null.Function自己就是函数, Function.__proto__ 是标准的内置对象Function.prototype, Function.prototype.__proto__ 是标准的内置对象Object.prototype
原型链继承ajax
进阶一:说到变量提高,class 声明一个类时,存在变量提高么?为何?npm
进阶二:const 声明一个对象,如何让对象内部的属性的值也没法改变?编程
进阶三:全局做用域?函数做用域?块级做用域?做用域链?
进阶:es6新增的原型数据类型Symbol,特色是什么;
进阶2:如何声明两个相等的Symbol变量?
let a = Symbol.for('a');
let b = Symbol.for('a');
a === b; // true
#### Promise是什么? * 是异步编程的一种解决方案; * 所谓Promise,简单说就是一个容器,里面保存着某个将来才会结束的事件(一般是一个异步操做)的结果。从语法上说,Promise 是一个对象,从它能够获取异步操做的消息。 通常何时使用? * 处理异步请求时使用,好比ajax请求; 有哪些状态? * 状态有pending、resolved、rejected; 怎么捕获他的错误? * 最后写catch; * then里面第二个参数能够捕获; 若是内部抛错,可是没有被捕获,这个没被捕获的错误接下来会发生什么事情? * 冒泡; 能不能被try catch捕获?为何? * 不能,由于是异步编程。 能不能被window.onerror捕获? * 不能 new Promise((resolve,reject)=>throw new Error('a')).then(fn1).then(fn2,fn3).catch(fn4) 这个函数,会执行哪些函数 * fn3,没了
这题能够了解一下,尽管面试时候造飞船,真的干活可能仍是拧螺丝。
在浏览器还没接收到完整的HTML文件时,它就开始渲染页面了,在遇到外部链入的脚本标签或样式标签或图片时,会再次发送HTTP请求重复上述的步骤。在收到CSS文件后会对已经渲染的页面从新渲染,加入它们应有的样式,图片文件加载完马上显示在相应位置。在这一过程当中可能会触发页面的重绘或重排。
连续的异步请求,下一步的异步请求依赖于前一步的异步请求结果;
进阶一:假若有A、B、C三个异步请求,异步请求C依赖于异步请求A和B的结果(即A和B完成后再发起C),那么你会如何实现它?
Promise.all();
设置状态分别标记A和B,A、B完成后会去修改本身的完成标记,而后检查全部的状态标记,假如都是完成状态,而后去执行异步请求C。
是异步编程的一种解决方案;
所谓Promise,简单说就是一个容器,里面保存着某个将来才会结束的事件(一般是一个异步操做)的结果。从语法上说,Promise 是一个对象,从它能够获取异步操做的消息。
通常何时使用?
处理异步请求时使用,好比ajax请求;
有哪些状态?
状态有pending、resolved、rejected;
怎么捕获他的错误?
最后写catch;
then里面第二个参数能够捕获;
若是内部抛错,可是没有被捕获,这个没被捕获的错误接下来会发生什么事情?
冒泡;
能不能被try catch捕获?为何?
不能,由于是异步编程。
能不能被window.onerror捕获?
不能
new Promise((resolve,reject)=>throw new Error('a')).then(fn1).then(fn2,fn3).catch(fn4) 这个函数,会执行哪些函数 * fn3,没了
0.1 + 0.2
的结果是什么?进阶一:为何?
进阶二:浮点数是怎么存储的(本问题比较难)(能够跳到进阶三,比本题简单)
而double类型就是双精度浮点数,这种指使用64位(8字节)来存储一个浮点数。 根据规定,这64位bit里,分为三部分: 第一部分(1bit): 符号位,表示正负,正数为0,负数为1。 第二部分(11bit): 阶码位,也能够称为指数位。 第三部分(52bit) 尾数位,即表示实际数字的。 假如正负符号的值为S,正数S为1,负数S为-1; 假如指数位表示的值为E(计算后),指数位表示的值为2的E次方; 假如尾数位表示的值为M,尾数位表示的值为M; 根据科学表示法,任何一个范围内的浮点数能够经过如下方法来表示:(别问我为啥,我没去谷歌……) 浮点数 = S * Math.pow(2,E) * M;
进阶三:咱们在实际开发中,若是碰见了这种浮点数计算的状况,怎么处理比较合适?
进阶一:他们的特色分别是什么?或者说实现原理是什么?
进阶二:弹出输入框会发生定位错误,fixed布局,怎么解决?
进阶一:若是你决定使用雪碧图/base64字符串,你会怎么作?