Skip to content

中级面试题

计算机网络-HTTP 常见的响应状态码

面试题目

计算机网络-HTTP常见的响应状态码

公司

某金融公司

招聘类型

社招

题目解析

HTTP 状态码(HTTP Status Code)是用以表示网页服务器超文本传输协议响应状态的 3 位数字代码。

所有状态码的第一个数字代表了响应的五种状态之一。后面两个数字代表了具体的状态。

HTTP 状态码一共分 5 种类型 1XX2XX3XX4XX5XX

1XX:临时响应

表示临时响应并需要请求者继续执行操作的状态代码。一般是告诉客户端,请求已经收到了,正在处理中。

因为是临时响应,所以只包含状态行和某些可选响应头信息,并以空行结束。

平常遇到这种响应状态码的时候很少。除非在某些试验条件下,服务器不可以向此类客户端发送 1XX 响应。

状态码 英文描述 中文描述
100 Continue 继续。初始的请求已经接受,客户应当继续发送请求的其余部分
101 Switching Protocols 切换协议。服务器根据客户端的请求切换协议,只能切换到更高级新版协议

2XX:成功

表示服务器成功处理了请求的状态代码,代表请求已成功被服务器接收、理解、并处理。

状态码 英文描述 中文描述
200 OK 请求成功。找到了该资源,并且一切正常,服务器已成功处理了请求
201 Created 已创建。成功请求并创建了新的资源
202 Accepted 已经接受请求,但处理尚未完成
203 Non-Authoritative Information 非授权信息。请求成功
204 No Content 无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档

3XX:重定向

表示要完成请求,需要进一步操作。需要让客户端再发起一个请求以完成整个处理

状态码 英文描述 中文描述
300 Multiple Choices 多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表,供客户端选择
301 Moved Permanently 永久移动。请求的资源已被永久的移动到新 URI,返回信息会包括新的 URI。浏览器会自动定向到新 URI。今后任何新的请求都应使用新的 URI 代替
302 Found 临时移动。与 301 类似。但资源只是临时被移动。客户端应继续使用原有 URI
303 See Other 查看其它地址。与 301 类似。使用 GET 和 POST 请求查看
304 Not Modified 未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回,在指定日期之后修改的资源
305 Use Proxy 使用代理。所请求的资源必须通过代理访问

4XX:请求错误

表示请求可能出错,责任在客户端。比如如客户端的请求一个不存在的资源,客户端未被授权,禁止访问等,妨碍了服务器的处理。

状态码 英文描述 中文描述
400 Bad Request 客户端请求的语法错误,服务器无法理解
401 Unauthorized 请求要求用户的身份认证
403 Forbidden 服务器理解请求客户端的请求,但是拒绝执行此请求
404 Not Found 服务器无法根据客户端的请求找到资源
405 Method Not Allowed 客户端请求中的方法被禁止
406 Not Acceptable 服务器无法根据客户端请求的内容特性完成请求
407 Proxy Authentication Required 请求要求代理的身份认证,与 401 类似,但请求者应当使用代理进行授权
408 Request Time-out 服务器等待客户端发送的请求时间过长,超时
409 Conflict 服务器完成客户端 PUT 请求返回此代码服务器处理请求时发生了冲突
410 Gone 客户端请求的资源已经不存在。资源以前有现在被永久删除
411 Length Required 服务器无法处理客户端发送的不带 Content-Length的 请求信息
413 Request Entity Too Large 由于请求的实体过大,服务器无法处理,因此拒绝请求
414 Request-URI Too Large 请求的 URI过 长,服务器无法处理
415 Unsupported Media Type 服务器无法处理请求附带的媒体格式

5XX:服务器错误

服务器在尝试处理请求时发生内部错误,责任在服务端。比如服务端抛出异常,路由出错,HTTP 版本不支持等

状态码 英文描述 中文描述
500 Internal Server Error 服务器内部错误,无法完成请求
501 Not Implemented 服务器不支持请求的功能,无法完成请求
502 Bad Gateway 充当网关或代理的服务器,从远端服务器接收到了一个无效的请求
503 Service Unavailable 服务不可用。由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中
504 Gateway Time-out 充当网关或代理的服务器,未及时从远端服务器获取请求
505 HTTP Version not supported 服务器不支持请求的 HTTP 协议的版本,无法完成处理

