天天看点

前端面试2021-011

1、简述对ES6的认识

ES6是一种新的客户端脚本语言标准,语法上对原生JS进行了扩展,如提供了声明变量的let关键字和声明常量的const关键字,对函数进行扩展提供了箭头函数,函数参数默认值等,对对象进行了扩展提供了简洁操作语法,扩展了字符串操作函数、扩展了数组操作函数,扩展了Object操作函数等等,提供了class类和对象的新的语法标准等等!

2、简述GET请求和POST请求的异同

GET请求和POST请求都属于HTTP1.1规范中的请求方式,用于客户端向服务器发起请求完成数据处理

GET请求主要通过浏览器URL地址、超链接、link标签href属性、script标签src属性以及img的src属性等发起;请求中可以附带字符串类型的参数数据,参数以key=value的形式拼接在url地址的后面进行发送;主要用于向服务器请求获取数据;

POST请求主要通过表单或者Ajax进行发送;请求中以附带任意类型的参数数据,参数包含在请求体中进行发送,具有一定的保密性;主要用于向服务器提交数据;

3、一个HTTP请求从发送到浏览器渲染展示 期间都发生了什么事

从HTTP请求发送到浏览器渲染展示页面,是一个完整的请求过程

首先请求发送之后,会被DNS进行解析得到域名对应的IP地址

通过IP地址查询到服务器,向服务器发送具体请求,请求具体资源数据

服务器根据请求路径完成业务处理,将返回的数据包装到响应对象中

响应对象返回给浏览器进行解析,渲染展示给用户

4、阐述一下你都用过哪些NodeJS模块

NodeJS是一个JavaScript运行时环境,包含了大量的具有独立功能的模块

path用于文件路径处理

fs用于文件系统内容读写

qs用于查询字符串解析

querystring用于查询字符串解析

trim用于字符串空格剔除

http用于web服务支持

express用于web应用开发

svg-captcha用于验证码操作

serve-favicon用于服务LOGO处理

formidable用于文件上传操作

express-session用于会话管理

cookie-parser用于cookie数据操作

md5用于数据单向加密

...

5、什么是中间件,NodeJS中你都用过哪些类型的中间件

中间件是工作在请求和响应之间的中间组件,主要用于请求和响应的增强

应用级中间件:路由函数,拦截了请求,使用对应的函数进行数据处理

内置中间件:静态文件处理、POST参数处理

第三方中间件:session会话管理

前置中间件:自定义中间件,主要用于在所有路由函数之前进行请求/响应的处理

错误中间件:自定义中间件,主要用于所有路由函数之后进行错误消息处理

6、普通请求和Ajax请求的区别

普通请求,客户端向服务器发送请求,如果服务器返回需要渲染的数据会出现页面整体刷新

Ajax请求,客户端在发生某个事件时后台发送请求,获取服务器返回数据后可以执行页面中的数据局部刷新

7、什么是跨域?简述都有哪些跨域的实现方式?

跨域是客户端和服务器不在同一个协议/域名/端口的情况下,进行数据请求的操作过程

一般情况下由于同源策略的存在,服务器数据不允许跨域访问的!

由于数据共享的需求,需要部分需求中支持跨域数据请求,跨域的实现方式主要有如下几种:

CORS跨域,服务器端的跨域,服务器一侧通过设置请求头让数据接口支持跨域

JSONP跨域,客户端的跨域,本质上通过script标签的src属性的特性进行跨域

websocket跨域,本质上就是客户端和服务器之间的长链接,支持跨域的请求

其他的跨域,可以通过iframe标签的特性,完成跨域的操作;或者通过中间件跨域的方式完成跨域请求,如跨域中间件cors,如nginx代理跨域等等

8、说一下jsonp跨域的原理,jQuery中怎么实现jsonp跨域的?

jsonp跨域底层是通过script的src属性,实现跨域请求的数据获取,获取的数据会通过请求后的回调函数进行获取和解析处理

jQuery中封装了jsonp的跨域请求,可以直接通过dataType选项指定jsonp跨域

$.ajax({
    url:xxx,
    type: "GET",
    data: {参数},
    dataType: "jsonp",
    success: function(res) {...}
})           

复制