1 Star 0 Fork 31

tankai / Ebooks

forked from Java精选 / Ebooks 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
最新2021年网络编程面试题及答案汇总版.md 8.67 KB
一键复制 编辑 原始数据 按行查看 历史

最新2021年网络编程面试题及答案汇总版

全部面试题答案,更新日期:01月30日,直接下载吧!

下载链接:高清500+份面试题资料及电子书,累计 10000+ 页大厂面试题 PDF

网络编程

题1:RPC 和 HTTP 有什么区别?

RPC和HTTP的存在重大不同的是:

HTTP请求是使用具有标准语义的通用的接口定向到资源的,这些语义能够被中间组件和提供服务的来源机器进行解释。结果是使得一个应用支持分层的转换(layers of transformation)和间接层(indirection),并且独立于消息的来源,这对于一个Internet规模、多个组织、无法控制的可伸缩性的信息系统来说,是非常有用的。

与之相比较,RPC的机制是根据语言的API(language API)来定义的,而不是根据基于网络的应用来定义的。

题2:RPC 和 HTTP 分别有什么优缺点?

传输协议

RPC:可以基于TCP协议,也可以基于HTTP协议;

HTTP:基于HTTP协议。

传输效率

RPC:使用自定义的TCP协议,可以让请求报文体积更小,或者使用HTTP2协议,也可以很好的减少报文的体积,提高传输效率;

HTTP:如果是基于HTTP1.1的协议,请求中会包含很多无用的内容,如果是基于HTTP2.0,那么简单的封装以下是可以作为一个RPC来使用的,这时标准RPC框架更多的是服务治理。

性能消耗

RPC:可以基于thrift实现高效的二进制传输;

HTTP:大部分是通过json来实现的,字节大小和序列化耗时都比thrift要更消耗性能。

负载均衡

RPC:基本都自带了负载均衡策略;

HTTP:需要配置Nginx,HAProxy来实现。

服务治理

RPC:能做到自动通知,不影响上游;

HTTP:需要事先通知,修改Nginx/HAProxy配置。

总结

RPC主要用于公司内部的服务调用,性能消耗低,传输效率高,服务治理方便。HTTP主要用于对外的异构环境,浏览器接口调用,APP接口调用,第三方接口调用等。

题3:为什么 TCP 握手三次,挥手四次?

因为只有在客户端和服务端都没有数据要发送的时候才能断开TCP。而客户端发出FIN报文时只能保证客户端没有数据发了,服务端还有没有数据发客户端是不知道的。

服务端收到客户端的FIN报文后只能先回复客户端一个确认报文来告诉客户端,服务端已经收到FIN报文,但服务端还有一些数据没发完,等这些数据发完了服务端才能给客户端发FIN报文,所以不能一次性将确认报文和FIN报文发给客户端,就是这里多出来了一次。

题4:HTTP 协议中常用的请求方法有哪些?

根据HTTP标准,HTTP请求可以使用多种请求方法。

HTTP1.0定义了三种请求方法:GET、POST和HEAD方法。

HTTP1.1新增了五种请求方法:OPTIONS、PUT、DELETE、TRACE和CONNECT方法。

方法 描述 是否包含主体
GET 请求指定的页面信息,并返回实体主体。
HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
PUT 从客户端向服务器传送的数据取代指定的文档的内容。
TRACE 回显服务器收到的请求,主要用于测试或诊断
OPTIONS 允许客户端查看服务器的性能。
DELETE 请求服务器删除指定的页面。
CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

题5:HTTP 协议是全双工通信的吗?

HTTP协议设计的初衷本身就是请求/响应模式,这是规范决定的。不过在技术上是可以利用下层的TCP来进行全双工通信的。

题6:什么是物理层?

在物理层上所传送的数据单位是比特。 物理层(physical layer)的作用是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。

使其上面的数据链路层不必考虑网络的具体传输介质是什么。

“透明传送比特流”表示经实际电路传送后的比特流没有发生变化,对传送的比特流来说,这个电路好像是看不见的。

题7:什么是网络协议?

网络协议(Protocol)是一种特殊的软件,是计算机网络实现其功能的最基本机制。

网络协议的本质是规则,即各种硬件和软件必须遵循的共同守则。

网络协议并不是一套单独的软件,它融合于其他所有的软件系统中,因此可以说,协议在网络中无所不在。

网络协议遍及OSI通信模型的各个层次,从我们非常熟悉的TCP/IP、HTTP、FTP协议,到OSPF、IGP等协议,有上千种之多。

对于普通用户而言,不需要关心太多的底层通信协议,只需要了解其通信原理即可。

在实际管理中,底层通信协议一般会自动工作,不需要人工干预。但是对于第三层以上的协议,就经常需要人工干预,比如TCP/IP协议就需要人工配置才能正常工作。

局域网常用的三种通信协议分别是TCP/IP协议、NetBEUI协议和IPX/SPX协议。

题8:Socket 属于网络的哪一层?

Socket不算是一个协议,它是应用层与传输层间的一个抽象层。它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用,以实现进程在网络中通信。

题9:什么情况下需要序列化?为什么 RPC 参数需要序列化?参数中日期类型用 sql.Date 还是 util.Date?

序列化的目的依赖为了进行网络传输,其一确保传的字节流能被反编译找到对应的类,其二为了方便本地硬盘存储。

RPC(Remote Protocal Call)服务为异步服务都是通过网络传输数据,因此需要序列化数据。

Java.sql.Date类继承java.util.Date类,但是并未实现序列化,因此作为参数不能在RPC服务中进行传输。

题10:为什么要对网络协议分层?

1、简化问题难度和复杂度。由于各层之间独立,我们可以分割大问题为小问题。

2、灵活性好。当其中一层的技术变化时,只要层间接口关系保持不变,其他层不受影响。

3、易于实现和维护。

4、促进标准化工作。分开后,每层功能可以相对简单地被描述。

题11:url-和-uri-有什么区别

题12:什么是-socket

题13:什么是应用层

题14:同步异步阻塞非阻塞概念是什么

题15:tcp/ip连接时有几次握手释放几次

题16:tcp-中粘包问题有什么解决策略

题17:tcp-中在什么情况下发生粘包问题

题18:http-中常见的请求头有哪些

题19:序列化使用都有哪些注意事项

题20:tcp-中什么是粘包和拆包

题21:http-中响应报文包含哪几部分

题22:socket-前后端通信是如何实现服务器集群

题23:如何解决-http-协议无状态协议

题24:什么是-http-协议无状态协议

题25:什么是传输层

大厂面试题

大厂面试题

大厂面试题

Java
1
https://gitee.com/tankkai/ebooks.git
git@gitee.com:tankkai/ebooks.git
tankkai
ebooks
Ebooks
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891