data单复数一样吗_面试官问的这个面试题你回答对了吗?

        这是一个接口测试&HTTP协议的基础知识,也是面试的时候面试官经常问的一个面试题

e4606c0f11c6ace49e1f79abc4e82833.png

        咋一看,哇哦,这个我会啊。

        第一点:get把传参放入url中,post把传参放到body中

        第二点:get的参数有限制长度的,post没有

        第三点:get只有url编码,post有多种编码

        第四点:get请求会被cache,post不会

        第五点:get参数会在url显示,所以post安全

        第六点:浏览器回退的时候post会多次提交

        第七点:get只接受ASCII字符

        第八点:get请求参数会被保存在浏览记录,post不会

        第九点:get产生的url地址会被BOOKMARK

        感觉是不是很全面,这个回答会叫面试官刮目相看的。

        可是面试官听完心里一想,也是个半罐子。

dd72e97479178dbbab1a1820a1785293.png

        那么到底什么是正确的答案呢?叫我们来撕掉post和get的外衣来看看

        我们先了解一下http协议,http是tcp/ip之上的应用通信协议,而get和post是http的两个请求方法,所以这俩货的底层也是tcp/ip。所以他俩做的事情完全一样,在技术上给post加上url参数,给get加上body一样没有问题。

        下面我就用一个场景来形容一下,TCP就像货车一样,TCP不像UDP,他从来不会发生丢包的少件的情况,HTTP就像交通规则,HTTP给汽车运输规定了各种规则,比如就产生了get,post,put,delete。HTTP就要求get汽车要把数据放在车顶上既是url里,post要把货物放在车厢里面。当然现实中可能get怕货物太多放不下会在车厢里藏一点,post也可以往车顶放上一丢丢。而这里看到TCP才是运输数据的,HTTP是个行为准则,TCP是get和post的实现依据。但是,我没看到了在get和post中确实存在一些差异,比如货物的运输量上有规定,这个时候,浏览器就出来了,浏览器就像不同的运输公司,他们要求各种大小车装载都有一定的风险控制,所以每个运输公司规定也不同,有些运输公司就可以默认get能够带一点货在车厢里,有的运输公司就不同意,就不帮你卸货。

53a9b12bb5e41489a0f2e0eaa04bd0e9.png

        这下终于知道原理了,都是基于TCP的,并无差别,但是由于HTTP和浏览器的约束导致。

        哈哈,以为就这样结束了吗?

31c1fc9dd7172f513a1cc0c51cc0b944.png

        这里还有个get和post重大区别:

        GET请求,浏览器把header和data一并发送出去,服务器响应200(返回数据);

        对于POST,浏览器先发header,服务器响应100 continue,再发送data,服务器响应200 ok(返回数据)。

         所以说get产生一个TCP数据包,post会有2个。所以说post在运输过程中会跑两趟,先把header放下,在回来装body在卸货。貌似效率上get高很多哦,但是这个效率在网络好的环境下差别基本可忽略,并且两次tcp在数据完整性上也有很大优势,并且在请求的语义上最好也别混用。

          好了,这样回答你的offer是不是就要到手了!

09fbc64ad16e993ccb88c6ecb86c8441.png

公众号回复666领取最新一线大厂面试资料,面试题。以及整理最前沿的测试技术人员发展路线图和技能路线。

cc0da99a89ca0a2797d4ab504bd77f66.png

关注公众号获取更多干货

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值