本文首发于掘金,各位可以通过点击文章下方的阅读原来来访问原文地址
网络相关的知识也是面试时经常会被问到的问题,面试官很有必要确认面试者是否只会使用$.ajax()方法,还是真正了解网络请求的原理。
问题列表
答案列表
1.get和post的区别
这题看上很简单,你肯定能答出1个以上的区别,但是面试官往往期望你能答出更多更深层次的区别。
这篇文章写的很详细了,大家可以研究一下——get和post区别?(链接地址:https://www.zhihu.com/question/28586791)
我在这里在概括一下:
初级的答案
因为GET方法请求的参数都是放在请求的url上的,所以它与POST有以下明显的区别:
在语义上两个方法也有区别:
高级些的答案
GET产生一个TCP数据包;POST产生两个TCP数据包。
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
也就是说,GET只需要汽车跑一趟就把货送到了,而POST得跑两趟,第一趟,先去和服务器打个招呼“嗨,我等下要送一批货来,你们打开门迎接我”,然后再回头把货送过去。
但是需要多解释两句的是:
2.websocket是否了解?
通常情况下,面试官问你是否对XX有了解,一般的回答都是要涵盖下面这些点:
webSocket和http一样,同属于应用层协议。它最重要的用途是实现了客户端与服务端之间的全双工通信,当服务端数据变化时,可以第一时间通知到客户端。
除此之外,它与http协议不同的地方还有:
要想了解更多详细,还是去看阮一峰的教程吧——WebSocket 教程 - 阮一峰的网络日志(链接:http://www.ruanyifeng.com/blog/2017/05/websocket.html)
3.http 2.0对于http 1.x有哪些优点?
优点(以下摘自HTTP/2.0 相比1.0有哪些重大改进?):
4.jQuery的ajax返回值是什么?
很多公司,尤其是金融或数据分析的公司,他们的web app会与服务端进行大量的数据交互,所以他们的面试官通常会很看重面试者对于网络请求以及异步编程的理解程度。
jQuery中的ajax大家很常用,以至于绝大部分人把他认为是“理所应当”,而忽略了他的底层逻辑和实现原理。$.ajax()方法返回的是一个延迟对象,即$.Deferred的实例。
所以你可以像下面这样使用$.ajax()方法
如果你想让这两个请求都完成后再进行处理的话,可以用下面的操作:
想要了解更多关于延迟对象的内容,可以访问阮一峰的博客(链接:http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_deferred_object.html)
除了上面这一个问题,还可以追问一些下面的问题,这里就不展开解答了:
5.说一说你知道的HTTP状态码
以前遇到面试者说 HTTP状态码不应该是前端开发关心的事情。但我总觉得一个前端工程师对于http状态码的了解程度代表了他曾经踩过了多少雷,一个深入了解http状态码的工程师可以快速定位问题。
关于HTTP状态码应该有下面的基本认识:
知道上面的规律,再看到错误的时候就大概知道问题是后端的锅还是前端的锅了。
再说几个常用的http状态码(如果有兴趣了解详细的话还是自己去找吧,网上很多):
6.JSONP的原理
JSONP是一种跨域共享资源的方法。
很多人会好奇JSONP和JSON是什么关系,JSONP是JSON with padding的缩写,即填充式JSON或参数式JSON,是被包含在函数调用中的JSON,如下面的样子:
JSONP是通过动态<script>元素来实现的,使用时可以为src属性指定一个跨域URL。由于浏览器加载脚本是不受同源规则限制的,所以即使是跨域的URL同样可以发送请求。因为JSONP是有效的JavaScript代码,所以再请求完成后,即在JSONP响应加载到页面中以后,就会立即执行。
示例代码:
所以总结一下JSONP的实现方式:
JSONP之所以可以实现跨域,依赖的是下面的条件:
需要注意的是,JSONP是需要服务端配合的,因为JSONP返回的是一段代码。
7.跨域请求资源有哪几种方式?他们的优缺点是什么?
常见的跨域方式如下:
一个一个说:
JSONP
优点:简单易用,浏览器支持好。
缺点:
图像Ping
这是指通过请求图片的方式来跨域发送请求。
优点:简单,兼容性好,不需要服务器做针对性处理。
缺点:
CORS
CORS是Cross-Origin Resource Sharing的缩写,即跨域资源共享。CORS的基本思想就是使用自定义的HTTP头部让浏览器与服务器进行沟通,从而决定请求或响应是应该成功,还是应该失败。
优点:功能强大
缺点:
WebSocket
这个貌似就不用多说了,属于没用过也应该听过的一种技术。
优点:
缺点:
还有很多其他的跨域方式,在这里就不说了
8.XML和JSON的区别?
XML是标准通用标记语言 (SGML) 的子集,而标签语言(如HTML)的好处就是易懂。
优点:上手简单,非开发人员也可以快速上手(产品经理们很喜欢)。
缺点:
JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。重点在轻上,结构与JavaScript中的Object类似。
优点:
缺点:结构稍微有点复杂,非开发人员不容易上手(初学者需要去官网学习研究一下)