Java学习手册:Java网络编程面试问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/MaybeForever/article/details/95471329

1、Java学习手册:Java基础知识点
2、Java学习手册:Java面向对象面试问题
3、Java学习手册:Java集合、泛型面试问题
4、Java学习手册:Java并发与多线程面试问题
5、Java学习手册:Java虚拟机面试问题
6、Java学习手册:Java IO面试问题
7、Java学习手册:Java反射机制面试问题
8、Java学习手册:Java网络编程面试问题
9、Java学习手册:Java异常面试问题
10、Java学习手册:Java设计模式面试问题
11、Java学习手册:Java数据库面试问题

一、TCP与UDP的区别

Java学习手册:TCP与UDP

注:TCP和UDP对应的各种应用层协议
在这里插入图片描述

二、Java Socket

Java学习手册:Java Socket

三、Java NIO

Java学习手册:Java NIO

四、XML

Java学习手册:XML

五、HTTP响应的结构是怎么样的?

HTTP响应由三个部分组成:

状态码(Status Code):描述了响应的状态。可以⽤来检查是否成功的完成了请求。请求失败的情况下,状态码可⽤来找出失败的原因。如果Servlet没有返回状态码,默认会返回成功的状态码HttpServletResponse.SC_OK。

HTTP头部(HTTP Header): 它们包含了更多关于响应的信息。⽐如:头部可以指定认为响应过期的过期⽇期,或者是指定⽤来给⽤⼾安全的传输实体内容的编码格式。

主体(Body):它包含了响应的内容。它可以包含HTML代码,图⽚,等等。主体是由传输在HTTP消息中紧跟在头部后⾯的数据字节组成的。

六、什么是cookie?session和cookie有什么区别?

cookie是Web服务器发送给浏览器的⼀块信息。浏览器会在本地⽂件中给每⼀个Web服务器存储cookie。以后浏览器在给特定的Web服务器发请求的时候,同时会发送所有为该服务器存储的cookie。下⾯列出了session和cookie的区别:

  • ⽆论客⼾端浏览器做怎么样的设置,session都应该能正常⼯作。客⼾端可以选择禁⽤cookie,但是,session仍然是能够⼯作的,因为客⼾端⽆法禁⽤服务端的session。
  • 在存储的数据量⽅⾯session和cookies也是不⼀样的。session能够存储任意的Java对象,cookie只能存储String类型的对象。

七、什么是HTTP隧道?

HTTP隧道是⼀种利⽤HTTP或者是HTTPS把多种⽹络协议封装起来进⾏通信的技术。因此,HTTP协议扮演了⼀个打通⽤于通信的⽹络协议的管道的包装器的⻆⾊。把其他协议的请求掩盖成HTTP的请求就是HTTP隧道。

八、sendRedirect()和forward()⽅法有什么区别?

sendRedirect()⽅法会创建⼀个新的请求,⽽forward()⽅法只是把请求转发到⼀个新的⽬标上。重定向(redirect)以后,之前请求作⽤域范围以内的对象就失效了,因为会产⽣⼀个新的请求,⽽转发(forwarding)以后,之前请求作⽤域范围以内的对象还是能访问的。⼀般认为sendRedirect()⽐forward()要慢。

九、什么是URL编码和URL解码?

URL编码是负责把URL⾥⾯的空格和其他的特殊字符替换成对应的⼗六进制表⽰,反之就是解码。

十、Http的Get和Post的区别

Http是应用层的协议,底层基于TCP/IP协议,所以本质上,get和post请求都是TCP请求。所以二者的区别都是体现在应用层上(HTTP的规定和浏览器/服务器的限制):
1、参数的传输方式:GET参数通过URL传递,POST放在Request body中。
2、GET请求在URL中传送的参数是有长度限制的,而POST没有。
3、对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。不过要注意,并不是所有浏览器都会在POST中发送两次包,比如火狐。
4、对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
5、GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
6、GET请求只能进行url编码,而POST支持多种编码方式。
7、GET在浏览器回退时是无害的,而POST会再次提交请求。
8、GET产生的URL地址可以被Bookmark,而POST不可以。
9、GET请求会被浏览器主动cache,而POST不会,除非手动设置。

十一、HTTPS

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。HTTP是应用层协议,位于HTTP协议之下是传输协议TCP。TCP负责传输,HTTP则定义了数据如何进行包装,在HTTP跟TCP中间加多了一层加密层TLS/SSL,SSL是个加密套件,负责对HTTP的数据进行加密。TLS是SSL的升级版。现在提到HTTPS,加密套件基本指的是TLS。

传输加密的流程:http是应用层将数据直接给到TCP进行传输,Https是应用层将数据给到TLS/SSL,将数据加密后,再给到TCP进行传输。

HTTPS加密数据的过程一般来说,分为对称加密、非对称加密。
(1)对称加密
对称加密的意思就是,加密数据用的密钥,跟解密数据用的密钥是一样的。
对称加密的优点在于加密、解密效率通常比较高。缺点在于,数据发送方、数据接收方需要协商、共享同一把密钥,并确保密钥不泄露给其他人。传输过程中容易被截获。
(2)非对称加密
非对称加密的意思就是,加密数据用的密钥(公钥),跟解密数据用的密钥(私钥)是不一样的。

十二、加密算法

1、对称加密算法

(1)Data Encryption Standard(DES)
DES 是一种典型的块加密方法:将固定长度的明文通过一系列复杂的操作变成同样长度的密文,块的长度为64位。同时,DES 使用的密钥来自定义变换过程,因此算法认为只有持有加密所用的密钥的用户才能解密密文。 DES 的密钥表面上是64位的,实际有效密钥长度为56位,其余8位可以用于奇偶校验。
DES 现在已经不被视为一种安全的加密算法,主要原因是它使用的56位密钥过短。
为了提供实用所需的安全性,可以使用 DES 的派生算法 3DES 来进行加密 (虽然3DES 也存在理论上的攻击方法)。

(2)Advanced Encryption Standard(AES)
AES 在密码学中又称 Rijndael 加密法,用来替代原先的 DES,已经被多方分析且广泛使用。

(3)DES与AES的对比
自DES 算法公诸于世以来,学术界围绕它的安全性等方面进行了研究并展开了激烈的争论。在技术上,对DES的批评主要集中在以下几个方面:
1、作为分组密码,DES 的加密单位仅有64 位二进制,这对于数据传输来说太小,因为每个分组仅含8个字符,而且其中某些位还要用于奇偶校验或其他通讯开销。
2、DES 的密钥的位数太短,只有56 比特,而且各次迭代中使用的密钥是递推产生的,这种相关必然降低密码体制的安全性,在现有技术下用穷举法寻找密钥已趋于可行。
3、DES 不能对抗差分和线性密码分析。
4、DES 用户实际使用的密钥长度为56bit,理论上最大加密强度为256。DES 算法要提高加密强度(例如增加密钥长度),则系统开销呈指数增长。除采用提高硬件功能和增加并行处理功能外,从算法本身和软件技术方面都无法提高DES 算法的加密强度。

2、 非对称加密算法

(1)RSA
1977年由 MIT 的 Ron Rivest、Adi Shamir 和 Leonard Adleman 一起提出,以他们三人姓氏开头字母命名,是一种获得广泛使用的非对称加密算法。
对极大整数做因数分解的难度 (The Factoring Problem) 决定了 RSA 算法的可靠性。换言之,对一个极大整数做因数分解愈困难,RSA 算法就愈可靠。假如有人找到一种快速因数分解的算法的话,那么用 RSA 加密的信息的可靠性就肯定会极度下降。目前看来找到这样的算法的可能性非常小。

(2)DES与RSA的比较
RSA算法的密钥很长,具有较好的安全性,但加密的计算量很大,加密速度较慢限制了其应用范围。为减少计算量,在传送信息时,常采用传统加密方法与公开密钥加密方法相结合的方式,即信息采用改进的DES对话密钥加密,然后使用RSA密钥加密对话密钥和信息摘要。对方收到信息后,用不同的密钥解密并可核对信息摘要。
采用DES与RSA相结合的应用,使它们的优缺点正好互补,即DES加密速度快,适合加密较长的报文,可用其加密明文;RSA加密速度慢,安全性好,应用于DES 密钥的加密,可解决DES 密钥分配的问题。
目前这种RSA和DES结合的方法已成为EMAIL保密通信标准。

十三、HTTP与HTTPS的区别

(1)HTTP(超文本传输协议)
HTTP协议不适合传输一些敏感信息,比如:信用卡号,密码等支付信息。

(2)HTTPS(安全套接字层超文本传输协议)
HTTPS在HTTP基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

(3)区别

  • 1、HTTPS协议需要到CA申请证书,一般免费证书较少,因而需要一定费用。
  • 2、HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的SSL加密传输协议。
  • 3、HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
  • 4、HTTP的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP协议安全。

猜你喜欢

转载自blog.csdn.net/MaybeForever/article/details/95471329