面试题总结1

100 阅读3分钟

1.浏览器渲染过程

1. 构建DOM树

2. 构建CSS规则树

3. 浏览器将DOM树和CSS树结合,构建出渲染树

4. 布局即计算节点在屏幕中的位置

5. 绘制即遍历渲染树

2.重绘与重排(回流)

重绘:只改变样式,会导致重绘,例如改变颜色

重排:改变布局,会导致重排,例如改变大小 重排一定会导致重绘,重绘不一定重排

3. new工作原理

 四个步骤: 

1. 创建空对象

 2. this指向这个对象 

3. 对象赋值

 4. 返回这个对象 

4. 原型对象和原型链

 原型对象:任何函数被创建的时候,系统会自动创建一个对应的对象,称之为原型对象,构造函数的属性prototype指向原型对象

 原型关系: 

- 构造函数的prototype指向原型对象 

可以解决资源浪费及变量污染的问题

 - 实例对象的__proto__属性指向原型对象 

可以让实例对象访问原型中的成员

 - 原型对象的construct指向构造函数 

可以让实例对象知道被哪一个构造函数创建 

 原型链:每个对象都有原型,原型本身也是对象,原型又有原型,以此类推形成一个链式结构,称为原型链

 ![1559053096356.png](p9-juejin.byteimg.com/tos-cn-i-k3…?)

5. call/apply/bind

相同点:都是用来改变function函数this 

不同点:

apply与call和bind的传参方式不一样 

 call和bind会单个传参,apply是伪数组或数组传参 

 bind与call和apply的执行机制不同 

 bind会复制一个改变了this指向的函数,不会立即执行,需要调用 call和bind会立即执行 

6. 防抖和节流

防抖:多次触发,只执行最后一次 

节流:一段时间内触发,只执行一次

7. instanceof运算符

 instanceof用于检测构造函数的prototype在不在实例对象的原型链上

8. 深/浅拷贝

深拷贝:拷贝值 

浅拷贝:拷贝地址 

引用类型实现深拷贝的方法:递归 

9. cookie、sessionStorage、localStorage

相同点: 

- 存储在客户端 

三个不同点:

 - 数据大小不同,cookie数据大小不能超过4k,sessionStorage与localStorage的存储比cookie大,可以达到5M 

- 存储时间不同,cookie在设置的过期时间之前一直有效,localStorage永久存储,需要手动删除,sessionStorage临时存储,页面关闭,自动删除

 - 存储的地方不同,cookie的数据会自动的传递给服务器,sessionStorage和localStorage数据是保存在本地的 

10. 从输入URL到页面加载的全过程

 1.DNS域名解析 

2.建立TCP链接:三次握手 

3.服务器处理数据并响应请求 

4.浏览器渲染页面 

11.跨域 跨域是什么?

ajax请求地址与页面地址不同源 不同源:IP地址,端口号,协议有一个不同就不同源

12.this的三种指向 

- 全局函数:this指向window 

- 对象方法:this指向对象

 - 构造函数:this指向new创建的空对象 

13.闭包

闭包是内层函数访问外层函数的变量,将变量私有化,是函数+上下文的一个组合,主要作用是用来解决变量污染 

14.面向对象的三大特征

1、封装:将功能封装在对象中 

2.继承:一个对象拥有其他对象的属性和方法

 3.多态:一个对象在不同情况下的多种状态 

15.for-in与for-of区别 

 1、功能不同 

 for-in是遍历数组的下标

 for-of是遍历数组的元素 

 2、原型的属性 

 for-in会遍历原型的属性

 for-of不会遍历原型的属性

 3、数据类型 

 for-in可以遍历object类型

 for-of不可以遍历object类型