网络编程思维导图

news2025/2/6 7:43:06

8/20   面试题

问题一 :c语言中指针数组与数组指针的区别

指针数组

1>本质上是一个数组,只是每个数组元素都是一个指针变量

2>定义格式:数据类型 *数组名[数组长度];

数组指针

1>本质上是一个指针,用于存储整个数组的起始地址,

2>对于数组指针而言,每偏移一个单位,内存就会偏移一整个数组的容量的大小

3>数组指针一般用于二维数组,二维数组的数组名,本质上是一个数组指针常量

4>定义格式:数据类型 (*数组指针名)[常量];

问题二 :结构体字节对齐

结构体的字节对齐遵循两个原则

1>结构体在给每个成员分配内存空间前对按照数据类型对齐一次

2>结构体在给每个成员分配完内存空间后会整体对齐一次

32位系统以(最大字节的成员,4)对齐

64位系统以(最大字节成员,8)对齐

问题三:TCP和UDP的区别

TCP-------的特点是稳定

1>TCP是面向连接的,可靠的传输方式

2>在传输过程中,数据无失序,无重复,无丢失,无误

2.1>TCP会为每个数据包编号,这个编号就叫做序列号

2.2>每个序列号都需要一个应答包应答,如果没有应答就会一直重复发送上面的包直到正确为止

3>TCP在传输速率低,资源消耗大

4>数据收发是不同步的

4.1>TCP为了提高传输速率会将多个较小且时间间隔短的数据包沾在一起发送,这就是沾包现象

5>应用场景:对传输质量要求比较高以及出阿叔大量数据的通信、例如账号密码的登录,大文件的下载

UDP

1>UDP是面试无连接的,不保证可靠性的,尽最大可能的传输的协议

2>在传输过程中,数据可能会失序,丢失,重复等

3>UDP传输效率高,实时性高

4>收发是同步的,不会沾包

5>UDP在传输过程中规定了传输的最大长度,多出部分直接忽略删除

5>应用场景:发送小尺寸的,在接收到数据给出应答比较困难的情况下,例如:广播,通讯软件的音视频

问题四:同步通信和异步通信的区别

问题五:谈谈对多线程的理解

问题六:大小端验证

1>不同的主机存储多字节整数时,由于cpu的架构不同,存储方式也不同大致分为两类

大端存储:地址低位存储数据的高位

小端存储:地址低位存储数据的地位

2>验证方式:使用指针或者共用体

问题七:谈谈互斥锁

1>互斥锁的本质是一个特殊的临界资源,该临界资源在同一个时刻只能被一个线程所拥有,当一个线程试图去锁定被另一个线程锁定的互斥锁时,该线程会阻塞等待,直到拥有互斥锁的线程解锁了该互斥锁

2>与互斥锁有关的API有

2.1> 创建互斥锁 pthread_mutex_t mutex;

2.2>初始化互斥锁 pthread_mutex_init(&mutex,NULL);

2.3>获取锁资源 pthread_mutex_lock(&mutex);

2.4>释放锁资源 pthread_mutex_unlock(&mutex);

2.5>销毁锁 pthread_mutex_destroy(&mutex);

3>当多个互斥锁被不同的线程以不同的顺序获取时,很容易发生死锁

3.1>死锁产生的条件

1>互斥条件:资源不能被多个线程共享,在同一时刻只能被一个线程所拥有

2>持有和等待条件:每个线程都持有至少一个资源,并且都在等待别的线程所持有

的资源

3>不可抢占条件:一个资源不能强行从一个线程抢占到另一个线程,只能等该线程

释放该资源

4>循环等待条件:存在一个线程(多个线程的集合){p1,p2,p3}p1在等待p2持有的资源

p2等待p3持有的资源,p3等待p1持有的资源

3.2>如何避免死锁

1. 避免持有和等待:尽可能让线程在开始执行前一次性获取所有必需的资源。

2. 资源排序:规定一个全局顺序来获取资源,并且强制所有线程按这个顺

序获取资源。

3. 使用超时:在尝试获取资源时使用超时机制,这样线程在等待过长时间

后可以放弃,回退,并重新尝试。

4. 检测死锁并恢复:运行时检测死锁的存在,一旦检测到死锁,采取措施(如

终止线程或回滚操作)来解决。

问题八:共享内存的特点

1>共享内存表示的是多个进程共享一个外部的物理内存,效率比较高

2>共享内存具有时效性,存放到共享内存区域中的数据,如果不及时读取,下一次写入后,前面的数据会被覆盖

3>共享内存的操作不是一次性的,写入共享内存中的数据,即使读取出去后,依然存在于共享内存中,直到下一次被覆盖

问题九:讲一下c中的指针

1>指针能够从地址的角度,找到内存中的数据,而不是以变量的角度去找,效率较高

2>指针:就是内存地址编号

问题十:gcc编译四步

1>预处理

头文件的展开,简单的宏替换,删除注释

2>编译

检查语法错误,没有语法错误生成汇编文件

3>汇编

生成不可执行的二进制文件

4>连接

链接到库函数,生成可执行的二进制文件

问题十一:谈一下对soket的理解

问题十二:HTTP协议和TCP协议和UDP协议之间的关系

问题十三:IP地址和子网掩码如何决定网卡所在的网段

使用IP地址&子网掩码 得到所在网段

问题十四:计算机网络中的OSI七层模型和TCP/IP四层体系结构

七层模型从上到下:应用层 表示层 会话层 运输层 网络层 数据链路层 物理层

四层模型从上到下:应用层 运输层 网际层 网络接口层

问题十五:数据结构中栈和队列的区别

栈和队列都是操作受限的线性表,栈只允许在同一端操作,不能在中间进行操作,栈是先进后出,队列的删除和插入需要在异端操作,是先进先出的,总的来说就是栈的操作在同一端进行,队列中的删除和插入必须在异端进行

问题十六:数据结构中顺序表和链表的区别

问题十七:TCP的三次握手和四次挥手

  1. 第一次握手:客户端发送SYN包(SYN=1, seq=0)给服务器,并进入SYN_SENT状态,等待服务器返回确认包。
  2. 第二次握手:服务器接收到SYN包,确认客户端的SYN,发送ACK包(ACK=1 , ack=1),同时发送一个SYN包(SYN=1, seq=0),并进入SYN_RCVD状态。
  3. 第三次握手:客户端接收到服务器的SYN包,以及ACK包,进入establish状态,同时向服务器发送ACK包(ACK=1, ack=1)。此时三次握手包发送完毕,服务器也进入establish状态
  1. 第一次挥手,主动关闭方发送一个FIN包(FIN=1, seq = u)给被动方,进入FIN_WAIT_1状态;
  2. 第二次挥手:被动方接收到FIN包,给主动方发送一个ACK包(ACK=1, ack=u+1);并进入CLOKSE_WAIT状态。主动方接受到ACK包后,进入FIN_WAIT_2状态。如果有数据没有发送完毕,则继续发送,直到发送完毕为止;
  3. 第三次挥手:被动方发送一个FIN包(FIN=1, seq=w),进入LAST_ACK状态.
  4. 第四次挥手:主动关闭方收到FIN包,回复一个ACK包(ACK=1, ack=w+1)。被动关闭方收到主动关闭方的ACK后关闭连接。

问题十八:指针和指针变量是什么

问题十九:共享内存和消息队列的优缺点

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

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

相关文章

QT实现自定义侧边导航栏

侧边导航栏是网页或应用程序界面的一种常见布局,它通常位于页面或应用程序的侧边位置,用来展示导航菜单或功能链接,方便用户快速访问不同的页面或功能。 侧边导航栏一般具有以下特点: 布局紧凑:侧边导航栏通常采用垂直…

实用工具:[TrafficMonitor]任务栏电脑性能监控安装指南

实用工具:[TrafficMonitor]任务栏电脑性能监控安装指南 效果图 话不多说,直接上软件效果图: 内容介绍 支持监控的指标: 上传下载CPU利用率内存利用率CPU温度总网速CPU频率显卡利用率显卡温度硬盘温度主板温度硬盘利用率 一共…

三千元左右的卧室投影仪怎么选?当贝D6X Pro代替电视的最佳选择

想象一下,在舒适的卧室中,只需轻轻一瞥,便能享受一场视觉盛宴,无需起身,天花板即成为你的私人影院。这一梦想现已成真,只需挑选一台合适的卧室投影仪,即可实现这一愿望。 下面是2024年卧室投影仪…

DLL修复工具哪个好用?分享电脑丢失dll文件一键修复方法,快速修复!

电脑丢失dll文件一键修复都有哪些方法?想必很多小伙伴都对dll文件了解颇少,不过电脑倒是出现过很多次关于dll文件丢失的问题。本文就和大家分享一下dll文件是什么?如果电脑出现dll文件缺失的情况应该如何修复,一起来学习下吧&…

llama3 结构详解

文章目录 1. Llama3 整体结构2. 模块详解2.1 模块1: Embeddings2.2 模块2: RoPE2.3 模块3: Transformer Block2.4 模块4: RMSNorm2.5 模块5: Attention2.6 模块6: ADD2.7 模块7: FFN2.8 模块8: Linear 1. Llama3 整体结构 llama3 的整体结构还是延续transformer decoder 架构&a…

【计算机组成原理】二、数据的表示和运算:1.数值与编码(十进制二进制转换、BCD码、ASCII码、汉字编码、奇偶校验码、循环冗余检测CRC、海明码)

二、数据的表示和运算 文章目录 二、数据的表示和运算1.数值与编码1.1数据存储和排列❗1.2十进制转换1.2.1整数1.2.2小数 1.3二进制转换1.3.1 B->O1.3.2 B->H 1.4真值&机器数1.5 BCD码1.6 ASCII码1.7汉字与GBK1.8 UTF1.9检错码1.9.1奇偶校验码1.9.2循环冗余检测CRC1.…

鸿蒙Harmony实战:常用命令交互工具—“hvigorw”

