「QALog」校招测试八股—计网篇(一)

news2024/11/20 1:40:48

哈喽大家好,我是chowley,QALog创始人,测试开发工程师

这次的测试八股系列专栏由我来主写,给大家带来亿点点硬货,今天是计网系列的第一篇,我总结了市面上主流的测试核心八股,废话少说直接开整!

下面是本期目录:


Q1:介绍一下OSI七层模型、每层的作用

从下往上:

  1. 物理层(Physical Layer):负责在物理媒介上透明的传输原始比特流,确保比特流能够在通信媒介上稳定、可靠地传输,而不对传输的数据进行任何形式的处理,主要关注数据的传输速率、电压等物理特性。

  2. 数据链路层(Data Link Layer):处理节点之间的数据帧传输,确保在通信实体之间可靠地传输数据。
    它有两个特性:
    (1)帧编码的目的是为了确保数据能够正确地在物理媒介上传输,并且接收端能够正确地解码和处理接收到的数据。
    (2)误差纠正控制通过在数据帧中添加冗余信息(如校验位、奇偶校验等)来检测和纠正这些错误,从而提高数据传输的可靠性和准确性。

  3. 网络层(Network Layer):负责数据包的路由和转发,实现不同网络之间的通信,如 IP 协议就在这一层工作。

    路由算法可以分为静态路由和动态路由两种类型:
    (1)静态路由(Static Routing):管理员手动配置路由表,指定每个目标网络的下一跳路由器。这种方式适用于网络拓扑结构稳定的情况,但不适合大型或动态网络。
    (2)动态路由(Dynamic Routing):路由器之间通过路由协议(如RIP、OSPF、BGP等)交换路由信息,根据网络状态动态调整路由表。动态路由能够自适应网络变化,适用于大型复杂网络。

  4. 传输层(Transport Layer):提供端到端的数据传输服务,负责数据的可靠传输和流量控制,如 TCP 协议。

  5. 会话层(Session Layer):负责建立、管理和终止会话,为应用程序之间的通信提供服务。保证了通信的可靠性和有效性,使得不同终端的程序之间能够进行有效的数据交换。

  6. 表示层(Presentation Layer):处理数据的表示格式,确保一个系统的应用层数据可以被另一个系统理解。涉及到编解码、加密解密、压缩解压缩等。

  7. 应用层(Application Layer):为用户提供应用服务,是用户直接接触的网络层,常见的应用有 HTTP、FTP、SMTP 等。

OSI层级按照功能划分,每一层都有特定的任务和责任,层级之间协同工作以实现用户数据的传输和通信。


Q2:讲一下计网中常用的协议有哪些?

我以市面上主流的五层模型来讲解:

  1. 物理层:主要协议有 RS-232、RS-485、Ethernet 等,用于在物理媒介上传输比特流。

  2. 数据链路层:主要协议有以太网(Ethernet)、PPP(Point-to-Point Protocol)、HDLC(High-Level Data Link Control)等,用于在直接相连的节点之间传输数据帧。

  3. 网络层:主要协议有 IP(Internet Protocol)、ICMP(Internet Control Message Protocol)、ARP(Address Resolution Protocol)等,用于在不同网络之间传输数据包,并处理数据包的路由和转发。

  4. 传输层:主要协议有 TCP(Transmission Control Protocol)、UDP(User Datagram Protocol)等,用于在端到端的通信中提供可靠的数据传输服务。

  5. 应用层:主要协议有 HTTP(HyperText Transfer Protocol)、FTP(File Transfer Protocol)、SMTP(Simple Mail Transfer Protocol)等,用于不同应用之间的数据交换和通信。

这些协议在计算机网络中起着至关重要的作用,通过协议规定了数据的传输格式、通信规则和传输方式,保证了网络通信的正常进行。

Q3:TCP/IP模型呢?

