【面经】面试提纲简答(持续更新)

·  阅读 152

1. 什么是闭包,优缺点

闭包就是一个绑定了执行环境的函数,可以访问到外部环境的变量

优点是 变量常驻内存,对实现一些类似于计时器的业务有帮助;实现私有变量,避免了命名冲突的问题。

2. 什么是原型和原型链

原型:构造函数的内置对象,即 prototype ,每个构造函数都自带prototype属性,指向一个对象,常用实例共享属性和方法的。Prototype.constructor 会指向原构造函数

原型链:我们创建一个变量的时候,js 会给它一个默认的 _proto_ 属性,它执行创建它的函数对象的原型对象 prototype,同样的,函数对象的原型对象也有一个 _proto_ 属性,指向创建它的函数对象(Object)的原型对象, 而 Object.prototype 也有 _proto_ 属性,它的值为 null。

Person._proto_ ==> Person.prototype._proto_ ==> Obejct.prototype._proto_ ==> null

3. 事件委托和事件冒泡

事件委托

利用 js 事件冒泡的特性,将内层元素的事件委托给外层处理。

优点:

  1. 提高性能:减少每个子元素事件的注册,大量节省内存
  2. 动态监听:使用事件委托可以自动绑定动态添加的元素,无需再次对其绑定。

事件冒泡

由最开始接受元素接收,然后逐级向上传递到 DOM 最顶层节点的过程。可以形象的比喻成石头落入水中下降产生的泡泡从水底冒出水面的过程,这个就是事件冒泡阶段。

比方说在事件冒泡的概念下发生 click 事件的顺序是:

目标元素 -> body -> html -> document

阻止事件冒泡:e.stopPropagation (有的事件是没有冒泡的,比如 onblur、onfocus、onmouseenter、onmouseleave 等)

继承

浏览器从输入URL到渲染完页面这个过程发生了什么

从输入URL到渲染出整个页面的过程包括三个部分:

  1. DNS解析URL的过程

    DNS解析的过程就是寻找哪个服务器上有请求的资源,因为ip地址不容易记忆,一般会使用URL域名(如www.baidu.com)作为网址。DNS解析就是将域名翻译成IP地址的过程。

  2. 浏览器发送请求与服务器交互的过程

    首先浏览器利用tcp协议通过三次握手与服务器建立连接,浏览器接收到返回的html页面之后,开始进行页面的渲染。

  3. 浏览器对接收到的html页面渲染的过程

    • 浏览器根据深度遍历的方式把 html 节点遍历成 dom 树
    • 将 css 解析成 CSS DOM 树
    • 将 dom树 和 CSS DOM 树构造成 render 树
    • JS 根据得到的 render 树,计算所有节点在屏幕中的位置,进行布局(回流)
    • 遍历 render 树并调用硬件 API 绘制所有节点(重绘)

http 状态码

可以大致的按照状态码的开头数位分成以下几种状态:

  • 1xx:消息

   代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束。
   100 Continue - 客户端应当继续发送请求

  • 2xx:请求状态

   代表请求已成功被服务器接收、理解、并接受。
   200 OK - 请求已成功,请求所希望的响应头或数据体将随此响应返回。
   202 Accepted - 请求已成功,服务器已接受请求,但尚未处理。正如它可能被拒绝一样,最终该请求可能会也可能不会被执行。在异步操作的场合下,没有比发送这个状态码更方便的做法了。

  • 3xx:重定向

   这类状态码代表需要客户端采取进一步的操作才能完成请求。通常,这些状态码用来重定向,后续的请求地址(重定向目标)在本次响应的 Location 域中指明。

   304 Not Modified - 如果客户端发送了一个带条件的 GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个状态码。

  • 4xx:客户端错误

   这类的状态码代表了客户端看起来可能发生了错误,妨碍了服务器的处理。
    400 Bad Request - 由于包含语法错误,当前请求无法被服务器理解。除非进行修改,否则客户端不应该重复提交这个请求。
    403 Forbidden - 服务器已经理解请求,但是拒绝执行它。与401响应不同的是,身份验证并不能提供任何帮助,而且这个请求也不应该被重复提交。
    405 Method Not Allowed - 请求行中指定的请求方法不能被用于请求相应的资源。该响应必须返回一个 Allow 头信息用以表示出当前资源能够接受的请求方法的列表。

  • 5xx:服务器端错误

   这类状态码代表了服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理。
   502 Bad Gateway - 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
   504 Gateway Timeout


分类:
前端
标签: