测试开发面试题---计算机网络
计算机网络模型
OSI模型:七层模型
- 物理层:定义电气特征,机械特征等功能规范,传递实际比特流
 - 数据链路层:物理地址寻址(MAC),帧的传输,错误检测和纠正
 - 网络层:路由选择,逻辑地址寻址,数据包转发
 - 传输层:端到端的传输,提供差错控制、流量控制和拥塞控制
 - 会话层:建立维护和终止会话
 - 表示层:数据的加解密、压缩和格式转化
 - 应用层:提供应用层之间的接口,处理用户需求
 
TCP/IP模型
- 网络接口层:物理地址寻址,帧传输
 - 网络层:路由选择、逻辑寻址和数据包转发
 - 传输层:提供端到端的通信、数据流控制和差错控制
 - 应用层:提供应用程序之间接口
 
TCP如何保证可靠传输
使用三次握手建立可靠连接
客户端首先向服务器发送请求连接,服务器收到后回复同步确认包,客户端收到后会回复确认包
使用序列号和确认机制保证数据传输的完整性
每个字节数据分配一个序列号,接收方通过确认号来确认收到的数据,如果发送方超时未收到确认就会重传数据包
流量控制和拥塞控制来避免网络阻塞
流量控制
TCP使用滑动窗口实现流量控制,发送方和接收方各自维护了一个滑动窗口,用于跟踪已发送未确认和允许发送的数据
拥塞控制
TCP的拥塞控制是动态调整数据发送速率来确保网络资源高效利用
- 慢启动:初始时,拥塞窗口设置为一个人很小的值,每收到一个ACK,拥塞窗口会增加一个报文长度使得发送速率呈指数增长,直到达到慢启动阈值。
 - 拥塞避免:当检测到网络开始出现阻塞时,TCP进行阻塞避免,窗口的增长变为线性
 - 快重传:如果接受方发现失序ACK会向发送方迅速发送多个ACK,发送方接收到以后会立即重传,无需等待重传计时器
 - 快恢复:发送窗口设置为收到ACK前窗口的一半,并采用线性增长,避免再次阻塞
 
四次挥手终止连接
Get和Post的区别
- Get:数据参数包含在URL中,URL的长度有限制,不同的浏览器和服务器的限制不同;参数可见于URL中,可能包含敏感信息,容易被缓存或记录在浏览器中;多次相同的请求会得到一致的结果。
 - Post:数据参数在http正文中,URL的长度没有限制,理论上可以传输大量数据;参数不可见与URL中,相对安全,不会被缓存或者记录在浏览器中,多次相同的请求得到的结果不同。
 
HTTP长连接
长连接是相对于短链接而言的,短链接是指每次请求都会建立连接,请求完毕后再关闭连接。长连接则是每次请求完毕后不关闭连接,即请求可以复用连接。
HTTP实现长连接方式
- 在发送请求时,客户端会在请求头中包含connection-keep alive表明自己想与服务器建立连接,并且在请求完毕后不关闭连接。
 - 服务器会回复客户端一个connection-keep alive确认并同意长连接
 
长连接优点
- 减少了连接创建和关闭的开销,提高了通信效率
 - 对于频繁请求的场景可以减少延迟
 
HTTP1.0/1.1/2的区别
- HTTP1.0采用短链接,每次请求都需要建立连接
 - HTTP1.1引入长连接,它采用分块传输方法,即每产生一个数据就发送一个数据
 - HTTP2完全多路复用,接收方和发送方可以同时接受和发送多条消息,具有服务器推送功能,即服务器可以未经客户端的允许推送信息,报头压缩。
 
HTTPS的工作流程
- 客户端向服务器发送请求连接,服务器收到以后将自己的证书发送给客户端,证书中包含有效期、公钥和证书颁发机构等
 - 客户端收到证书后会检查证书的有效性,如果有效则随机生成一段数字并使用公钥进行加密发送给服务器
 - 服务器接收到以后解密,客户端与服务器建立连接开始通信
 
DSN解析过程
客户端首先会检查浏览器缓存,如果没有找到对应的IP地址就会去查询本地域名服务器,如果还没有找到就开始递归查询,本地域名服务器会向根域名服务器进行查询,根域名服务器不会给出IP地址,而是告诉本地域名服务器应该去那个顶级域名服务器查找,本地域名服务器像顶级域名服务器发起查找,顶级域名服务器会返回一个权限域名服务器列表,本地域名服务器任选一个权限域名服务器进行查询。
ARP工作流程
- ARP请求:当一个主机与另一个主机进行通信时,首先检查自己ARP缓存中是否有目标对象对应的IP地址,如果没有就开始启动ARP查询过程
 - 广播ARP请求:源主机发送一个ARP请求,包括目的主机的IP地址和MAC地址(MAC地址设置为FF:FF:FF:FF:FF表示所有的主机都可以收到该请求)
 - 网络上所有主机都会收到这个ARP请求但只要目标主机会对请求进行响应
 - 目标主机会将源主机的IP地址和MAC地址,目标主机的IP地址和MAC地址封装在一起发送给源主机
 - 源主机接收到以后会提取目标主机的IP地址和MAC地址并更新到自己ARP缓存中
 
从浏览器输入URL显示到主页
- DNS解析查找域名对应的IP地址
 - 与服务器通过三次握手建立连接
 - 向服务器发送HTTP请求
 - 服务器处理请求,返回网页内容
 - 浏览器解析并渲染页面
 - TCP四次挥手终止连接
 
对称加密和非对称加密
- 对称加密:加密密钥和解密密钥相同,密钥必须保密并在通信双方之间共享,算法高效适合加密大量数据
 - 非对称加密:加解密使用一对密钥,一个公钥一个私钥,公钥可以公开,私钥则必须加密。效率较低,不适合加密大量数据。
 
cookie和session的区别
- cookie是客户端的存储机制,服务端会将某一状态以key-value形式写入客户端中,客户端下次访问时会携带这些状态信息发送给服务端,服务端会根据cookie内容识别使用者
 - session是服务端保存机制,它会为每个会话创建一个SessionID并存入用户cookie中
 
因为session是服务器的存储机制,因此它会比cookie更加安全,同时cookie有数据量的限制而session则没有,所以cookie适合存储数据量小且不敏感的数据,session则适合处理数据量大比较敏感的数据。
DOS、DDOS和DRDOS
- DOS(拒绝服务攻击):攻击者使用单个计算机向系统发送大量请求导致目标计算机或者网络资源过载,无法响应用户请求。
 - DDOS(分布式拒绝服务攻击):攻击者使用多个计算机向系统发送大量请求,由于攻击源比较广泛且难以追踪,因此DDOS更具有攻击性
 - DRDOS(分布式反射拒绝服务):利用第三方服务器作为反射器,将受害者IP设为源IP地址向多个反射服务器发送请求,这些服务器接收到请求后向受害者发送大量数据,导致其无法正常工作。
 
