攻城狮常见面试题题解
1.Http与Https的区别:
- http(HyproText Transfer Protocol,超文本传输协议) 是明文方式传输的,数据是未加密的,是不安全的;而https(http+ssl)是在http通信的基础上,通过ssl对数据包加密,是安全的。
- https是需要ca安全证书验证的,ca证书一般需要收费。
- http连接的接口是80,https连接的接口是443.
- http在建立TCP连接进行三次握手时需要传交换3个数据包;而https除了建立TCP连接三次握手的3个数据包,还需要额外交换ssl的9个数据包,总共12个数据包,因而http响应速率更快。
- https是在ssl/tsl上的http协议,因而需要消耗更多的计算机系统资源
2.tcp与udp的区别:
- Tcp是面向连接的、确保数据传输的安全性和有序性;udp是无连接的,数据传输不安全、无序(可能后面发送的数据包先到达)。
- tcp是字节流形式传输数据;udp是数据包形式传输数据
- tcp相对于udp要求的计算机资源更多
- tcp传输速度比udp慢
- tcp无界有拥塞控制(流量控制),udp有界无拥塞控制(一次传输一整个数据包)
3.http请求中get和post区别:
- get请求中参数在url中,post请求参数通过“request body”传递;
- get请求参数类型只能是ASCII码,post请求参数类型无限制;
- get请求参数的长度有限制,而post请求参数长度无限制;
- get请求参数放在url中不安全,post请求安全;
- get请求会在浏览器记录中cache,而post不会;
- get请求只需要一次tcp连接(http header 和数据一起传送);post请求需要两次TCP连接(先发送http header ,然后再发送数据)
- get请求的url地址可以被bookmark,而post请求不可以;
4.java中的string、stringbuilder、stringbuffer的区别:
- string内部的实现是用final修饰的字符数组,是不允许修改的,每次修改都会创建一个新的对象;
- stringbuilder内部实现是字符串,允许修改,但是线程不安全;
- stringbuilder内部实现是字符串,允许修改,线程安全,但速度没stringbuilder快;