虾皮第一面,希望能进二面!(第一次发帖,妈咪妈咪哄!)

作者:许愿offer呀!
链接:https://www.nowcoder.com/discuss/455369
来源:牛客网

8.14 收到虾皮意向书

——————————————————————
二面结束啦!希望能进hr面!!很想进shopee啊!
面了关于计算机网络和java并发的知识。感觉我跨专业简历太苍白,面试官都不太好问
(哭)
面试官是个比较爱笑的师兄。
—————————————————————

收到二面通知啦!

—————————————————————

整理的题目奥
网络
1.https知道吗(只知道是加密传输)

HTTPS是一种安全地HTTP协议,端口号为443,是先用HTTP协议与SSL交互,然后通过SSL在TCP/IP基础上进行服务。 相对于HTTP,HTTPS添加了数据加密、端口认证、数据完整性保障的功能。
2.TCP timewait

三次握手:

首先服务器端处于LISTEN状态。
当客户端想要建立连接时,他将发送一个SYN包,序列号假如为u。客户端进入SYN_SENT状态。
当服务器端收到了这个SYN包,如果服务器同意建立连接,他将发送一个SYN,ACK包,序列号假如为v,确认号为u+1。服务器端进入SYN_RECD状态。
当客户端收到了服务器端的SYN,ACK包,它将再次确认,向服务器发送一个ACK包,序列号为u+1,确认号为v+1。此时客户端进入ESTABLISHED状态。
当服务器端收到了客户端的ACK包,也将进入ESTABLISHED状态。

四次挥手:

当客户端想要断开连接时,发送一个FIN数据包,序列号为u,确认号为v,客户端进入FIN_WAIT1状态。
当服务器端收到这个FIN包,他知道了客户端想要断开连接,它会发送一个ACK包对它进行确认,序列号为v,确认号为u+1。此时服务器进入CLOSE_WAIT状态。
当客户端收到了服务器端发送的ACK确认包,他知道了服务器了解了自己想要断开连接。此时客户端进入FIN_WAIT2状态。
当服务器端的数据都发送结束了,它将断开服务器端到客户端的连接,它向客户端发送一个FIN包,序列号假设为w,确认号依旧为u+1。此时服务器端进入LAST_ACK阶段。
当客户端收到了服务器端的FIN包,他知道了服务器也要断开连接,它向服务器发送一个ACK确认包,序列号为u+1,确认号为w+1,然后进入TIME_WAIT阶段等待2倍MSL,在这个期间如果没有继续收到服务器端的FIN包,就进入了CLOSED阶段。
服务器端收到客户端的ACK确认包,进入CLOSED阶段。

5.http 长连接 短连接

http长连接指的是使用完一次http服务之后连接不断开,可以继续下一次服务使用。
短连接指的是每请求完一个资源,就断开连接,想要再次请求,就得再建立连接。

6.tcp 3次握手、4次挥手,为啥不能2次

为什么不能两次挥手呢?

两个方面:

防止网络中失效的连接请求到达服务器端,如果只有两次握手,服务器端将建立连接,是资源浪费。举个例子,客户端发送了一个连接请求,但是这个请求在网络中阻塞了,超过重传时间后客户端又再次发送连接请求包,建立连接,完成服务,断开连接。然后之前滞留的包又到达了服务器端,如果两次握手,连接就建立了。并且客户端不会请求关闭,资源浪费。
通过三次握手,让客户端和服务器端都知道了自己的发送和接收没问题。第一次握手,暂时没有什么,第二次握手,让服务器端知道了自己的接收没问题,第三次握手,让客户端知道了自己的发送和接收均无问题,当服务器端收到了客户端的最后一次确认,它也将知道自己的接收没有问题。

4.timewait.

如果在两倍的MSL时间内,没有收到服务器端再次发送FIN包,就可以确认服务器端收到了最后一次确认,进入CLOSED状态。
使此次连接中可能在网络中滞留的包都失效。

5.TCP连接如何保证数据有效性

对数据编号、确认,超时重传。
6.TCP与UDP的区别

它们都是传输层协议。

TCP是面向连接的,发送数据前先要建立连接,UDP是面向无连接的,发送数据前不需要建立连接。
TCP面向字节流的,UDP是面向报文的。
TCP是可靠的,TCP可以保证数据无差错,不重复,不丢失,按需到达。UDP是不可靠的,它只能尽最大努力交付。
TCP是点到点通信,UDP支持一对一,一对多,多对一,多对多。
TCP首部开销大,20个字节。UDP首部开销小,8个字节。

7.TCP的优点与缺点

优点:可靠,稳定 缺点:传输数据之前先要建立连接。慢,效率低且占用资源多。
8.TCP的可靠性是通过什么来保证的?

对字节编号,确认,超时重传,差错检测,流量控制和拥塞控制
9.解释一下确定重传机制,讲讲窗口滑动

TCP对字节编号,当发送方在重传时间内没有收到期望的确认包,它就认为自己之前发送的包在网络中丢失,就会进行重传。

为了进行流量控制,在发送方和接收方都都保持一个窗口,窗口左边是已经发送且已经确认的数据。窗口右边是还未发送的数据。窗口里分为两个部分,左边是已发送未确认的部分,右边是此窗口状态下还可以发送的数据。
10.ISO七层结构,网络层和传输层的底层实现

ISO七层模型:

物理层处于OSI参考模型的最低层。物理层的主要功能是利用物理传输介质为数据链路层提供物理连接,以透明地传送比特流。
数据链路层在物理层提供比特流传输服务的基础上,在通信实体之间建立数据链路连接,传送以帧为单位的数据,通过差错控制、流量控制方法,变有差错的物理线路为无差错的数据链路。
网络层主要任务是通过执行路由选择算法,为报文分组通过通信子网选择最适当的路径。它是OSI参考模型七层中最复杂的一层。
传输层是向用户提供可靠的端到端服务,透明地传送报文 。
会话层的主要目的是组织同步的两个会话用户之间的对话,并管理数据的交换。
表示层主要用于处理两个通信系统间信息交换的表示方式,它包括数据格式变换、数据加密与解密、数据压缩与恢复等功能。
应用层是OSI参考模型的最高层。应用层不仅要提供应用进程所需要信息交换和远程操作,而且还要作为应用进程的用户代理,完成一些为进行语义上有意义的信息交换所必须的功能。综上所述可知,ISO/OSI开放系统互连七层参考模型***能最复杂的一层是网络层。

网络层和传输层底层实现:

TCP/IP UDP/IP?

11.TCP和UDP在程序设计的时候应该注意的点?

TCP适用于对网络通讯质量要求高的场景,比如文件传输。
UDP适用于对网络通讯质量要求不高,要求网络通讯速度尽可能快的场景。比如QQ语音,QQ视频。

12.TCP传输的报文基于底层什么机制?

为了实现TCP的可靠传输,使用校验和、序列号、确认机制、超时重传、流量控制、拥塞控制。

13.https的安全协议,如何识别新建第三方的电子证书

是一种通过计算机网络进行安全通信的传输协议。HTTPS经由HTTP进行通信,但利用SSL/TLS来加密数据包。是一种通过计算机网络进行安全通信的传输协议。HTTPS经由HTTP进行通信,但利用TLS来加密数据包。

14.计算机网络,一定三次握手吗?

是的,必须三次握手,两次握手可能会使网络中滞留的连接请求到达服务器端直接建立连接,浪费服务器资源。
15.tcp的可靠性

校验码、序列号、确认、超时重传、流量控制、拥塞控制等机制来保证可靠传输。
16.session和cookie

session:

Session是服务器的会话技术,是存储在服务器的。

cookie:

Cookie相当于服务器给浏览器的一个通行证,是一个唯一识别码,服务器发送的响应报文包含 Set-Cookie 首部字段,客户端得到响应报文后把 Cookie 内容保存到浏览器中。客户端之后对同一个服务器发送请求时,会从浏览器中取出 Cookie 信息并通过 Cookie 请求首部字段发送给服务器,服务器就可以识别是否是同一个客户。

区别:

Cookie只能存储ASCII 码字符串,而 Session 则可以存储任何类型的数据,因此在考虑数据复杂性时首选Session。
Cookie 存储在浏览器中,容易被恶意查看。如果非要将一些隐私数据存在 Cookie 中,可以将 Cookie 值进行加密,然后在服务器进行解密。
对于大型网站,如果用户所有的信息都存储在 Session 中,那么开销是非常大的,因此不建议将所有的用户信息都存储到 Session 中。

17.session放本地的方法

将seesion数据加密,然后存储在cookie中。
18.拥塞控制是什么

拥塞:有时候网络中负载过大,发送的数据可能会网络中长时间滞留。就像堵车一样。

拥塞控制:通过慢开始、拥塞避免、快重传、快恢复来拥塞控制。

慢开始:刚开始时,拥塞窗口为1,发送一个数据单元,经过一个RTT,拥塞窗口翻倍变成2,第二次发送两个数据单元,再经过一次RTT,拥塞窗口变成4,这样直到拥塞窗口达到拥塞窗口门限值。
当拥塞窗口等于门限值时,可以用拥塞避免,也可以用慢开始。
当拥塞窗口大于门限值时,启用拥塞避免,每经过一个RTT,拥塞窗口不再翻倍,而是加一,当拥塞发生时,门限值变成此时拥塞窗口的一半,拥塞窗口置为1,重新采用慢开始策略。
快重传,接收端不使用累计确认,当发送端连续收到同样的三个确认包,则直接传送此包,不需要等待超时重传。
快恢复:当发生快重传时,门限值和拥塞窗口都变成此时拥塞窗口的一半,并且采用拥塞避免。

