前端面试题总结(一)

一,从输入一个url到浏览器页面展示都经历了哪些过程?

1,DNS查询

  1) 浏览器首先搜索浏览器自身缓存的DNS记录。

2) 如果浏览器缓存中没有找到需要的记录或记录已经过期,则搜索hosts文件和操作系统缓存。

3) 如果在hosts文件和操作系统缓存中没有找到需要的记录或记录已经过期,则向域名解析服务器发送解析请求。

4) 如果域名解析服务器也没有该域名的记录,则开始递归+迭代解析。

5) 获取域名对应的IP后,一步步向上返回,直到返回给浏览器。

2 发起TCP三次握手

  • 第一次握手:建立连接时,客户端向服务端发送请求报文

  • 第二次握手:服务器收到请求报文后,如同意连接,则向客户端发送确认报文

  • 第三次握手,客户端收到服务器的确认后,再次向服务器给出确认报文,完成连接。

3 浏览器向web服务器发送http请求;

  • 请求行:指定http请求的方法、url、http协议版本等

  • 请求头:描述浏览器的相关信息,语言、编码等。

  • 请求正文:当发送POST, PUT等请求时,通常需要向服务器传递数据。这些数据就储存在请求正文中。

4、服务器处理HTTP请求

服务器处理http请求,并返回响应报文。响应报文包括三个部分:

  • 状态码,

  • 响应头:包含了响应的相关信息,如日期等 

  • 响应正文:服务器返回给浏览器的文本信息,通常的html、js、css、图片等就包含在这一部分里面

5、浏览器页面渲染

浏览器接受到http服务器发送过来的响应报文,并开始解析html文档,渲染页面。具体的渲染过程包括:构建DOM树、构建渲染树、定位页面元素、绘制页面元素等

二,new生成一个对象的过程

以 var p=new ClassA( ) 为列

1. 创建空对象;

var p= {};

2. 设置新对象的__proto__属性指向构造函数的prototype对象;

p.__proto__ = ClassA.prototype;

3. 使用新对象调用内部函数call,函数中的this被指向新实例对象:

ClassA.call(p);  

4. 将初始化完毕的新对象地址,保存到等号左边的变量中。

这里有一点需要说明: 正常来讲构造函数中是不用写return语句的,因为它会默认返回新创建的对象。但是,如果在构造函数中写了return语句而且return的是一个对象,那么函数就会覆盖掉新创建的对象,而返回此对象;如果return的是基本类型如字符串、数字、布尔值等,那么函数会忽略掉return语句,还是返回新创建的对象。

三:请简单说明什么是事件冒泡和事件捕获以及事件委托

先简单的解释一下

事件捕获:是从document到触发事件的那个节点,即自上而下的去触发事件

事件冒泡:IE提出的事件流,和事件捕获相反,即事件开始时由最具体的元素接收,然后逐级向上传播到较为不具体的节点,是由下而上的去触发事件

事件委托:

猜你喜欢

转载自www.cnblogs.com/lyyguniang/p/9336087.html