TCP/IP 模型是一个将网络通信划分为四个层次的参考模型,与 OSI 模型类似,但具有更简单的结构。它包括以下四层:

  1. 应用层:提供用户应用程序间的通信。包括 HTTP、FTP、SMTP 等协议。

  2. 传输层:负责端到端的通信。包括 TCP 和 UDP 协议。

  3. 网络层:负责将数据包从源主机传输到目的主机。包括 IP、ICMP、ARP 等协议。

  4. 链路层:负责将数据帧从一个节点传输到相邻节点。包括以太网、PPP 等协议。

TCP/IP 模型中的每一层都有特定的功能和责任,协同工作以实现网络通信。与 OSI 模型不同,TCP/IP 模型将会话层、表示层和物理层的功能合并到了应用层和链路层中,使得模型结构更简单、更实用。

Q4:说一下HTTP和HTTPS的区别

HTTP(HyperText Transfer Protocol)和 HTTPS(HTTP Secure)是用于传输数据的两种协议,它们之间的主要区别在于安全性和加密方式:

  1. 安全性:HTTP 是一种不安全的协议,数据传输是明文的,容易被窃听和篡改。而 HTTPS 则通过 SSL/TLS 协议加密数据传输,运行在TCP上,提供了更高的安全性,能够有效防止数据被窃听和篡改。

  2. 加密方式:HTTPS 使用 SSL(Secure Sockets Layer)或 TLS(Transport Layer Security)协议来加密数据传输。SSL/TLS 使用公钥加密和私钥解密的方式,保证数据在传输过程中的机密性和完整性。

  3. 端口号:HTTP 默认使用端口 80 进行通信,而 HTTPS 默认使用端口 443。

  4. URL 形式:HTTP 的 URL 以 "http://" 开头,而 HTTPS 的 URL 以 "https://" 开头。

总的来说,HTTPS 比 HTTP 更安全,适用于对数据传输安全性要求较高的场景,如网上支付、用户登录等。

Q5:介绍一下HTTP状态码

HTTP 状态码是服务器向客户端返回的一个三位数字代码,用于表示服务器对请求的处理结果。常见的 HTTP 状态码有以下几类:

  • 1xx(信息性状态码):表示请求已被接收,继续处理。

  • 2xx(成功状态码):表示请求已成功被服务器接收、理解、并接受。

    • 200 OK:请求成功。常用于 GET 和 POST 请求。

  • 3xx(重定向状态码):表示需要客户端进一步的操作才能完成请求。

    • 301 Moved Permanently:永久重定向,请求的资源已被永久移到新位置。

    • 302 Found:临时重定向,请求的资源已被临时移到新位置。

  • 4xx(客户端错误状态码):表示客户端发出的请求有错误。

    • 400 Bad Request:客户端请求存在问题(如请求方法错误、参数不合理等),服务器无法理解。

    • 401 Unauthorized:请求要求用户的身份认证,通过后才能访问资源。

    • 403 Forbidden:服务器理解客户端的请求,但是拒绝执行此请求。

    • 404 Not Found:服务器无法找到请求的资源(或不存在)。

  • 5xx(服务器错误状态码):表示服务器在处理请求时发生了错误。

    • 500 Internal Server Error:服务器遇到了一个未曾预料的状况,导致无法完成对请求的处理。

    • 503 Service Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常(当前很忙)。

熟悉HTTP 状态码可以帮助测试人员,快速定位和解决网络请求中出现的问题,对于调试和排查网络请求错误非常有用。


插播一条广告:

我们正在组建测试开发方向的求职交流社区,如果您对软件质量管理、团队效率提高内容感兴趣,可以在「QALog公众号-菜单栏-社区内推-交流群」,加入了解。

广告结束,继续拷打!


Q6:结合网络模型,说一下URL的请求过程