19.三次握手

首先服务器端处于LISTEN状态;
当客户端想要建立连接时,发送一个SYN数据报,序列号为u,此时客户端的处于SYN-SENT状态;
当服务器端收到这个确认包并且同意建议连接时,向客户端发送一个SYN,ACK包,序列号为v,确认号为u+1,此时服务器端进入SYN-RECV状态。
当客户端收到了服务器端的SYN,ACK包,则再次对之确认,向服务器发送一个ACK包,进入ESTABLISHED状态。
当服务器端收到了客户端的ACK包,也进入ESTABLISHED状态。

20.HTTP 状态码有哪些

1XX:信息性状态码
2XX:成功状态码
3XX:重定向状态码
4XX:客户端错误状态码
5XX:服务器错误状态码

100 Continue:表示到目前为止都很正常,客户端可以继续发送请求或者忽略这个响应。
200 OK
204 No Content:请求已经成功处理,但是返回的响应报文不包含实体的主体部分。一半只需要从客户端往服务器端发送信息,而不需要返回数据时使用。
206 Partial Content:表示客户端进行了范围请求,响应报文包含由Content-Range指定范围的实体内容。
301 Moved Permanently:永久性重定向
302 Found:临时性重定向
303 See Other:和302有着相同的功能,但是303明确要求客户端应该采用GET方法获取资源。
304:Not Modified:如果请求报文首部包含一些条件,例如:If-Modified-Since,如果不满足条件,则服务器会返回304状态码。
307 Temporary Redirect:临时性重定向,与302的含义类似,但是307要求浏览器不会把重定向请求的POST方法改成GET方法。
400 Bad Request:请求报文中存在语法错误。
401 Unauthorized:状态码表示发送的请求需要有认证信息,如果之前已经进行过一次请求,则表示用户验证失败。
403 Forbidden:请求被拒绝。
404 Not Found:未发现资源
405 Method Not Allowed:方法不允许。
500 Internal Server Error:服务器正在执行请求时发生错误。
503:Server Unavailable:服务器暂时处于超负载或者正在进行停机维护,现在无法处理请求。

21.GET POST 区别 他们系统里有些 GET 请求 用了 POST,这样设计是为什么(想不出来)?

区别:

GET主要用于向服务器获取资源,POST主要用于提交数据。
GET和POST的请求都能使用额外的参数,但是GET的参数是以查询字符串出现在URL中,而POST参数存储在实体主体中,不能因为POST参数存储在实体主体中就认为它的安全性更高,因为可以使用一些抓包工具(Fiddler)查看。
GET方法不会改变服务器状态是安全的,POST不是安全地。
如果要对响应进行缓存,需要满足请求报文的方法本身是可缓存的,PUT可以缓存,POST多数情况下不可缓存。

22.TCP,udp区别

TCP是面向连接的,通讯之前要三次握手要建立连接。UDP是无连接的。
TCP是面向字节流的,UDP是面向报文的。
TCP是可靠的,它可以保证数据无差错、不重复、不丢失、按需达到接收端。UDP是不可靠的,它提供的是尽最大努力交付。
TCP是点对点的,UDP是可以一对一,一对多,多对一,多对多。
TCP首部开销大,有20个字节,UDP首部开销小,8个字节。

23.URL输入后,整套流程浏览器中,打开一个网页到页面出现的全过程?

先检查输入的URL是否合法,然后查询浏览器的缓存,如果有则直接显示。
通过DNS域名解析服务解析IP地址,先从浏览器缓存查询、然后是操作系统和hosts文件的缓存,如果没有查询本地服务器的缓存。
通过TCP的三次握手机制建立连接,建立连接后向服务器发送HTTP请求,请求数据包。
服务器收到浏览器的请求后,进行处理并响应。
浏览器收到服务器数据后,如果可以就存入缓存。
浏览器发送请求内嵌在HTML中的资源。
浏览器渲染页面并呈现给用户。

24.http无状态

协议对交互场景没有记忆能力。浏览器对服务器完成一次资源请求后,再次对服务器进行资源请求,服务器不会记得之前的行为。
25.下载一个超大文件为什么网速会越来越快,解释背后的技术

拥塞窗口机制:慢开始。
26.三次握手,四次挥手

三次握手:

LISTEN
SYN,u, SYN-SENT
SYN,ACK,v,u+1,SYN-RECV
ACK,u+1,v+1,ESTABLISHED
ESTABLISHED

四次挥手:

FIN,u,FIN_WAIT_1
ACK,v,u+1,CLO
  • 2
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值