答案

常见的HTTP响应状态码包括:

  • 200 OK:请求成功。
  • 201 Created:资源创建成功。
  • 204 No Content:请求成功,无返回内容。
  • 400 Bad Request:请求无效或格式错误。
  • 401 Unauthorized:未授权或身份验证失败。
  • 403 Forbidden:禁止访问。
  • 404 Not Found:资源未找到。
  • 500 Internal Server Error:服务器内部错误。
  • 502 Bad Gateway:网关错误。
  • 503 Service Unavailable:服务不可用。

HTTP 与 HTTPS 的区别

面试题目

计算机网络 - HTTP 与 HTTPS 的区别

公司

某金融公司

招聘类型

社招

题目解析

HTTP 与 HTTPS 的区别有下面几个方面:

  • HTTPS 比 HTTP 更安全

    • HTTP 是超文本传输协议,连接简单无状态,信息明文传输
    • HTTPS 通过 SSL/TLS 提供安全方式
  • HTTP 和 HTTPS 使用完全不同的连接方式

  • HTTP 和 HTTPS 用的端口也不一样

    • HTTP 是 80 端口
    • HTTPS 是 443 端口
  • HTTPS 协议需要到 CA 申请证书,使用混合加密的方式,也就是结合非对称加密和对称加密技术。

答案

HTTP(超文本传输协议)是明文传输协议,数据在传输过程中未加密,存在安全风险。HTTPS(安全超文本传输协议)在 HTTP 的基础上添加了 SSL/TLS 加密层,确保数据传输的安全性和隐私性,防止数据被窃取或篡改。HTTPS 使用证书进行身份验证,建立安全的加密连接。

TCP 和 UDP 协议有什么区别

面试题目

TCP 和 UDP 协议有什么区别?

公司

某金融公司

招聘类型

社招

题目解析

TCP 和 UDP 是两种不同的传输层协议,各有特点和适用场景。

TCP 传输控制协议:

  • 面向连接;
  • 一对一可靠性传输;
  • 面向字节流是数据报处理的最小单位;
  • 首部消耗 20 字节;
  • 效率低,不具备实时性

UDP 用户数据报协议:

  • 面向无连接;
  • 支持一对多,多对一,一对一,多对多,不可靠传输,仅保证全部传输过去,面向报文不可分割是数据报处理的最小单位;
  • 首部消耗 8 字节;
  • 具有实时性;
  • UDP 适合一次性传输较小数据的网络应用,如 DNS,SNMP 等。

答案

  • TCP(传输控制协议)是面向连接的,提供可靠的数据传输,确保数据包按顺序到达且无丢失,适用于需要高可靠性的应用(如网页浏览)。
  • UDP(用户数据报协议)是无连接的,传输速度快但不保证数据的顺序和完整性,适用于对速度要求高、容忍丢包的应用(如视频流)。

接口关联传参

面试题目

接口如果有关联如何传参?

公司

  • 小米外包

招聘类型

社招

题目解析

在接口测试过程中,经常会有接口存在关联的情况,下一个接口依赖上一个接口的返回值信息。所以这道题首先要讲出来是使用什么工具去做接口测试的,然后再讲出来针对于这个接口关联的场景,需要用到这个工具的什么功能。

答案

  • 使用 postman 做接口测试的时候,会通过后置处理,获取到接口的响应值信息,然后再 set 到变量中,给下一个接口去进行使用。
  • 使用 Python+Requests 的话,就是获取接口返回值之后,然后赋值给一个变量,然后后面的接口可以直接调用这个变量。

如果定位接口异常原因

面试题目

如果定位接口异常原因

公司

某金融公司

招聘类型

社招

题目解析

定位接口异常原因需要系统化地分析问题,以确定根本原因。

答案