相关文章:
测试开发面试题---计算机网络
计算机网络模型 OSI模型:七层模型 物理层:定义电气特征,机械特征等功能规范,传递实际比特流数据链路层:物理地址寻址(MAC),帧的传输,错误检测和纠正网络层:…...
Wonder3D 论文学习
论文链接:https://arxiv.org/abs/2310.15008 代码链接:https://github.com/xxlong0/Wonder3D 解决了什么问题? 随着扩散模型的提出,3D 生成领域取得了长足进步。从单张图片重建出 3D 几何是计算机图形学和 3D 视觉的基础任务&am…...
【MySQL进阶之路 | 高级篇】显式事务和隐式事务
使用事务有两种方式:显式事务和隐式事务。 1. 显式事务 步骤1: START TRANSACTION或者BEGIN,作用是显式开启一个事务。 START TRANSACTION语句相较于BEGIN特别之处在于,后面能跟几个修饰符。比如: READ ONLY&…...
Ruby、Python、Java 开发者必备:Codigger之软件项目体检
在编程的广阔天地里,Ruby、Python 和 Java 开发者们各自凭借着独特的语言特性,构建着精彩纷呈的应用世界。然而,无论使用哪种语言,确保项目的高质量始终是至关重要的目标。而 Codigger 项目体检则成为了实现这一目标的得力助手&am…...
day05 Router、vuex、axios
配置 router和vuex需要在创建vue项目的时候,开始的时候选择Manually select features,于是就可以在下一个创建配置讯问中选择router和vuex。 axios则需要执行命令行: npm install axios -S 之后再在需要发送请求的view导入即可。 router…...
yolov5-7在opencv里跑自己的onnx模型
先把模型放在如下目录 运行如下代码 import cv2 import numpy as npclass Onnx_clf:def __init__(self, onnx:strdnn_model1/plane02.onnx, img_size640, classlist:list[plane]) -> None: func: 读取onnx模型,并进行目标识别para onnx:模型路径img_size:输出图片大小,和模…...
JVM 11 的优化指南:如何进行JVM调优,JVM调优参数有哪些
这篇文章将详细介绍如何进行JVM 11调优,包括JVM 11调优参数及其应用。此外,我将提供12个实用的代码示例,每个示例都会结合JVM启动参数和Java代码。 本文已收录于,我的技术网站 java-broke.site,有大厂完整面经&#x…...
nginx的配置和使用
一、nginx支持win和linux版本的下载,选择合适的版本进行安装 二、配置文件注解 重点的几个参数进行注释: 1、listen 要监听的服务的端口,符合这个端口的才会被监听 server_name要监听的服务地址,可能是ip,也可能是域名…...
mysql面试(六)
前言 本章节详细讲解了一下mysql执行计划相关的属性释义,以及不同sql所出现的不同效果 执行计划 一条查询语句经过mysql查询优化器的各种基于成本和各种规则优化之后,会生成一个所谓的 执行计划,这个执行计划展示了这条查询语句具体查询方…...
6.乳腺癌良性恶性预测(二分类、逻辑回归、PCA降维、SVD奇异值分解)
乳腺癌良性恶性预测 1. 特征工程1.1 特征筛选1.2 特征降维 PCA1.3 SVD奇异值分解 2. 代码2.1 逻辑回归、二分类问题2.2 特征降维 PCA2.3 SVD奇异值分解 1. 特征工程 专业上:30个人特征来自于临床一线专家,每个特征和都有医学内涵;数据上&…...
Vue3响应式高阶用法之markRaw()
Vue3响应式高阶用法之markRaw() 文章目录 Vue3响应式高阶用法之markRaw()一、简介二、使用场景2.1 避免性能开销2.2 防止意外修改 三、基本使用3.1 标记对象 四、功能详解4.1 markRaw与reactive的区别4.2 markRaw与ref的区别 五、最佳实践及案例5.1 使用大型第三方库对象5.2 静…...
免费SSL证书的安全性与获取指南
SSL证书是一种数字凭证,用于加密用户与网站之间的信息交换,以确保传输的数据不被第三方窃取。它像是一个数字版的密封印章,为数据的传输过程提供了一层保护膜。 免费的SSL证书通常由CA机构提供,它们同样可以提供基础数据的加密服…...
【CN】Argo 持续集成和交付(一)
1.简介 Argo 英 [ˈɑ:ɡəu] 美 [ˈɑrˌɡo] Kubernetes 原生工具,用于运行工作流程、管理集群以及正确执行 GitOps。 Argo 于 2020 年 3 月 26 日被 CNCF 接受为孵化成熟度级别,然后于 2022 年 12 月 6 日转移到毕业成熟度级别。 argoproj.github.i…...
Unity3D 自定义Debug双击溯源问题详解
前言 在Unity3D的开发过程中,经常需要处理各种交互和事件,其中双击事件是常见的需求之一。然而,由于Unity自带的双击检测机制并不完善,开发者往往需要自定义实现以满足特定需求。本文将详细介绍如何在Unity3D中自定义Debug双击溯…...
环境搭建-Docker搭建ClickHouse
Docker搭建ClickHouse 一、前言二、ClickHouse安装2.1 拉取镜像运行ClickHouse服务 三、测试安装3.1 进入clickhouse容器3.2 命令补充说明 四、测试连接五、设置CK的用户名密码 一、前言 本文使用的Docker使用Windows搭建,Linux版本的搭建方式一样。 Windows系统搭…...
深入理解CSS中的变量(概念篇)
CSS变量,也称为自定义属性,是一种在CSS中定义和重用值的方式。它们允许开发者在一个地方定义样式值,然后在整个样式表中引用这些值,从而提高代码的可维护性和可读性。 1、定义和使用CSS变量 CSS变量的定义和使用非常简单。变量名以两个连字符开头,变量值为任何有效的CSS…...
Prometheus 监控Tomcat等java应用的状态
5月应用服务出现问题,当别的小伙伴问我,有没有Tomcat等应用状态的监控的时候,我有点儿尴尬。所以赶紧抽空部署一下。 在配置之前,就当已经会安装jdk和tomcat了。 一、下载jmx_exporter #linux下 cd /usr/local/prometheus wget …...
c++中的斐波那契数列(Fibonacci Sequence)和背包问题(Knapsack Problem)
前言 hello,大家好啊,我是文宇,不是文字,是文宇哦。 斐波那契数列(Fibonacci Sequence) 斐波那契数列(Fibonacci Sequence)是一个经典的数学问题,其中每个数都是前两个…...
connect的非阻塞模式
本文参考:connect 函数在阻塞和非阻塞模式下的行为 一般情况下,在使用connect连接服务端时,需要等待一会儿才会函数才会返回,导致程序阻塞。为了降低阻塞的影响,我们可能会单独开个线程处理connect请求,例…...
jenkins面试题全集
1. 简述什么是Jenkins ? Jenkins是一个开源的持续集成的服务器,Jenkins开源帮助我们自动构建各类项目。 Jenkins强大的插件式,使得Jenkins可以集成很多软件,可以帮助我们持续集成我们的工程项目,对于我们测试来说&…...
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的
修改bug思路: 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑:async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...
如何应对敏捷转型中的团队阻力
应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中,明确沟通敏捷转型目的尤为关键,团队成员只有清晰理解转型背后的原因和利益,才能降低对变化的…...
深入浅出Diffusion模型:从原理到实践的全方位教程
I. 引言:生成式AI的黎明 – Diffusion模型是什么? 近年来,生成式人工智能(Generative AI)领域取得了爆炸性的进展,模型能够根据简单的文本提示创作出逼真的图像、连贯的文本,乃至更多令人惊叹的…...
学习一下用鸿蒙DevEco Studio HarmonyOS5实现百度地图
在鸿蒙(HarmonyOS5)中集成百度地图,可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API,可以构建跨设备的定位、导航和地图展示功能。 1. 鸿蒙环境准备 开发工具:下载安装 De…...
嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)
目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 编辑编辑 UDP的特征 socke函数 bind函数 recvfrom函数(接收函数) sendto函数(发送函数) 五、网络编程之 UDP 用…...
人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型
在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重,适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解,并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...
