当前位置: 首页 > news >正文

C,数据结构,多进程线程,网络编程面试题总结

目录

1.指针数组和数组指针

2.结构体字节对齐

3.Tcp和Udp的区别

4.同步通信和异步通信的区别

5.多线程理解

6.大小端验证

7.互斥锁相关问题

8.共享内存特点

9.c中的指针

10.Gcc编译

11.Socket的了解

12.Ip地址和子网掩码如何决定网卡所在的网段

13.数据结构中栈与队列的区别

14.OSI七层模型和TCP四层模型

15.顺序表和链表的区别

16.三次握手和四次挥手

17.指针和指针变量分别指什么

18.共享内存和消息队列的优缺点


1.指针数组和数组指针

        1. 指针数组是一个数组,里面存放的是指针;

        2. 数组指针是一个指针,指向一个数组;

        3. 指针数组常用于函数参数,特别是传递多个指针给函数时,而数组指针常用于处理动态分配的数组;

        4. 指针数组在栈上分配内存,而数组指针在堆上分配内存。

2.结构体字节对齐

        1. 结构体里面的每个成员,要以自己的所占字节数对齐一次

        2. 所有成员分配完毕后,32位系统要用最大字节跟4比较谁小,然后拿去对齐;64位系统要用最大字节跟8比较谁小,然后拿去对齐,

3.Tcp和Udp的区别

        1. tcp和udp都是传输层协议。

        2. TCP是稳定的,而UDP是快速的;

        3. TCP是面向有连接,数据无丢失、无误、无重复,而UDP是面向无连接的,数据可能会丢失,重复,不可靠,尽自己最大努力传输;

        4. TCP传输速率慢,UDP传输速率快;

        5. TCP沾包,UDP不沾包;

        6. TCP适合传输质量高或者数据多的通信,UDP只适合小尺寸的通信。

4.同步通信和异步通信的区别

        1. 同步通信效率高,异步通信效率低;

        2. 同步通信误差小,比较复杂,而异步通信简单,允许有误差;

5.多线程理解

        1. 线程也称轻量版的进程,是进程的一个执行路径。

        2. 线程是任务调度的最小单位。

        3. 每个进程都至少有一个线程。

        4. 线程操作消耗内存较小,效率较高。

        5. 线程还有同步互斥机制:对于线程同步问题,有两个机制完成:无名信号量和条件变量;

                                                对于线程互斥问题,采用互斥锁来解决。

        6. 线程允许多并发执行,多个线程可以共用一个进程

        7. 多个线程释放资源时,可能会发生死锁。

6.大小端验证

        1. 大端是地址低位存储数据高位,小端是地址低位存储数据低位;

        2. 用指针和共用体来验证;

        3. 网络字节序是大端存储的字节序列,可以使用主机字节序转换成网络字节序的方法验证大小端。

7.互斥锁相关问题

        1. 互斥锁是一个临界资源,该临界资源在同一时刻被一个线程所占有,当另一个线程想获取时,该线程将会被堵塞,等待前一个线程释放该临界资源,下个线程才可以去占有。

        2. 当多个互斥锁都被不同的线程占有时,很容易发生死锁。

8.共享内存特点

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

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

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

9.c中的指针

        指针是一种特殊的变量,它存储的是另一个变量的内存地址。指针提供了一种间接访问内存的方式,使得程序能够动态地操作数据。

        指针有:指针数组,数组指针,指针函数,函数指针,野指针,空指针,指针和内存分配。

10.Gcc编译

1. 预处理:gcc -E,处理源代码文件中的预处理指令

2. 编译:gcc -S,将预处理后的源代码转换成汇编语言

3. 汇编:gcc -C,将汇编代码转换成机器代码

4. 链接:gcc -o,将一个或多个目标文件链接在一起,生成可执行文件。

11.Socket的了解

        1、sfd = socket(); //创建一个用于连接的套接字文件描述符

        2、bind(); //为服务器套接字绑定ip地址和端口号,为了让客户端额能够找到服务器

        3、listen(); //将服务器套接字设置成被动监听状态,用于接收客户端的连接请求

        4、newfd = accept(); //阻塞等待客户端的连接请求,如果有客户端发来连接请求,创建一个新的用于通信的套接字文件描述符

        5、while(1) { send\recv\read\write; //数据收发工作 }

        6、close(); //关闭套接字、关闭监听

12.Ip地址和子网掩码如何决定网卡所在的网段

IP地址&子网掩码

13.数据结构中栈与队列的区别

        1. 栈和队列都是操作受限的线性表;

        2. 栈是先进后出的,队列是先进先出的;

        3. 栈是在栈顶进行插入和删除的,而队列实在队尾进行插入,队头进行删除的;

14.OSI七层模型和TCP四层模型

物理层,数据链路层,网络层,传输层,会话层,表示层,应用层;

网络接口层,网际层,传输层,应用层。

15.顺序表和链表的区别

        1. 顺序表通常使用数组实现,链表通常使用若干个节点组成;

        2. 顺序表访问速度较快,链表访问速度较慢;

        3. 顺序表插入元素或删除元素需要移动大量元素,链表只需改变它的相邻节点指针就可以了;

        4. 顺序表通常在栈上分配内存,而链表在堆上分配内存;

        5. 顺序表实现相对简单,链表实现相对复杂;

16.三次握手和四次挥手

        第一次握手:客户端向服务器发送一个SYN报文,并进入SYN_SENT状态,请求建立连接;

        第二次握手:服务器收到请求后,想客户端发送一个SYN-ACK报文,,并进入SYN_RCVD状态,同意连接请求;

        第三次握手:客户端收到后,想服务器发送AVK报文,此时连接成功。

        第一次挥手:主动端向被动端发送FIN报文,进入FIN-WAIT_1状态;

        第二次挥手:被动端收到后,发送ACK报文,进入CLOKSE_WAIT状态。主动方接收到ACK报文后进入FIN-WAIT_2状态。如果数据未发送完毕,则继续发送直到完毕;

        第三次挥手:被动端向主动端发送FIN报文,进入LAST_ACK状态;

        第四次挥手:主动端收到后,回复一个ACK报文,被动端收到后断开连接。

17.指针和指针变量分别指什么

        1. 指针是一种数据类型,而指针变量是这种类型的实例;

        2. 指针变量存储的是一个内存地址,而指针定义了指针变量可以存储哪一种指针类型的内存地址;

18.共享内存和消息队列的优缺点

共享内存: 

        优点:提供了最快的IPC之一,实施起来相对方便,访问速度快;

        缺点:需要使用额外的同步机制来避免竞态条件和数据不一致,不当的使用可能使内存泄漏。

消息队列:

        优点:提供了数据封装,每个消息都可以包含不同的数据和优先级;本身提供了同步机制,避免竞态条件;

        缺点:比共享内存更复杂;消息可能会延迟;对资源有限制。

相关文章:

C,数据结构,多进程线程,网络编程面试题总结

目录 1.指针数组和数组指针 2.结构体字节对齐 3.Tcp和Udp的区别 4.同步通信和异步通信的区别 5.多线程理解 6.大小端验证 7.互斥锁相关问题 8.共享内存特点 9.c中的指针 10.Gcc编译 11.Socket的了解 12.Ip地址和子网掩码如何决定网卡所在的网段 13.数据结构中栈与…...

【Cesium学习】着色器详解【待进一步总结】

在Cesium中,drawCommand 和 CustomShader 是与渲染管线和自定义渲染效果相关的两个重要概念,但它们各自有不同的作用和应用场景。下面我将分别详解这两个概念。 drawCommand drawCommand 是 Cesium 渲染引擎内部使用的一个概念,它代表了单个…...

【3】静态路由(Static routing)

目录 一、有类路由和无类路由 二、路由的基本知识 三、配置 路由的组成: 四、特殊——默认路由 五、优点和缺点 六、实验 数据通信是双向的,路由器不同的接口属于不同的广播域和冲突域 一、有类路由和无类路由 有类路由:有ABC类别之…...

阿里声音项目Qwen2-Audio的部署安装,在服务器Ubuntu22.04系统——点动科技

阿里声音项目Qwen2-Audio的部署安装,在服务器Ubuntu22.04系统——点动科技 一、ubuntu22.04基本环境配置1.1 更换清华Ubuntu镜像源1.2 更新包列表:2. 安装英伟达显卡驱动2.1 使用wget在命令行下载驱动包2.2 更新软件列表和安装必要软件、依赖2.2 卸载原有…...

RAG(检索增强生成)

RAG (Retrieval-Augmented Generation) 是一种自然语言处理的模型架构,主要用于生成性任务,如文本生成、对话系统等。RAG 将检索和生成两个任务结合起来,以提高生成结果的质量和相关性。 RAG 模型的主要思想是通过检索阶段获取相关的上下文信…...

AcWing848有向图的拓扑排序

拓扑排序的流程: 插入(a,b),表示a->b的关系,调用add(a,b),每次吧b的入度1,d[b]; 然后调用topsort,返回1表示存在拓扑序列,返回0表示不存在拓扑序列。判断是否存在拓扑…...

猫咪掉毛很严重,家中猫毛该如何清理?快来看资深铲屎官经验分享

想必铲屎官们都见识过换毛季的威力。拿我家举例,养了一只长毛,一只短毛,打扫完不用半天,家里就能重新出现不少猫毛。严重的时候,每天都要扫地机器人扫三次,拖一次。 最近两天外出,回来给它们梳…...

Midjourney进阶-反推与优化提示词(案例实操)

​ Midjourney中提示词是关键,掌握提示词的技巧直接决定了生成作品的质量。 当你看到一张不错的图片,想要让Midjourney生成类似的图片,却不知道如何描述画面撰写提示词,这时候Midjourney的/describe指令,正是帮助你推…...

大公报发表欧科云链署名文章:发行港元稳定币,建Web3.0新生态

欧科云链研究院资深研究员蒋照生近日与香港科技大学副校长兼香港Web3.0协会首席科学顾问汪扬、零壹智库创始人兼CEO柏亮,在大公报发布联合署名文章 ——《Web3.0洞察 / 发行港元稳定币,建Web3.0新生态》,引发市场广泛讨论。 文章就香港稳定币…...

Mybatis的一些常用知识点(面试)

什么是MyBatis? Mybatis 是⼀个半 ORM(对象关系映射)框架,它内部封装了 JDBC。 它让开发者在开发时只需要关注 SQL 语句本身,不需要花费精⼒去处理加载驱动、创建连接等繁杂的过程 缺点: SQL语句的编写⼯作量较⼤ SQ…...

stm32—ADC

1. 什么是ADC 生活中我们经常会用到ADC这种器件,比如说,当我们在使用手机进行语音通信时,ADC器件会将我们的声信号转换为电信号 (模拟信号 ---> 数字信号) 模拟信号: 模拟信号是指用连续变化的物理量表示的信息,其信…...

【微信小程序】吐槽生态之云开发服务端能力不足

回想起来,笔者开发小程序的经历也有4年多了,以前因为技术积累接触不到比较深层次的东西,也不理解软件生态这个概念,现在开发小程序的过程中,越来越觉得很多生态微信的进步空间很大。 问题引入 比如说,在迭…...

AnimateDiff论文解读

GitHub - Kosinkadink/ComfyUI-AnimateDiff-Evolved: Improved AnimateDiff for ComfyUI and Advanced Sampling Support 视频编码 定义: 首先,将视频数据转换为一系列的潜变量代码(latent codes)。这是通过一个预训练的自动编码器(auto-encoder)来完成的。操作: …...

C/C++控制台贪吃蛇游戏的实现

🚀欢迎互三👉:程序猿方梓燚 💎💎 🚀关注博主,后期持续更新系列文章 🚀如果有错误感谢请大家批评指出,及时修改 🚀感谢大家点赞👍收藏⭐评论✍ 一、…...

Linux 升级安装 Weblogic-补丁!

版本: RedHat 6.5 Weblogic 10.3.6.0 ----------------------------------------------------------------- 1.查看当前 weblogic 补丁版本 cd /weblogic/utils/bsu/ ./bsu.sh -prod_dir/weblogic/wlserver_10.3/ -statusapplied -verbose -view 2.卸载旧补丁…...

苍鹰来啦!快来看呀!NGO-BiTCN-BiGRU-Attention北方苍鹰算法优化多重双向深度学习回归预测

苍鹰来啦!快来看呀!NGO-BiTCN-BiGRU-Attention北方苍鹰算法优化多重双向深度学习回归预测 目录 苍鹰来啦!快来看呀!NGO-BiTCN-BiGRU-Attention北方苍鹰算法优化多重双向深度学习回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实…...

关于WebSocket必知必会的知识点

什么是WebSocket WebSocket是一种网络传输协议,可以在单个TCP连接上进行全双工通信,位于OSI模型的应用层。 WebSocket使得客户端和服务器之间的数据交换变得更加简单,服务器可以主动向客户端发送消息。在WebSocket API中,浏览器和…...

Go 1.19.4 Sort排序进阶-Day 12

1. 结构体(切片)排序 结构体返回的是切片。 之前学习了sort.Ints()和sort.Strings(),使用这两个sort库下面的方法,可以对int和strings进行排序。 那如果我要对自定义类型进行排序,怎么办,sort库没提供&…...

python-求距离(赛氪OJ)

[题目描述] 给你一个 1−>n 的排列,现在有一次机会可以交换两个数的位置,求交换后最小值和最大值之间的最大距离是多少?输入格式: 输入共两行。 第一行一个数 n 。 第二行 n 个数表示这个排列。输出格式: 输出一行一…...

《第二十一章 传感器与定位 - 传感器应用》

《第二十一章 传感器与定位 - 传感器应用》 在当今的移动应用开发中,充分利用设备的传感器能够为用户带来更加智能和便捷的体验。本章将重点探讨加速度传感器、方向传感器和光线传感器的应用。 一、传感器应用的重要性 随着智能手机和移动设备的普及,传感…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...

免费数学几何作图web平台

光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...

VisualXML全新升级 | 新增数据库编辑功能

VisualXML是一个功能强大的网络总线设计工具,专注于简化汽车电子系统中复杂的网络数据设计操作。它支持多种主流总线网络格式的数据编辑(如DBC、LDF、ARXML、HEX等),并能够基于Excel表格的方式生成和转换多种数据库文件。由此&…...

【UE5 C++】通过文件对话框获取选择文件的路径

目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 ,这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器,右键点击 .uproject 文件,选择 "Generate Visual Studio project files",重…...