要分析接口异常的原因,可以遵循以下步骤:

  • 查看日志:如果接口使用了日志系统,可以查看日志文件以了解接口在运行时的详细情况,包括请求参数、返回结果、异常堆栈信息等。
  • 抓包分析:使用抓包工具可以捕获网络流量,包括请求和响应的数据包,然后对这些数据进行分析,确保发送的请求数据格式和内容正确。
  • 检查依赖服务:确认外部依赖服务是否正常。
  • 网络问题排查:检查网络连接是否稳定。
  • 分析代码:检查对应代码中可能出现异常情况。

正向代理与反向代理的区别

面试题目

Nginx 中正向代理与反向代理的区别

公司

某金融公司

招聘类型

社招

题目解析

在了解之前,先思考一下这几个问题:

  • 客户端(手机、网页)展示的数据从哪里来?
  • 什么是代理?
  • 正向代理和反向代理有什么区别?

代理

大家在刷手机的过程中,一定会注意到,如果把 wifi 或者流量的开关关闭,那么手机里面的短视频、朋友圈、消息都没有办法再去获取新的内容了。

这个原因就是因为手机的数据,并非来自手机本身,而是来自一个给它传输数据的地方,我们常常称之为,服务端。

好比人和人之间对话,如果双方使用不同的语言,那么是很难理解对方讲话的内容的。

在客户端和服务端也是同理,他们需要使用标准的协议来进行通信。

而代理,如果想一个生活化的比喻,就像媒人一样,在男女双方未见面之前,会把男方的信息转达给女方,也会把女方的信息知会给男方了解。

一般则是网络信息的一个中转站,它会把客户端的信息转发给服务端,也会把服务端的返回信息抓发给客户端。

正向代理与反向代理

正向代理

在学生时代,有一个喜欢的人,这是我们的目标,我们会找一个别的同学,他作为我们的代理,然后我们把礼物让这位同学转交给我们喜欢的人。

而我们喜欢的这个人,他只能收到礼物,但是不知道到底是谁送他的。

那什么是正向代理?正向代理有如下几个特点:

  • 客户端向代理发送一个请求并指定目标(原始服务器)
  • 代理向原始服务器转交请求并将获得的内容返回给客户端
  • 服务器端只知道代理地址不知道客户端 ip 地址
  • 客户端知道服务端地址,而代理不知道

应用场景

  • VPN
  • fiddler
反向代理

到了长大成人之后,没有找到合适对象的我们,又到了一个适婚年龄。渴望爱情、渴望婚姻的我打开一个相亲网站,将我的身份信息,发送给中间的媒人,媒人根据我们提供的条件,帮我们找合适的相亲对象。相亲对象再根据我们的信息选择是否与我们进行下一步约会,在这之前,我并不知道,媒人给我介绍的男生究竟是谁。

那什么又是反向代理呢?反向代理的特点是:

  • 客户端向代理发送一个请求,但不指定(服务器)目标地址
  • 代理向原始服务器转交请求并将获得的内容返回给客户端
  • 客户端只知道代理地址,但不知道服务端地址
  • 代理需要知道服务端地址

应用场景

  • nginx
总结

由这两个图可知,正向代理和反向代理核心的区别就在于

  • 客户端发送请求的时候是否知道服务端的地址
  • 代理是否指定服务端地址

从应用场景考虑:

  • 正向代理:
  • VPN
  • 反向代理:
  • 保护和隐藏原始资源服务器
  • 加密和 SSL 加速
  • 负载均衡
  • 缓存静态内容
  • 压缩
  • 减速上传
  • 安全
  • 外网发布

答案

  • 正向代理:客户端通过正向代理访问互联网,代理服务器代表客户端发起请求,适用于绕过网络限制和隐藏客户端身份。
  • 反向代理:客户端向反向代理服务器发起请求,反向代理代表服务器处理请求并返回结果,通常用于负载均衡、缓存和提高安全性。

正向代理是客户端的代理,反向代理是服务器的代理。

charles 如何抓取 https 的请求

面试题目

Charles 如何抓取 https 的请求?

公司

  • metaapp

招聘类型

社招

题目解析

抓取 HTTPS 请求需要处理加密的 SSL/TLS 流量。