URL(Uniform Resource Locator)是用于定位和访问互联网资源的地址,其请求过程可以结合网络模型(比如 TCP/IP 模型)来解释。
一个简单的 URL 请求过程:

  1. 应用层:用户在浏览器中输入 URL,浏览器根据 URL 中的协议(比如 HTTP、HTTPS)选择相应的传输协议。

  2. 传输层:浏览器通过传输层协议(如 TCP)与服务器建立连接。TCP 协议负责将数据可靠地传输到目标服务器。

  3. 网络层:根据 URL 中的主机名(如 baidu.com),浏览器通过DNS 解析获取服务器的 IP 地址,并使用 IP 协议找到目标服务器。

  4. 数据链路层:数据被封装成数据帧,在物理媒介上传输。

  5. 物理层:数据在物理媒介上传输,比如通过以太网、Wi-Fi 等传输方式。

  6. 服务器端:服务器接收到请求后,根据 URL 中的路径和其他信息,处理请求并返回相应的数据。

  7. 反向传输:服务器将响应数据封装成数据包,并通过网络层、传输层传输到客户端。

  8. 客户端:客户端接收到响应数据后,根据协议解析数据,并在应用层上显示给用户。

这样,通过网络模型的各层协议,浏览器和服务器之间就完成了一次 URL 请求和响应的过程。


Q7:简单讲一下HTTP不同版本之间的区别和各自的特点

HTTP的版本包括 HTTP/0.9、HTTP/1.0、HTTP/1.1、HTTP/2 和 HTTP/3,它们之间的区别主要体现在性能、功能和协议特性上:

  1. HTTP/0.9

    最早的版本,只支持 GET 方法,没有头部信息,服务器收到请求后返回 HTML 格式的文档。
    没有状态管理机制,每个请求都是独立的,无法维护客户端的状态。

  2. HTTP/1.0

    引入了头部信息,支持更多的请求方法,如 POST、PUT、DELETE 等。
    支持状态码、缓存控制等功能,使得通信更加可靠和灵活。

  3. HTTP/1.1

    引入了持久连接(Persistent Connections),减少了建立和关闭连接的开销,提高了性能。
    引入了管道化(Pipeline),允许客户端发送多个请求,而不必等待响应,提高了并发性能。
    引入了 Host 头部字段,支持在同一个 IP 地址上托管多个域名。

  4. HTTP/2

    采用了二进制协议,取代了 HTTP/1.x 中的文本协议,减少了数据传输的开销。
    引入了多路复用(Multiplexing),允许在同一个连接上并行发送多个请求和响应,提高了并发性能。
    支持头部压缩(Header Compression),减少了头部信息的传输大小,提高了性能。

  5. HTTP/3

    基于 UDP 协议,通过 QUIC 协议实现,以减少 TCP 连接的握手时间。
    支持 0-RTT(Zero Round Trip Time Resumption),在一定条件下可以实现零往返时间连接。
    引入了拥塞控制、丢包恢复等机制,以提高传输的稳定性和可靠性。

总的来说,随着 HTTP 版本的不断更新,HTTP 协议在性能、功能和安全性方面得到了不断的改进和提升,使得 Web 应用能够更加高效、快速地进行通信和数据传输。


Q8:HTTP有哪些请求方法?介绍一下它们各自的作用

HTTP 协议常见的请求方法包括以下几种:

  1. GET:请求获取指定资源的表示形式。使用 GET 方法应该只用于获取数据,而不应该对服务器产生其他影响。例如,请求一个网页、图片或其他资源。

  2. POST:向指定资源提交数据,请求服务器进行处理。POST 请求可能会导致新的资源的创建或已有资源的修改。常用于提交表单数据,如用户登录、注册等。

  3. PUT:请求服务器存储一个资源,并用请求的数据替代指定的资源。如果指定的资源不存在,则创建一个新的资源。

  4. DELETE:请求服务器删除指定的资源。

  5. HEAD:类似于 GET 请求,但服务器只返回头部信息,不返回实体的主体部分。用于获取资源的元信息,如资源的大小、类型等,而不获取实际的内容。

  6. OPTIONS:请求获取服务器支持的 HTTP 方法。客户端可以通过该方法来查询服务器支持的方法,用于跨域请求时的预检请求。

  7. TRACE:回显服务器收到的请求,主要用于测试或诊断。

  8. CONNECT:建立一个到服务器的隧道,用于代理服务器。


