很多人学习java编程语言的大部分原因都是希望通过它能够获得更好的薪资和生活水平。因此了解一些在面试时会遇到的问题就是很有必要的了。一起来看看吧。
首先说一下,OSI 的七层模型都有哪些?
1.物理层:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。
2.数据链路层:接收来自物理层的位流形式的数据,并封装成帧,传送到上一层
3.网络层:将网络地址翻译成对应的物理地址,并通过路由选择算法为分组通过通信子网选择最适当的路径。
4.传输层:在源端与目的端之间提供可靠的透明数据传输
5.会话层:负责在网络中的两节点之间建立、维持和终止通信
6.表示层:处理用户信息的表示问题,数据的编码,压缩和解压缩,数据的加密和解密
7.应用层:为用户的应用进程提供网络通信服务
接下来为大家补充几个相关的面试题。
一、HTTPS和HTTP的区别
1.HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全, HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。
2.https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
3.http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
二、http长连接和短连接的区别
在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。
而从HTTP/1.1起,默认使用长连接,用以保持连接特性。
那么,什么是TCP粘包/拆包?发生原因?
解决方案:一个完整的业务可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这个就是TCP的拆包和粘包问题。
原因:1. 应用程序写入数据的字节大小大于套接字发送缓冲区的大小.2. 进行MSS大小的TCP分段。(MSS=TCP报文段长度-TCP首部长度)3. 以太网的payload大于MTU进行IP分片。(MTU指:一种通信协议的某一层上面所能通过的最大数据包大小。)
解决方案:1. 消息定长。2. 在包尾部增加回车或者空格符等特殊字符进行分割3. 将消息分为消息头和消息尾。4. 使用其它复杂的协议,如RTMP协议等。
以上就是java中一些常见的面试题了,并且也为大家展示了详细的解决方案。具体的知识还是很好理解的。如果你对java知识感兴趣,想要了解更多Java面试题,敬请关注奇Q工具网。
推荐阅读: