常见测试面试的基础题

一*,http请求get和post的区别:

1,get参数通过url传递,post放在request body中。

2,get请求在url中传递的参数是有长度限制的,而post没有。

3,get比post更不安全,因为参数直接暴露在url中,所以不能用来传递敏感信息。

4,get请求只能进行url编码,而post支持多种编码方式

5,get请求会浏览器主动cache和请求参数会被完整保留在浏览历史记录里,而post不会。

6*,GET和POST本质上就是TCP链接,但是GET产生一个TCP数据包;POST产生两个TCP数据包(对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据),而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。;//第六条很容易被忽略,但面试管很扣这条,小编就被面试官扣过这条

 


二*http和https的区别: (公钥加密,私钥解密)
1、https协议需要到申请证书,一般免费证书较少,因而需要一定费用。(证书其实就是一对公钥和私钥)

2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

5、 HTTPS协议握手阶段比较费时,而且连接服务器端资源占用高很多,HTTPS连接缓存不如HTTP高效;且需要花钱;

 

三*app测试和web测试的区别:
1,app测试相较web测试需要兼容多个版本(因为一般旧版本不会强制更新);

2,web为B/S架构,app为C/S架构,web主要考虑浏览器的兼容,app则在不同机型,分辨率,屏幕尺寸,还要设备系统版本上考虑兼容;

3,app多一些专项测试:一些异常场景的考虑以及弱网络测试。异常场景包括中断,来电,短信,关机,重启等;安装、卸载、更新;界面操作:手势,横竖屏切换,多点触控,事件触发区域;

4,使用的测试工具也不一样;

 

四*Session与Cookie的区别与联系:

Session是由应用服务器维持的一个服务器端的存储空间,用户在连接服务器时,会由服务器生成一个唯一的SessionID,用该SessionID 为标识符来存取服务器端的Session存储空间。而SessionID这一数据则是保存到客户端,用Cookie保存的,
用户提交页面时,会将这一 SessionID提交到服务器端,来存取Session数据。

1,cookie数据保存在客户端,session数据保存在服务器端(都是用来保持状态),cookie不占服务器内存,session占;

2,cookie存在客户端的信息一般是明文的容易被盗取,建议敏感信息(像名字)不要用cookie;

3,cookie可以被禁止,所以服务器也可以通过URL重写的方式来传递SessionID的值,因此不是完全依赖Cookie;

总结
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。

2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session。

3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用COOKIE。

4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

5、所以个人建议:将登陆信息等重要信息存放为SESSION,其他信息如果需要保留,可以放在COOKIE中。

 

五*tcp连接:
TCP特点: 是面向连接的传输层协议 每一条 TCP 连接只能有两个端点(endpoint),每一条 TCP 连接只能是点对点的(一对一) TCP 提供可靠交付的服务 TCP 提供全双工通信 面向字节流

三次握手过程

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手.
完成三次握手,客户端与服务器开始传送数据

四次挥手过程

(1)第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
(2)第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
(3)第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
(4)第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。
(2)为什么建立连接是三次握手,而关闭连接却是四次挥手呢?

这是因为服务端在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。而关闭连接时,当收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,己方也未必全部数据都发送给对方了,所以己方可以立即close,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送。

 

*以上就是小编在亲身面试经历中经常遇到的关于协议类的,特别是get和post还有接口返回状态码的含义经常被问道,http和https和session和cookie问得也比较多的。最后希望大家面试顺利!

posted @ 2018-06-20 14:43  蜗小稂  阅读(154)  评论(0编辑  收藏  举报