Q9:GET和POST有啥区别?

GET 和 POST 是 HTTP 协议中最常用的两种请求方法,它们之间的主要区别如下:

  1. 数据传输方式

    GET:通过 URL 参数传输数据,数据会附加在 URL 后面,以 ?key1=value1&key2=value2 的形式出现。
    POST:通过请求体传输数据,数据不会附加在 URL 中,而是作为请求的一部分发送。

  2. 数据长度限制

    GET:由于数据是作为 URL 参数传输的,受浏览器和服务器对 URL 长度的限制,传输的数据量较小,一般不超过 2048 个字符。
    POST:由于数据是作为请求体传输的,通常没有长度限制,可以传输大量数据。

  3. 安全性

    GET:因为数据是以明文形式出现在 URL 中,所以不适合传输敏感信息,如密码等。
    POST:由于数据是作为请求体传输的,相对于 GET 更安全,适合传输敏感信息。

  4. 缓存处理

    GET:请求会被浏览器缓存,可以通过浏览器的历史记录来访问。
    POST:请求不会被浏览器缓存,需要重新提交数据。

  5. 幂等性

    GET:请求是幂等的,多次请求相同的 URL 会得到相同的结果,不会对服务器产生影响。
    POST:请求不是幂等的,多次请求相同的 URL 可能会对服务器产生不同的影响,比如重复提交订单。

GET 适合用于获取数据,POST 适合用于提交数据。在选择使用哪种方法时,应根据具体的需求和数据传输方式来决定。


Q10:幂等性是啥意思?怎么保证一个按钮的幂等性?

幂等性是指对同一操作的多次执行所产生的影响相同,即使操作被执行多次也不会产生额外的影响。在 HTTP 协议中,幂等性指的是对同一个 URL 的多次请求所产生的结果是相同的。

要保证一个按钮的幂等性,可以采取以下措施:

  1. GET 请求幂等性:对于纯粹的数据获取操作,如查看页面、检索数据等,可以使用 GET 请求,因为 GET 请求是幂等的,多次请求同一个 URL 不会产生额外的影响。

  2. 使用唯一标识符(UID):对于需要修改或删除数据的操作,可以在请求中包含一个唯一标识符(如资源的 ID),服务器根据这个标识符来识别要修改或删除的资源,保证多次请求不会产生冲突。

  3. 使用重复提交检测:在客户端或服务器端进行重复提交检测,防止同一个请求被多次提交。

  4. 使用事务:在数据库操作中,可以使用事务来保证操作的原子性,即使操作被执行多次也不会产生额外的影响。


总结

本篇内容我主要串联了计算机网络体系、每层的作用和常用协议、以及HTTP的相关重要知识点等内容,如果您觉得写得还不错,欢迎关注《QALog校招测试八股—计网篇》系列,后面会持续更新!


以上就是本文的全部内容,如有问题可留言讨论或分享给您的朋友一起学习!

我们正在组建测试开发方向的求职交流社区,如果您对软件质量管理、团队效率提高内容感兴趣,可以在「QALog公众号-菜单栏-社区内推-交流群」,加入了解。

欢迎点赞、评论、收藏,it's important for me.

Searching for QALog

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1475527.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024牛客寒假算法基础集训营1(补题)

文章目录 ABCDEFGHIJKL A n的范围很小暴力直接 O ( n 3 ) O(n^3) O(n3)直接做就行。 我还傻的统计了一下前后缀&#xff0c;不过怎么写都行这道题。 #include <bits/stdc.h> #define int long long #define rep(i,a,b) for(int i (a); i < (b); i) #define fep(i,…