hvigor通过hvigorw工具&#xff0c;实现命令行交互。 命令行使用方式 hvigorw [taskNames...] <options> 常用命令 查询 选项 说明 -h, --help 打印hvigor的命令帮助信息。 -v, --version 打印hvigor版本信息。 编译构建 选项 说明 clean 清理构建产物buil…

启动团队活力:5款互动游戏助力新人快速融入

在加入新团队时&#xff0c;很多人都会感到尴尬和不适应。作为团队的领导者&#xff0c;帮助新成员顺利融入团队是至关重要的。组织一场“破冰游戏”是一个有效的策略&#xff0c;不仅可以活跃团队气氛&#xff0c;还能促进成员之间的交流和理解。这时候&#xff0c;团队的领导…

ReFT: reasoning with reinforced Fine-Tuning

从一个question中看到多种多样的cot&#xff0c;都可以从中学习。 offline self-training 数据的质量是模型自己来定义的。 思考增加或者减少一条数据&#xff0c;对于模型训练的影响。 用influence function来衡量新增一条数据对于模型训练的整体的影响。 高质量的数据能够…

深度学习Day-30:CGAN入门丨生成手势图像丨可控制生成

&#x1f368; 本文为&#xff1a;[&#x1f517;365天深度学习训练营] 中的学习记录博客 &#x1f356; 原作者&#xff1a;[K同学啊 | 接辅导、项目定制] 要求&#xff1a; 结合代码进一步了解CGAN学习如何运用生成好的生成器生成指定图像 一、 基础配置 语言环境&#x…

功能测试与自动化测试详解

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 什么是自动化测试? 自动化测试是指利用软件测试工具自动实现全部或部分测试&#xff0c;它是软件测试的一个重要组成 部分&#xff0c;能完成许多手工测试无法实…

【C++】————智能指针

作者主页&#xff1a; 作者主页 本篇博客专栏&#xff1a;C 创作时间 &#xff1a;2024年8月20日 一&#xff0c;什么是智能指针 在C中没有垃圾回收机制&#xff0c;必须自己释放分配的内存&#xff0c;否则就会造成内存泄露。解决这个问题最有效的方法是使用智能指针&…

传染病防控宣传小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;防控知识管理&#xff0c;医院信息管理&#xff0c;健康上报管理&#xff0c;医疗捐赠管理&#xff0c;捐赠信息管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首…

力扣面试经典算法150题:买卖股票的最佳时机 II

买卖股票的最佳时机 II 今天的题目是力扣面试经典150题中的数组的中等难度题&#xff1a;买卖股票的最佳时机 II。 题目链接&#xff1a;https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/description/?envTypestudy-plan-v2&envIdtop-interview-150 问…

EfficientFormer 系列算法

1. EfficientFormer V1 模型 论文地址&#xff1a;https://proceedings.neurips.cc/paper_files/paper/2022/file/5452ad8ee6ea6e7dc41db1cbd31ba0b8-Paper-Conference.pdf EfficientFormer V1 基于 ViT 的模型中使用的网络架构和具体的算子&#xff0c;找到端侧低效的原因。然…

深入剖析资产负债率与净资产收益率,掌握财务报表解读技巧

一、概述 财务报表中蕴含了丰富的信息&#xff0c;如果我们在解读时没有清晰的思路&#xff0c;忽略重点&#xff0c;就很容易被庞杂的数据搞得晕头转向。本文将从几个关键指标出发&#xff0c;包括资产负债率的分析、净资产收益率的解读&#xff0c;以及如何计算销售复合增长…

企业高性能web服务器——nginx

一、web基础介绍 Apache 和 Nginx 是当今为互联网提供动力的最流行的Web 服务器。 1.1、apache服务器 1.1.1、Apache prefork 模型 预派生模式&#xff0c;有一个主控制进程&#xff0c;然后生成多个子进程&#xff0c;使用select模型&#xff0c;最大并发1024每个子进程有一…

萌啦数据ozon怎么用,萌啦数据ozon使用教程

在跨境电商的浩瀚蓝海中&#xff0c;Ozon作为俄罗斯及独联体地区领先的电商平台&#xff0c;正吸引着越来越多中国卖家的目光。而“萌啦数据”作为专为跨境电商卖家打造的数据分析工具&#xff0c;其针对Ozon平台的功能更是让众多商家如虎添翼。今天&#xff0c;我们就来详细探…

后悔和父母出游的年轻人,正在计划带宠物旅行

文 | 螳螂观察 作者 | 青月 美编 |赵倩 相比于和父母一起出门远游&#xff0c;现在越来越多的95后“铲屎官”似乎更愿意和自家的宠物们组“旅游搭子”。 这听起来可能有些刺耳&#xff0c;但其实是当下很多年轻人的心声。 “带父母一起去北京玩&#xff0c;本来打算第二天…

【 每日一题 | 计算机网络】定长子网划分

重要知识点讲解 我们首先需要了解一下无分类CIDR的编址格式x.x.x/24&#xff0c;表示有24位的网路号&#xff0c;那么相应的主机号为32-248位子网掩码&#xff08;很重要&#xff09;&#xff0c;用来表示IP地址中标识网络号以及子网号的&#xff0c;也就是说如果要进行子网划…