1 Star 0 Fork 31

霍月龙 / Ebooks

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

2022年最全网络编程面试题附答案解析大汇总

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

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

网络编程

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

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

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

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

题2:HTTP 和 HTTPS 有什么区别?

1、HTTP的URL以http://开头,而HTTPS的URL以https://开头。

2、HTTP是不安全的,而HTTPS是安全的。

3、HTTP标准端口是80,而HTTPS的标准端口是443。

4、在OSI网络模型中,HTTP工作于应用层,而HTTPS的安全传输机制工作在传输层。

5、HTTP无法加密,而HTTPS对传输的数据进行加密。

6、HTTP无需证书,而HTTPS需要CA机构wosign的颁发的SSL证书。

区别 HTTP HTTPS
协议 运行在TCP之上,明文传输,客户端与服务器端都无法验证对方的身份 身披SSL(Secure Socket Layer)外壳的HTTP,运行于SSL上,SSL运行于TCP之上, 是添加了加密和认证机制的HTTP。
端口 80 443
资源消耗 较少 由于加解密处理,会消耗更多的CPU和内存资源
开销 无需证书 需要证书,而证书一般需要向认证机构购买
加密机制 共享密钥加密和公开密钥加密并用的混合加密机制
安全性 由于加密机制,安全性强

题3:什么是网络层?

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

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

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

题4:如果已建立连接,此时客户端出现故障会如何?

TCP设有一个保活计时器,客户端如果出现故障,服务器不能一直等下去,白白浪费资源。

服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常是设置为2小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75秒钟发送一次。若一连发送10个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接。

题5:什么是网络协议?

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

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

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

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

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

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

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

题6:TCP 中粘包问题有什么解决策略?

由于底层TCP无法理解上层的业务数据,所以在底层是无法保证数据包不被拆分和充足,只能同设计上层的应用的协议栈来解决,根据业界的主流协议的解决方法,归纳如下

1、消息定长,每个报文固定长度为200空格,不够空格来凑。

2、包尾增加回车换行符进行分割,例如FTP协议。

3、将消息分为消息头和消息体,消息头包含消息长度,通常为第一个字段int32来表示消息的总长度。

4、更复杂的应用层协议。

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

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

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

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

题8:什么是 Java 序列化(串行化)?

序列化是指一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。

简单来说就是为了保存在内存中各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来。

序列化的实现是将需要被序列化的类实现Serializable接口,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,然后使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要想恢复的话需要使用输入流。

题9:HTTP 中常见的请求头有哪些?

Accept:浏览器可接受的MIME类型;

Accept-Charset:浏览器可接受的字符集;

Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip。Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍的下载时间;

Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到;

Authorization:授权信息,通常出现在对服务器发送的WWW-Authenticate头的应答中;

Connection:表示是否需要持久连接。如果Servlet看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间。要实现这一点,Servlet需要在应答中发送一个Content-Length头,最简单的实现方法是:先把内容写入ByteArrayOutputStream,然后在正式写出内容之前计算它的大小;

Content-Length:表示请求消息正文的长度;

Cookie:这是最重要的请求头信息之一;

From:请求发送者的email地址,由一些特殊的Web客户程序使用,浏览器不会用到它;

Host:初始URL中的主机和端口;

If-Modified-Since:只有当所请求的内容在指定的日期之后又经过修改才返回它,否则返回304“Not Modified”应答;

Pragma:指定“no-cache”值表示服务器必须返回一个刷新后的文档,即使它是代理服务器而且已经有了页面的本地拷贝;

Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。

User-Agent:浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用;

UA-Pixels,UA-Color,UA-OS,UA-CPU:由某些版本的IE浏览器所发送的非标准的请求头,表示屏幕大小、颜色深度、操作系统和CPU类型。

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

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

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

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

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

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

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

题12:http-协议中常用的请求方法有哪些

题13:什么是物理层

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

题15:为什么-tcp-握手三次挥手四次

题16:http1.1-和-http2.0-有什么区别

题17:socket-是全双工通信的吗

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

题19:socket-属于网络的哪一层

题20:网络传输协议本质和作用是什么

题21:什么情况下需要序列化为什么-rpc-参数需要序列化参数中日期类型用-sql.date-还是-util.date

题22:http1.0-和-http1.1-有什么区别

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

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

题25:socket-如何唯一标识一个进程

大厂面试题

大厂面试题

大厂面试题

Java
1
https://gitee.com/huo-yuelong/ebooks.git
git@gitee.com:huo-yuelong/ebooks.git
huo-yuelong
ebooks
Ebooks
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891