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 个数表示这个排列。输出格式: 输出一行一…...
《第二十一章 传感器与定位 - 传感器应用》
《第二十一章 传感器与定位 - 传感器应用》 在当今的移动应用开发中,充分利用设备的传感器能够为用户带来更加智能和便捷的体验。本章将重点探讨加速度传感器、方向传感器和光线传感器的应用。 一、传感器应用的重要性 随着智能手机和移动设备的普及,传感…...
【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...
佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
iview框架主题色的应用
1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题,无需引入,直接可…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
uniapp 实现腾讯云IM群文件上传下载功能
UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...
uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)
UniApp 集成腾讯云 IM 富媒体消息全攻略(地理位置/文件) 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型,核心实现方式: 标准消息类型:直接使用 SDK 内置类型(文件、图片等)自…...
五子棋测试用例
一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏,有着深厚的文化底蕴。通过将五子棋制作成网页游戏,可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家,都可以通过网页五子棋感受到东方棋类…...