答案

  • 安装 Charles 根证书:在 Charles 中打开“Help”菜单,选择“SSL Proxying”并安装根证书。
  • 配置代理:在“SSL Proxying”设置中,添加要抓取的域名或 URL。
  • 配置浏览器/应用:确保浏览器或应用的代理设置为 Charles 的代理地址和端口。这样,Charles 能解密并显示 HTTPS 请求。

tcp 三次握手四次挥手

面试题目

TCP 三次握手四次挥手

公司

某社交软件公司

招聘类型

社招

题目解析

概念

三次握手

在说对应概念之前,我们先来了解一个场景:

场景

无论是工作还是没有工作的小伙伴,肯定都见过或经历过表白事件。那如果想要进行一次表白或者求婚,我们需要怎么做?

无论是表白、求婚都需要有对应的人,当然不只能有这个人,还需要和这个人建立一个连接。

不能说你自己把自己关在屋子里面自言自语的说,你能嫁给我吗?对方都没有听到你说的话,怎么会做出反应呢?

所以,最好是两个人面对面,才可以让对方听到到自己要说的话。约出来,面对面,就开始进行表白:

当然这种关系都是双方是能面对面找到对方的,即都是保持双方畅通的。

对应为 TCP 协议的三次握手如下图:

第一次握手

Client 请求与 Server 端建立连接。

这里只是尝试的请求建立连接,A到B的连接是否建立成功不知道

第二次握手

Server 在收到 Client 的请求后,响应 ACK 报文 并分配资源。

这里 B 给 A 的 ACK报文 就表示 Server 同意 Client 跟它建立连接。

SYN 表示 Server 也想尝试 Client 建立连接,此时 Server 到 Client 的连接是否建立还不确定。

第三次握手

Client 给 Server 发送 ACK 响应。在 Server 收到 Client 的响应之后,此时双方的连接正式建立。

四次挥手

在说对应挥手概念之前,我们先来了解一个场景:

场景

还是和上面场景有关,结婚了然后在一起共同生活了一段时间后,发现双方不合适,需要离婚,要离开对方,就是挥手告别。那这个时候要经历的场景是什么呢?

对应为 TCP 协议的四次挥手如下图:

第一次挥手

客户端发送 FIN 给服务端,尝试请求断开单方的连接。

此时单方连接断开与否还不能确定,要等服务端确认,此时的客户端处于 FIN_WAIT1 状态。

第二次挥手

服务端收到断开请求后,服务端向客户端发送 ACK 回应,表示能断开了。

此时只是客户端到服务端连接断开,处于半断开状态。

服务端状态为:CLOSE_WAIT

第三次挥手

服务端给客户端发送 FIN 请求,此时服务端处于最后一次确认状态(LAST_ACK状态)。

此时还是没有断开连接,还得等待客户端回应。

第四次挥手

客户端给服务端发送 ACK 回应。服务端收到之后,此时连接真正断开。

疑问点

1、为什么不是两次握手?为什么要三次?

因为真正连接的建立是要双方都建立到对方的连接。

如果只有两次握手,只能保证 A 到 B 的连接建立,但是 B 到 A 连接还未确认,所以第三次握手的主要作用就是 A 给 B 发送数据,如果没有第三次握手,A 就不会发送数据,此时 B 的状态一直为等待,造成的现象就是浪费资源。

2、为什么要进行四次挥手?为什么三次不行?

因为在挥手过程中会传递相关数据。其中,ACK 报文是用来的应答的,SYN 报文是用来同步的。

在 B 收到 A 的 FIN 请求后,不会立即关闭 SOCKET,会先发送一个 ACK 作为回应。所以 A 需要等 B 的数据发送完成之后,B 会再给 A 发送一个 FIN 请求告诉 A 已经结束了,此时 B 发送给 A 的两次请求不能合并,所以必须是四次挥手。

答案

三次握手(建立连接):

  1. 客户端发送 SYN 包请求连接。
  2. 服务器响应 SYN-ACK 包确认。
  3. 客户端发送 ACK 包确认,连接建立。

四次挥手(断开连接):

  1. 客户端发送 FIN 包请求断开。
  2. 服务器回应 ACK 包确认。
  3. 服务器发送 FIN 包关闭连接。
  4. 客户端回应 ACK 包确认,连接断开。