【日更】前端面试题

128 阅读4分钟

什么是异步?什么是同步?

1、同步可以理解为在执行完一个函数或者方法之后,一直到等待系统的返回值或者消息,之后接收到返回值或者消息之后才往下执行其他的命令。具有等待功能。
2、异步,执行完函数或者方法之后,不必等待系统的返回值或者西消息,就可以直接执行下一个命令。不用等待。

知道 promise 对象吗?promise 有几种状态?什么情况下进入 catch,封装过接口吗?

1、promise对象,处理异步函数的,就是将异步改为同步执行。
  pending(未待定的状态)
  fulfilled(成功的状态)
  rejected(失败的状态)
2、当状态是失败的时候,会进入catch

http 定义?http 的三次握手?

1、http是一种网络传输协议,浏览器作为http客户端通过url向http服务器发起请求,服务器接收到请求向客户端发送响应信息。
2、三次握手:
  ①、客户端向服务端发送请求
  ②、服务端接收到请求需要进行核对操作,发送的请求服务端能不能接收到,如果接收到,就向客户端返回接收到的请求信息
  ③、客户端拿着服务器返回成功接收到的这个信息再去向服务器发送请求,两者才能建立联系。

请求的方式有哪些?post 和 get 的区别?

1delete、put、post、get等;
2、区别:
  (1)安全性问题:
    ①、get请求参数会被拼接在地址栏上,信息会暴露
    ②、post请求参数不可见
  (2)数据传输量:
    ①、get有长度限制
    ②、post没有
  (3)缓存问题:
    ①、get数据会被缓存
    ②、post不会

常见的状态码:

1、*200:请求成功
2、301:资源被永久转移到其他url
3、*400:客户端你请求语法错误
4、401:发送的请求需要被认证
5、*403:请求的资源被服务器拒绝
6、*404:表面服务器无法找到指定的资源
7、*500:表示服务器在执行请求时发生了错误
8、*502:服务器网关出现了错误
9、503:服务器处于停机维护状态,现在无法处理请求

创建 ajax 的步骤

1、创建XHRHttpRequest对象,也就是创建一个异步调用对象
2、创建一个http请求,并指定请求方法(建立连接)
3、发送http请求
4、获取返回的数据

mouseover 与 mouseenter 的区别?

1、mouseover:鼠标指向的时候触发,当鼠标指向被选元素及其后代元素时触发,会产生事件冒泡
2、mouseenter:鼠标指向的时候触发,当鼠标指向被选中元素时触发,不会产生时间冒泡

什么是防抖?什么是节流?

1、防抖就是多次执行变为最后一次执行,实现函数的防抖:延时器
2、节流就是多次执行变成每隔一段时间执行。实现函数截留的方法:定时器和时间戳

sessionStorage,localStorage,cookie 的区别?

1、sessionStorage生命周期为当前窗口或标签页,一旦窗口或标签页关闭,所有存储的数据也会被清空。
2localStorage生命周期是永久的。除非用户手动清除信息,否则这些信息永久存在。
3、cookie是浏览器与服务器之间来回传递,cookie浏览器关闭数据一直保存,只在过期时间内有效,可以设置过期时间。cookie存储数据不能超过4k,sessionStorage,localStorage存储的数据可以是5M,甚至更多。

var、let、const 的区别?

1var声明的变量属于全局变量,属于windowvar声明的变量可以声明多次,可以修改,并且var声明的变量存在变量的提升。
2let只在块级作用域中使用,即{},不存在变量提升,let只能声明一次不能重复定义,let声明的变量存在暂时性死区。
3const声明一个只读常量,声明之后不允许改变,而且必须初始化,const定义的基本数据是不可以改变的,但是定义的对象或者是数组可以通过下标或者属性来修改