【华为OD技术面试真题 - 技术面】- Java面试题(15)

华为OD面试真题精选

专栏:华为OD面试真题精选
目录: 2024华为OD面试手撕代码真题目录以及八股文真题目录

封面

介绍下TCP/UDP

TCP(传输控制协议)和 UDP(用户数据报协议)

TCP(Transmission Control Protocol)和 UDP(User Datagram Protocol)是两种常见的传输层协议,主要用于不同类型的网络通信。它们各自有不同的特性、应用场景以及优缺点。下面是对这两种协议的详细介绍:

1. TCP(传输控制协议)

TCP 是一种面向连接的协议,它确保数据包的可靠传输。它使用的是连接建立和断开机制,这意味着在数据传输开始之前,发送方和接收方之间需要先建立连接。TCP 协议适用于那些对可靠性要求高的场景。

特性:
  • 面向连接:在数据传输之前,发送端和接收端需要建立一个连接,使用三次握手(3-way handshake)过程来完成连接的建立。
  • 可靠性:TCP 确保数据按顺序到达接收方,并且通过校验和、确认应答、重传机制来保证数据的完整性。
  • 流量控制:TCP 使用滑动窗口协议来控制数据的流量,防止发送过快导致接收方无法处理。
  • 拥塞控制:TCP 还通过算法(如慢开始、拥塞避免)来避免网络拥塞,确保数据传输的高效性。
  • 顺序保证:TCP 确保数据包按发送顺序到达接收方。如果数据包丢失或顺序错乱,会进行重传,确保顺序一致。
工作原理:
  • 三次握手:建立连接时,发送方和接收方通过三次握手的过程来同步各自的初始序列号,确保连接的可靠性。
  • 数据传输:数据按字节流的形式传输,接收方会对每一个收到的数据包进行确认,发送方根据接收方的确认应答进行重传,确保数据的完整性。
  • 四次挥手:连接结束时,发送方和接收方通过四次挥手过程来关闭连接,释放资源。
应用场景:
  • Web 浏览(HTTP/HTTPS)
  • 文件传输(FTP)
  • 电子邮件(SMTP, IMAP, POP3)
  • 远程登录(SSH, Telnet)
优点:
  • 可靠性高,数据传输保证无误。
  • 数据按顺序到达。
缺点:
  • 建立连接需要时间(3次握手),增加延迟。
  • 流量和拥塞控制带来额外的开销。
  • 不适合实时应用,因为延迟较高。

2. UDP(用户数据报协议)

UDP 是一种无连接的协议,相较于 TCP,它提供较低的开销和更少的延迟。UDP 不保证数据的可靠性,数据包可能丢失、重复或无序到达。因此,它适用于对传输速度要求较高,但对可靠性要求不那么严格的应用。

特性:
  • 无连接:UDP 不需要在发送数据之前建立连接,因此减少了建立和断开连接的时间。
  • 不可靠性:UDP 不保证数据包的到达和顺序,不进行任何重传或确认。
  • 无流量控制和拥塞控制:UDP 不会控制发送的速率,因此没有流量控制和拥塞控制机制。
  • 轻量级:UDP 的头部开销非常小,相比 TCP 它传输数据更高效。
工作原理:
  • 数据传输:发送方直接发送数据包给接收方,没有建立连接,也没有确认机制。如果数据丢失或顺序错误,接收方也不会请求重传。
  • 数据报文:UDP 每次发送的数据是一个独立的“数据报”,即使数据包丢失或错乱,UDP 也不进行任何补救。
应用场景:
  • 流媒体(视频、音频传输)
  • 实时通讯(VoIP、在线游戏)
  • DNS 查询
  • SNMP(简单网络管理协议)
  • DHCP(动态主机配置协议)
优点:
  • 速度快,延迟低,适合实时应用。
  • 传输开销小,没有连接建立和维护的过程。
  • 无连接,适合广播、单播等场景。
缺点:
  • 不保证数据的可靠性、顺序和完整性。
  • 不适合需要高可靠性的应用。

3. TCP 和 UDP 的对比

特性TCPUDP
连接性面向连接,需要建立连接(3次握手)无连接,数据包独立发送
可靠性保证数据按顺序到达,丢失数据会重传不保证数据到达,也不保证顺序,不重传丢失数据
流量控制有流量控制和拥塞控制无流量控制
传输速度相对较慢,因有重传和确认过程较快,无重传和确认过程
头部开销大,通常是20字节以上小,通常是8字节
适用场景需要可靠性保证的应用,如 HTTP、FTP、SSH 等对速度要求高、可容忍丢包的应用,如视频、音频流等

TCP为什么可靠

TCP(Transmission Control Protocol)被设计为一个可靠的传输协议,提供可靠的数据传输服务。它通过一系列机制来确保数据从发送方到接收方的可靠性,以下是 TCP 保证可靠性的几个关键特性:

