1 Star 0 Fork 31

tankai / Ebooks

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

最新2022年网络编程面试题高级面试题及附答案解析

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

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

网络编程

题1:Socket 是全双工通信的吗?

Socket基于TCP协议,是全双工通信的。

题2:Socket 如何唯一标识一个进程?

socket基于tcp协议实现,网络层的ip地址唯一标识一台主机,而传输层的协议+端口号可以唯一标识绑定到这个端口的进程。

题3:HTTP 状态码常见的都有哪些?

当浏览者访问网页时,浏览器会向网页所在服务器发出请求。浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。

HTTP状态码的英文为HTTP Status Code。

下面是常见的HTTP状态码:

200 - 请求成功 301 - 资源(网页等)被永久转移到其它URL 404 - 请求的资源(网页等)不存在 500 - 内部服务器错误

HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。

HTTP状态码共分为5种类型:

“1**”状态码表示信息,服务器收到请求,需要请求者继续执行操作。

“2**”状态码表示成功,操作被成功接收并处理。

“3**”状态码表示重定向,需要进一步的操作以完成请求。

“4**”状态码表示客户端错误,请求包含语法错误或无法完成请求。

“5**”状态码表示服务器错误,服务器在处理请求的过程中发生了错误。

题4:应用层中常见的协议都有哪些?

应用层协议(application layer protocol)定义了运行在不同端系统上的应用程序进程如何相互传递报文。

应用层协议

1)DNS:一种用以将域名转换为IP地址的Internet服务,域名系统DNS是因特网使用的命名系统,用来把便于人们使用的机器名字转换为IP地址。

现在顶级域名TLD分为三大类:国家顶级域名nTLD;通用顶级域名gTLD;基础结构域名。

域名服务器分为四种类型:根域名服务器;顶级域名服务器;本地域名服务器;权限域名服务器。

2)FTP:文件传输协议FTP是因特网上使用得最广泛的文件传送协议。FTP提供交互式的访问,允许客户指明文件类型与格式,并允许文件具有存取权限。

基于客户服务器模式,FTP协议包括两个组成部分,一是FTP服务器,二是FTP客户端,提供交互式的访问面向连接,使用TCP/IP可靠的运输服务,主要功能:减少/消除不同操作系统下文件的不兼容性 。

3)telnet远程终端协议:telnet是一个简单的远程终端协议,它也是因特网的正式标准。又称为终端仿真协议。

4)HTTP:超文本传送协议,是面向事务的应用层协议,它是万维网上能够可靠地交换文件的重要基础。http使用面向连接的TCP作为运输层协议,保证了数据的可靠传输。

5)电子邮件协议SMTP:即简单邮件传送协议。SMTP规定了在两个相互通信的SMTP进程之间应如何交换信息。SMTP通信的三个阶段:建立连接、邮件传送、连接释放。

6)POP3:邮件读取协议,POP3(Post Office Protocol 3)协议通常被用来接收电子邮件。

7)远程登录协议(Telnet):用于实现远程登录功能。

8)SNMP:简单网络管理协议。由三部分组成:SNMP本身、管理信息结构SMI和管理信息MIB。SNMP定义了管理站和代理之间所交换的分组格式。SMI定义了命名对象类型的通用规则,以及把对象和对象的值进行编码。MIB在被管理的实体中创建了命名对象,并规定类型。

题5:Socket 前后端通信是如何实现服务器集群?

假设有两台A服务器服务S1和B服务器服务S2,应用服务S0

首先你接收客户端(浏览器)请求的服务肯定是单点(一对一)连接,之后交给应用服务S0处理分配给两台服务器A和B上的服务S1和S2。

分配原则可以按一定的策略,如计数器等,按当前活跃连接数来决定分给哪台服务器。也可以更科学的按两台服务器实际处理的数据量来分配,因为有些连接可能一直空闲。

如果两台服务器上的服务通信正常且数据库能够承受压力,访问请求并不是太多的情况下,可以考虑使用数据库传递消息,反之可以考虑使用Redis缓存技术。

如果需要即时传递消息,在其中一个服务器上的服务S1查找不到,把消息发给另外一台服务器上的服务S2或把消息存储至数据库或缓存当中,然后通知其他服务有生产消息。类似MQ处理方式可参考ActiveMQ。

题6:TCP 中什么是粘包和拆包?

TCP的数据发送都是靠流,流由一个接一个的数据包组成。

发送过程中tcp会把数据拆成很多个包,也有可能将小的数据合成一个大包。

题7:什么是网络层?

网络层的任务就是选择合适的网间路由和交换结点,确保计算机通信的数据及时传送。在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组和包进行传送。在TCP/IP体系结构中,由于网络层使用IP协议,因此分组也叫IP数据报 ,简称数据报。

互联网是由大量的异构(heterogeneous)网络通过路由器(router)相互连接起来的。互联网使用的网络层协议是无连接的网际协议(Intert Prococol)和许多路由选择协议,因此互联网的网络层也叫做网际层或IP层。

发送端在层与层之间传输数据时,每经过一层时会被打上一个该层所属的首部信息。反之,接收端在层与层之间传输数据时,每经过一层时会把对应的首部信息去除。

题8:什么是对称加密和非对称加密?

对称密钥加密是指加密和解密使用同一个密钥的方式,这种方式存在的最大问题就是密钥发送问题,即如何安全地将密钥发给对方;

而非对称加密是指使用一对非对称密钥,即公钥和私钥,公钥可以随意发布,但私钥只有自己知道。发送密文的一方使用对方的公钥进行加密处理,对方接收到加密信息后,使用自己的私钥进行解密。

由于非对称加密的方式不需要发送用来解密的私钥,所以可以保证安全性;但是和对称加密比起来,非常的慢。

题9:HTTP1.0 和 HTTP1.1 有什么区别?

1)长连接(Persistent Connection)

HTTP1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。

HTTP1.1支持长连接,在请求头中有Connection:Keep-Alive。在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。

2)节省带宽

HTTP1.0中存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象传输过去,并且不支持断点续传功能。

HTTP1.1支持只发送header信息,不携带其他任何body信息,如果服务器认为客户端有权限请求服务器,则返回100状态码,客户端接收到100状态码后把请求body发送到服务器;如果返回401状态码,客户端无需发送请求body节省带宽。

3)HOST域

HTTP1.0没有host域,HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。

HTTP1.1的请求消息和响应消息都支持host域,且请求消息中若是host域会报告400 Bad Request错误。一台物理服务器上可以同时存在多个虚拟主机(Multi-homed Web Servers),并且它们可以共享一个IP地址。

4)缓存处理

HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准。

HTTP1.1引入了更多的缓存控制策略如Entity tag、If-Unmodified-Since、If-Match、If-None-Match等更多可供选择的缓存头来控制缓存策略。

5)错误通知管理

HTTP1.1中新增24个错误状态响应码,比如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。

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

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

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

3、易于实现和维护。

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

题11:通信双方如何进行端口绑定

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

题13:http-和-https-有什么区别

题14:序列化都有哪些使用场景

题15:http-中请求报文包含哪几部分

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

题17:rpc-和-http-分别有什么优缺点

题18:http-中常见的响应头有哪些

题19:什么是应用层

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

题21:什么是-socket

题22:http-协议是全双工通信的吗

题23:什么是数据链路层

题24:什么是-java-序列化串行化

题25:什么是传输层

大厂面试题

大厂面试题

大厂面试题

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

搜索帮助

53164aa7 5694891 3bd8fe86 5694891