工业锅炉物联网:HiWoo Cloud为工业能源转型注入新动力

随着全球工业化的快速发展&#xff0c;工业锅炉作为工业生产的“心脏”&#xff0c;其能源效率和运行安全性越来越受到关注。然而&#xff0c;传统的工业锅炉管理往往依赖于人工监控和定期维护&#xff0c;这种方式不仅效率低下&#xff0c;而且难以确保设备的持续高效运行。在…

【C++干货基地】C++:函数重载(深度解析Windows和Linux下函数的修饰规则)

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引入 哈喽各位铁汁们好啊&#xff0c;我是博主鸽芷咕《C干货基地》是由我的襄阳家乡零食基地有感而发&#xff0c;不知道各位的…

05 动力云客之分页查询用户 + 查询用户详情 + 新增用户

1. 用户列表分页查询实现 核心 使用pageHelper实现分页 GetMapping(value "api/users")//分页的参数可以不传, 不传就默认设置为1public R userPage(RequestParam(value "current", required false) Integer current) {if (current null) {current …

使用空闲电脑免费搭建一个私人的网盘

如果你也有一台空闲电脑&#xff0c;可以使用它来搭建一个私人的网盘。 这里使用的是飞梦云网盘&#xff1b; 服务端&#xff1a;下载 服务器文件使用hash校验进行储存&#xff0c;实现重复上传的文件秒传功能。 Fuse4Ui&#xff08;虚拟分区工具&#xff09;&#xff1a;下…

Qt篇——QTableWidget选中多行右键删除

效果如图&#xff1a; 代码如下&#xff1a; 头文件中&#xff1a; QTableWidgetItem *selectedItem; //表格被选中的一行 QMenu* originDataTableContextMenu; //表格右键菜单 QAction* originDataTableActionDel; //表格右键菜单…

51单片机晶振频率与定时中断产生pwn占空比

单片机中晶振频率为12MHZ的机器周期怎么算? 1、系统晶振频率是12M&#xff0c;则机器周期&#xff1d;12&#xff0f;12&#xff1d;1us&#xff1b; 2、定时1ms&#xff1d;1&#xff0a;1000&#xff1d;1000us&#xff1b; 3、工作在方式0下&#xff1a;最大计数值是2&a…

java反射底层原理,java面试基本知识

正文 ZooKeeper 很流行&#xff0c;有个基本的疑问&#xff1a; ZooKeeper 是用来做什么的&#xff1f;之前没有ZK&#xff0c;为什么会诞生 ZK&#xff1f; OK&#xff0c;解答一下上面的疑问&#xff1a;&#xff08;下面是凭直觉说的&#xff09; ZooKeeper 是用于简化分…

Ubuntu常用状态命令

目录 一、温度 1&#xff0c;查看CPU温度 2&#xff0c;查看硬盘温度 二、CPU状态 1&#xff0c;显示CPU的详细信息&#xff0c;包括型号、频率、缓存等 2&#xff0c;显示CPU架构、CPU核心数、线程数、频率等信息 三、登录状态 1&#xff0c;查看成功登录的用户 2&am…

YOLO改进涨点,RCS-YOLO:检测头和网络结构的改进

目录 摘要 原理 总体结构图 RCS模块原理 代码实现 RCS-Based One-Shot Aggregation 代码实现 检测头改进 手动计算anchor代码 yaml文件 已详细修改的代码 程序启动命令 可论文指导 V ------------> jiabei-545 往期推荐 摘要 凭借速度和准确性之间的出色平…

串联所有单词的子串

题目链接 串联所有单词的子串 题目描述 注意点 words[i] 和 s 由小写英文字母组成1 < words.length < 5000可以以 任意顺序 返回答案words中所有字符串长度相同 解答思路 根据滑动窗口哈希表解决本题&#xff0c;哈希表存储words中所有的单词及单词的出现次数&#…