1. 数据完整性

  • TCP 在发送数据时会计算数据的校验和(Checksum)。在接收方,TCP 会使用相同的算法重新计算接收到的数据的校验和。如果校验和不匹配,数据就被认为是损坏的,接收方会丢弃该数据包并要求重传。

2. 数据顺序保证

  • TCP 使用序列号(Sequence Number)来标识每个数据包。当接收方收到数据包时,它会根据序列号对数据进行排序。即使数据包到达的顺序不同,接收方仍能根据序列号按正确的顺序重组数据。

    • 如果一个数据包丢失或乱序,接收方会按顺序等待并请求重传。

3. 确认应答与重传机制

  • 在 TCP 中,发送方会在发送每个数据包后等待接收方的确认应答(ACK)。接收方收到数据包后,会向发送方发送一个确认信号,告知已经收到的数据包的序列号。

    • 如果发送方在一定时间内没有收到确认应答,它会认为数据包丢失,并会重传该数据包。这保证了数据的可靠传输。

4. 流量控制(Flow Control)

  • TCP 使用滑动窗口机制进行流量控制,以避免发送方发送过快,导致接收方处理不过来。

    • 接收方会告知发送方它的缓冲区大小(即窗口大小),发送方会根据这个信息调整发送速度,从而避免缓冲区溢出和数据丢失。

5. 拥塞控制(Congestion Control)

  • 为了防止网络拥塞,TCP 使用拥塞控制算法(如慢开始、拥塞避免、快速重传、快速恢复等)来动态调整数据的发送速度。

    • 这些机制确保了网络中不会因为数据发送过快而导致网络拥塞,从而减少了丢包和延迟。

6. 三次握手(Three-Way Handshake)

  • 在连接建立时,TCP 使用三次握手来确认双方是否都准备好开始数据传输:

    1. SYN:客户端向服务器发送一个连接请求。
    2. SYN-ACK:服务器响应确认请求。
    3. ACK:客户端确认收到服务器的响应。

    这个过程确保了双方的连接建立是可靠的。

7. 四次挥手(Four-Way Handshake)

  • 在连接断开时,TCP 使用四次挥手来确保双方都知道连接已经关闭,数据传输也已完全结束。这确保了没有数据丢失,并且连接能够安全地关闭。

8. 重传机制(Retransmission)

  • 当发送方没有收到接收方的确认应答时,TCP 会定时进行重传。通过超时重传(Timeout Retransmission)机制,保证丢失的数据包能够及时重传并且最终到达接收方。

9. 流控制和拥塞控

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

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

相关文章

‌在 Fedora 系统下备份远程 Windows SQL Server 数据库的完整方案

‌一、环境准备与工具安装‌ ‌1. 安装 Microsoft SQL Server 命令行工具‌ Fedora 需安装 mssql-tools 和 ODBC 驱动: # 添加 Microsoft 仓库 sudo curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/8/prod.repo# 安装工具包 …

DeepSeek:巧用前沿AI技术,开启智能未来新篇章

引言 近年来,人工智能(AI)技术迅猛发展,大模型成为全球科技竞争的核心赛道。在这场AI革命中,DeepSeek作为中国领先的大模型研发团队,凭借其创新的技术架构、高效的训练方法和广泛的应用场景,迅…

R语言实现轨迹分析--traj和lcmm包体会

R语言实现轨迹分析–traj和lcmm包体会 轨迹分析是对重复测量数据的一种归纳,转化为一种分类变量,比如手术后1~7天内的疼痛评分,可以形成术后急性痛轨迹。形成的轨迹作为一个分类变量,可以用于预测疾病的预后&#xff…

Vue 3 事件总线详解:构建组件间高效通信的桥梁

Vue 3 事件总线详解:构建组件间高效通信的桥梁 为什么需要事件总线?使用 mitt 实现事件总线1. 安装 mitt2. 创建事件总线3. 在组件中使用事件总线发送端组件(例如 ComponentA.vue)接收端组件(例如 ComponentB.vue&…

MySQL的基础语法1(增删改查、DDL、DML、DQL和DCL)

目录 一、基本介绍 二、SQL通用语法 三、SQL分类(DDL、DML、DQL、DCL) 1.DDL 1.1数据库操作 1.2表操作 1.2.1表操作-查询创建 1.2.2表操作-数据类型 1)数值类型 2)字符串类型 3)日期时间类型​编辑 4)表操作-案例 1.2.3…

【NLP】15. NLP推理方法详解 --- 动态规划:序列标注,语法解析,共同指代

动态规划 (Dynamic Programming) 动态规划(Dynamic Programming,简称 DP)是一种通过将问题分解为较小子问题来优化计算效率的技术。它特别适用于优化最优解问题,比如序列标注(sequence tagging)这类任务。…

JavaScript中的NaN、undefined和null 的区别

NaN代表"Not a Number",它是一种特殊的数值,用于表示非数字值。当一个操作无法返回有效的数值时,通常会得到NaN作为结果。 let result = 10 / abc; console.log(result); // 输出 NaN需要注意的是,NaN与自身不相等,我们无法通过简单的比较操作符(如==或===)来…

Turtle事件处理(键盘与鼠标交互)

Turtle 提供了 事件驱动编程,允许我们使用 键盘 和 鼠标 控制 Turtle,从而实现交互式绘图。例如,我们可以让 Turtle 响应 按键、鼠标点击 和 拖动 事件,使其根据用户的输入进行移动、旋转或绘制图形。 1. 事件机制概述 Turtle 的事件处理主要依赖 turtle.Screen() 提供的 …

【Keepalived】Keepalived-2.3.3明确结束对CentOS 7的支持

2025年3月30日,官方发布了Keepalived的最新版,版本号:2.3.3 而2024年11月3日发布的2.3.2版本,在CentOS 7.9上编译的时候,就出现了报错,但是在Alma Linux 8.10上,则可以成功编译安装&#xff0c…

PyTorch --torch.cat张量拼接原理

在 PyTorch 的 torch.cat 函数中,out 参数用于指定输出张量的存储位置。是否使用 out 参数直接影响结果的存储方式和张量的内存行为。以下是详细解释: 不使用 out 参数(默认行为) 含义:不提供 out 参数时,…

人工智能之数学基础:矩阵对角化的本质

本文重点 前面的课程中,我们学习了矩阵的对角化,基于对角化可以将矩阵A转变为对角矩阵D,但是你有没有想过,为什么要进行矩阵对角化,矩阵对角化究竟做了一件什么事情呢? 矩阵对角化的本质 几何解释: 从几何变换的角度看,矩阵对角化意味着我们找到了一组基,使得线性变…

ubuntu的ubuntu--vg-ubuntu--lv磁盘扩容

在我们安装ubuntu时,如果选择的是自动分区,就会按照逻辑卷的形式来分区,并且只分配100G其余的并不会被分配,这对我们大多数情况来说都是不合理的,所以,如何扩充呢 下面以一个小的案例来说明如何扩充 问题…

Redis BitMap 实现签到及连续签到统计

一、引言 用户签到功能是很多应用都离不开的一个板块,单词打开、QQ达人等等为我们所熟知,这项功能该如何实现呢,一些朋友可能想当然的觉得无非将每日的签到数据记录下来不就好了,不会去细想用谁记录,如何记录才合适。 …

前端国际化-插件模式

文章目录 Webpack 插件开发解析中文调用有道翻译 API生成 JSON 语言文件React 国际化实现 Webpack 插件开发 创建 i18n-webpack-plugin.js 插件:在 src 目录下扫描所有文件使用 babel-parser 解析 JavaScript/JSX 代码识别中文文本通过有道翻译 API 翻译生成 local…

IP属地和发作品的地址不一样吗

在当今这个数字化时代,互联网已经成为人们日常生活不可或缺的一部分。随着各大社交平台功能的不断完善,一个新功能——IP属地显示,逐渐走进大众视野。这一功能在微博、抖音、快手等各大平台上得到广泛应用,旨在帮助公众识别虚假信…

PP-ChatOCRv3新升级:多页PDF信息抽取支持自定义提示词工程,拓展大语言模型功能边界

文本图像信息抽取技术在自动化办公、建筑工程、教育科研、金融风控、医疗健康等行业领域具有广泛应用场景。2024年9月,飞桨低代码开发工具PaddleX中新增文本图像智能产线PP-ChatOCRv3,充分结合PaddleOCR的文本图像版面解析能力和文心一言语言理解优势&am…

算法刷题记录——LeetCode篇(1.2) [第11~20题](持续更新)

更新时间:2025-03-29 LeetCode题解专栏:实战算法解题 (专栏)技术博客总目录:计算机技术系列目录页 优先整理热门100及面试150,不定期持续更新,欢迎关注! 17. 电话号码的字母组合 给定一个仅包含数字 2-9…

如何在 vue 渲染百万行数据,vxe-table 渲染百万行数据性能对比,超大量百万级表格渲染

vxe-table 渲染百万行数据性能对比,超大量百万级表格渲染;如何在 vue 渲染百万行数据;当在开发项目时,遇到需要流畅支持百万级数据的表格时, vxe-table 就可以非常合适了,不仅支持强大的功能,虚…

阿里 FunASR 开源中文语音识别大模型应用示例(准确率比faster-whisper高)

文章目录 Github官网简介模型安装非流式应用示例流式应用示例 Github https://github.com/modelscope/FunASR 官网 https://www.funasr.com/#/ 简介 FunASR是一个基础语音识别工具包,提供多种功能,包括语音识别(ASR)、语音端…

如何使用 LLaMA-Factory 微调 LLaMA3

【LLaMa3微调】使用 LLaMA-Factory 微调LLaMA3 实验环境 1.1 机器 操作系统:Windows 10 或 UbuntuPyTorch 版本:2.1.0Python 版本:3.10(针对Ubuntu 22.04)Cuda 版本:12.1GPU 配置:p100 (16GB) …