1 Star 0 Fork 31

霍月龙 / Ebooks

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

面试必问的网络编程面试题汇总附答案

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

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

网络编程

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

1、如果子类实现Serializable接口而父类未实现时,父类不会被序列化,但此时父类必须有个无参构造方法,否则会抛InvalidClassException异常。

2、静态变量不会被序列化,串行化保存的是对象状态,即非静态属性或实例变量,不能保存类变量。

3、transient关键字修饰变量可以限制序列化。对于不需要或不应该保存的属性,应加上transient修饰符。要串行化的对象的类必须是公开的(public)。

4、虚拟机是否允许反序列化,不仅取决于类路径和功能代码是否一致,一个非常重要的一点是两个类的序列化 ID是否一致,就是 private static final long serialVersionUID = 1L。

5、Java序列化机制为了节省磁盘空间,具有特定的存储规则,当写入文件的为同一对象时,并不会再将对象的内容进行存储,而只是再次存储一份引用。反序列化时,恢复引用关系。

6、序列化到同一个文件时,在第二次修改相同对象属性值再次保存时,虚拟机根据引用关系知道已经有一个相同对象已经写入文件,因此只保存第二次写的引用,所以读取时都是第一次保存的对象。

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

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

题3:HTTPS 工作原理是什么?

1、首先HTTP请求服务端生成证书,客户端对证书的有效期、合法性、域名是否与请求的域名一致、证书的公钥(RSA加密)等进行校验;

2、客户端如果校验通过后,就根据证书的公钥的有效, 生成随机数,随机数使用公钥进行加密(RSA加密);

3、消息体产生的后,对它的摘要进行MD5(或者SHA1)算法加密,此时就得到了RSA签名;

4、发送给服务端,此时只有服务端(RSA私钥)能解密。

5、解密得到的随机数,再用AES加密,作为密钥(此时的密钥只有客户端和服务端知道)。

题4: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)表示服务器上的某个资源被永久性的删除。

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

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

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

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

题6:什么是 Socket?

socket是应用层与传输层的一个抽象,将复杂的TCP/IP协议隐藏在Socket接口之后,只对应用层暴露简单的接口。

socket是一种特殊的文件,它也有文件描述符,进程可以打开一个socket,并且像处理文件一样对它进行read()和write()操作,而不必关心数据是怎么在网络上传输的。

socket是一个tcp连接的两端。

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

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

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

下面是常见的HTTP状态码:

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

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

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

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

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

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

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

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

题8:同步、异步、阻塞、非阻塞概念是什么?

同步是指函数调用在没得到结果之前,没有调用结果,不返回任何结果。

异步是指函数调用在没得到结果之前,没有调用结果,返回状态信息。

阻塞是指函数调用在没得到结果之前,当前线程挂起。得到结果后才返回。

非阻塞是指函数调用在没得到结果之前,当前线程不会挂起,立即返回结果。

题9:TCP 和 UDP 协议有什么区别?

1)基于连接

TCP是面向连接的协议,而UDP是无连接的协议。即TCP面向连接;UDP是无连接的,即发送数据之前不需要建立连接。

2)可靠性和有序性

TCP 提供交付保证(Tcp通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输),无差错,不丢失,不重复,且按序到达,也保证了消息的有序性。该消息将以从服务器端发出的同样的顺序发送到客户端,尽管这些消息到网络的另一端时可能是无序的。TCP协议将会为你排好序。

UDP不提供任何有序性或序列性的保证。UDP尽最大努力交付,数据包将以任何可能的顺序到达。

TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道。

3)实时性

UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。

4)协议首部大小

TCP首部开销20字节;UDP的首部开销小,只有8个字节。

5)运行速度

TCP速度比较慢,而UDP速度比较快,因为TCP必须创建连接,以保证消息的可靠交付和有序性,毕竟TCP协议比UDP复杂。

6)拥塞机制

UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低,对实时应用很有用,如IP电话,实时视频会议等。

7)流模式(TCP)与数据报模式(UDP) TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的 。

8)资源占用

TCP对系统资源要求较多,UDP对系统资源要求较少。

TCP被认为是重量级的协议,而与之相比,UDP协议则是一个轻量级的协议。因为UDP传输的信息中不承担任何间接创造连接,保证交货或秩序的的信息。这也反映在用于承载元数据的头的大小。

9)应用

每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信 。基于UDP不需要建立连接,所以且适合多播的环境,UDP是大量使用在游戏和娱乐场所。

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

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

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

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

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

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

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

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

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

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

题18:什么是物理层

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

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

题21:什么是数据链路层

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

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

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

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

大厂面试题

大厂面试题

大厂面试题

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