【mysql 数据库事务】开启事务操作数据库,写入失败后,不回滚,会有问题么? 这里隐藏着大坑,复试,面试时可以镇住面试老师!!!!

建表字段: CREATE TABLE user (id INT(11) NOT NULL AUTO_INCREMENT,nickname VARCHAR(32) NOT NULL COLLATE utf8mb4_general_ci,email VARCHAR(32) NOT NULL COLLATE utf8mb4_general_ci,status SMALLINT(6) UNSIGNED NULL DEFAULT NULL,password VARCHAR(256) NULL DEFAULT…

【Vue3】3-5 :组件内容的组合与分发

文章目录 前言问题本节内容 插槽 slot>> 使用>> 效果 (前后相同) 插槽的特性实战> 实例 1&#xff1a;【作用域】根组件中渲染> 效果> 原因>> 实例 2&#xff1a;【具名插槽】即多个插槽> 效果>> 实例 3&#xff1a;【作用域插槽】插槽能访…

kubectl 声明式资源管理方式

目录 介绍 YAML 语法格式 命令 应用yaml文件指定的资源 删除yaml文件指定的资源 查看资源的yaml格式信息 查看yaml文件字段说明 查看 api 资源版本标签 修改yaml文件指定的资源 离线修改 在线修改 编写yaml文件 创建资源对象 查看创建的pod资源 创建service服务对…

WordPress 插件存在漏洞,500 万网站面临严重安全风险

网络安全研究人员近期发现 WordPress LiteSpeed Cache 插件中存在一个安全漏洞&#xff0c;该漏洞被追踪为 CVE-2023-40000&#xff0c;未经身份验证的威胁攻击者可利用该漏洞获取超额权限。 LiteSpeed Cache 主要用于提高网站性能&#xff0c;据不完全统计已经有 500 多万安装…

K8s Pod资源管理组件

目录 Pod基础概念 在Kubrenetes集群中Pod有如下两种使用方式 pause容器使得Pod中的所有容器可以共享两种资源 网络 存储 总结 kubernetes中的pause容器主要为每个容器提供功能 Kubernetes设计这样的Pod概念和特殊组成结构的用意 通常把Pod分为以下几类 自主式Pod 控…

幻兽帕鲁(Palworld 1.4.11.5.0)私有服务器搭建(docker版)

文章目录 说明客户端安装服务器部署1Panel安装和配置docker服务初始化设置设置开机自启动设置镜像加速 游戏服务端部署游戏服务端参数可视化配置 Palworld连接服务器问题总结 服务端升级&#xff08;1.5.0&#xff09; 说明 服务器硬件要求&#xff1a;Linux系统/Window系统&a…

振动解调用的包络谱计算

1缘起 在振动分析中&#xff0c;对于一些高频频点的分析计算&#xff0c;使用包络谱技术&#xff0c;进而得到特化谱是最适宜的。 1.1 包络谱是什么样子的&#xff1f; 我们看matlab信号分析中提供的一个实例&#xff1a; https://www.mathworks.com/help/signal/ug/comput…

前端JS 时间复杂度和空间复杂度

时间复杂度 BigO 算法的时间复杂度通常用大 O 符号表述&#xff0c;定义为 T(n) O(f(n)) 实际就是计算当一个一个问题量级&#xff08;n&#xff09;增加的时候&#xff0c;时间T增加的一个趋势 T(n)&#xff1a;时间的复杂度&#xff0c;也就相当于所消耗的时长 O&#xff1…

纯国产轻量化数字孪生:智慧城市、智慧工厂、智慧校园、智慧社区。。。

AMRT 3D数字孪生引擎介绍 AMRT3D引擎是一款融合了眸瑞科技的AMRT格式与轻量化处理技术为基础&#xff0c;以降本增效为目标&#xff0c;支持多端发布的一站式纯国产自研的CS架构项目开发引擎。 引擎包括场景搭建、UI拼搭、零代码交互事件、光影特效组件、GIS/BIM组件、实时数据…