2024.8.20 作业

2024-08-21 03:52
文章标签 2024.8 20 作业

本文主要是介绍2024.8.20 作业,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

思维导图:

面试题练习:

        1、C语言中指针数组和数组指针的区别

        2、结构体字节对齐的原理

        3、TCP和UDP的区别

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

        5、多线程的理解

        6、大小端验证

        7、互斥锁

        8、共享内存特点

        9、C语言的指针

        10、gcc编译

        11、socket套接字

        12、HTTP协议和TCP协议之间的关系

        13、IP地址和子网掩码如何决定网卡所在网段

        14、计算机网络中的OSI七层模型和TCP/IP四层体系结构

        15、数据结构栈和队列的区别

        16、数据结构顺序表和链表的区别

        17、TCP通信三次握手四次挥手

        18、指针和指针变量

        19、共享内存和消息队列的优缺点

        20、结构体中一个char一个int结构体字节长度是多少


思维导图:

面试题练习:

        1、C语言中指针数组和数组指针的区别

        答:指针数组本质上是一个数组,数组中的元素都是指针,数组中可以存储很多指针,这些指针的数据类型一致。数组指针本质上是一个指针,这个指针指向了一个数组

        2、结构体字节对齐的原理

        答:结构体成员在内存地址为其字节大小的倍数的位置开始,不足则补充,各自对齐后还会根据最大字节数的成员的字节数的倍数对齐,另外,也会根据不同的要求额外进行对齐

        3、TCP和UDP的区别

        答:TCP通信时需要连接,数据完整性高、有序性高,但是传输效率不好保证,遇到网络不好等因素就会难以通信,传输速度也更慢,能够根据网络状况调整传输的速度,具有错误恢复机制,常用于传输要求可靠的程序。

                UDP无需连接,但数据完整性难以保证,数据序列也可能是乱的,传输速度相对较快,数据发送可以保持最大速度,没有错误回复机制,常用于实时性要求的程序

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

        答:同步通信的发送方接收方数据传输保持同步,必须确认收到数据才能进行后续操作,基本不需要缓冲区,效率偏低,错误处理也比较简单,CPU占用率较高,使用于需要提高数据完整性和可靠性的环境

               异步通信发送方接收方不用等待对方的数据即可发送数据,需要较大缓冲区等待对方处理数据,效率更高,错误处理更复杂,CPU占用率较低,适用于实时性要求高的环境

        5、多线程的理解

        答:多线程是一种编程技术,可以在同一时间执行多个任务,可以提高程序的效率,多线程允许程序并发进行,也可以并行执行,同一个进程内线程间共享内存和资源,但也要创建和管理线程,多个线程存在时会有同步互斥机制,需要使用互斥锁、信号量、条件变量等来控制,线程间等待释放资源时也可能会发送死锁现象,需要关闭线程等操作来解决

        6、大小端验证

        答:通过共用体判断,创建一个共用体,包含一个int类型的变量和一个char类型的变量,赋予int变量一个特定值,通过char检测对应字节

               通过指针判断,创建一个int*类型的指针并初始化,将其地址转为char*类型,判断指针的值来得知大小端

        7、互斥锁

        答:互斥锁本质上是一种线程同步机制,作用是防止多个线程同时访问同一个共享资源,使用互斥锁时需要先锁定防止其他线程访问,访问完后需要解锁,以便别的线程访问,一个锁尝试锁定另一个已经锁定的锁时,可能会发送死锁,这个机制适用于保护多个线程使用的共享资源

        8、共享内存特点

        答:共享内存允许多进程线程直接访问同一块内存,效率更高,需要同步机制,生命周期需要明确管理,适用于需要高速数据交换的环境,一般和信号量集一起使用

        9、C语言的指针

        答:指针存储了变量在内存的地址,可以通过指针直接访问操作内存,指针声明时需要指定变量类型,也需要初始化才能使用,*操作符可以访问指针所指向的内存地址存储的值,&运算符可以获取指针指向的地址,指针偏移时指向的地址会按照数据类型的字节大小增加,指针指向数组时,数组名通常是指向首元素的指针,可以创建一个指针来存储指针,也可以创建一个指针来指向函数,指针可以转换数据类型,也可以比较指向的地址,指针的操作不当会造成内存泄漏、野指针、缓冲区一处的问题

        10、gcc编译

        答:gcc是一种编译器,常用于编译C语言,用来生成中间文件和可执行文件,分布的编译包括预处理、编译、汇编、链接,预处理阶段处理条件编译、展开头文件、删除注释,编译阶段将程序进行语法分析和语义分析,生成汇编程序,汇编阶段将汇编程序编译生成目标二进制程序,链接阶段将多个目标程序与相关库进行链接,生成可执行文件

        11、socket套接字

        答:套接字是进程间通信的端点,本质上是一种文件描述符,每个套接字与唯一的地址绑定,面向TCP时需要连接才能进行传输,同时也需要监听对方的连接,面向UDP时不用连接,可以设置阻塞状态,socket函数返回的文件描述符开辟了两个缓存区用于传输和接收

        12、HTTP协议和TCP协议之间的关系

        答:HTTP是应用层协议,TCP是传输层协议,两者的联系是BS模型,HTTP需要TCP来传输其封装的数据,TCP也能保证HTTP相关的数据的完整和正确

        13、IP地址和子网掩码如何决定网卡所在网段

        答:子网掩码是32位无符号整数,IP地址&子网掩码得到的结果就是网卡所在的网段

        14、计算机网络中的OSI七层模型和TCP/IP四层体系结构

        答:OSI七层模型包括物理层、数据链路层、网络层、运输层、会话层、表示层、应用层

               TCP/IP四层体系结构包括网络接口层、网际层、运输层、应用层

        15、数据结构栈和队列的区别

        答:栈和队列都是操作受限的线性表,栈的特点是先进后出,队列的特点是先进先出,栈的操作都是同一端进行,队列的操作是在异端进行

        16、数据结构顺序表和链表的区别

        答:顺序表和链表都是根据存储形式区分的线性表,顺序表是顺序存储的线性表,下标相邻的元素物理存储地址也相邻,链表是链式存储的线性表,节点相邻的元素物理存储地址不一定相邻,顺序表的元素数量受数组范围和内存空间最大连续内存空间影响,而链表仅受内存空间剩余总内存大小影响,顺序表可以通过下标快速定位对应元素,而链表需要不断通过指针导向下一个节点最终找到对应元素,顺序表关闭只需要释放本身即可,而链表需要先释放所有节点,再释放本身

        17、TCP通信三次握手四次挥手

        答:客户护短发送SYN包,进入SYN_SENT状态;服务器接收SYN包并发送ACK包和SYN包,进入SYN_RCVD状态;客户端接收SYN包和ACK包,进入establish状态,发送ACK包,服务器也进入establish状态

               主动关闭方发送FIN包,进入FIN_WAIT_1状态;被动方接收FIN包,发送ACK包,进入CLOKSE_WAIT状态,主动方接收ACK包,进入FIN_WAIT_2状态,发送完所有数据;被动方发送FIN包,进入LAST_ACK状态;主动方接收FIN包,发送ACK包,被动方接收ACK包,关闭连接

        18、指针和指针变量

        答:指针是内存地址编号

               指针变量是存储指针的变量

        19、共享内存和消息队列的优缺点

        答:共享内存通信速度快,直接访问内存实现多个进程间通信,但是没有内置的同步机制,可能出现数据不一致的问题,编程复杂度高

               消息队列可以发送具有特定格式和优先级的消息,独立于发送和接收进程,能够保留信息,但是系统复杂度提高,需要处理消息顺序性、丢失等问题,可能引入延迟

        20、结构体中一个char一个int结构体字节长度是多少

        答:8个,int对齐结果是在char和int间插入三个字节

这篇关于2024.8.20 作业的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1092042

相关文章

作业提交过程之HDFSMapReduce

作业提交全过程详解 (1)作业提交 第1步:Client调用job.waitForCompletion方法,向整个集群提交MapReduce作业。 第2步:Client向RM申请一个作业id。 第3步:RM给Client返回该job资源的提交路径和作业id。 第4步:Client提交jar包、切片信息和配置文件到指定的资源提交路径。 第5步:Client提交完资源后,向RM申请运行MrAp

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

GIS图形库更新2024.8.4-9.9

更多精彩内容请访问 dt.sim3d.cn ,关注公众号【sky的数孪技术】,技术交流、源码下载请添加微信:digital_twin123 Cesium 本期发布了1.121 版本。重大新闻,Cesium被Bentley收购。 ✨ 功能和改进 默认启用 MSAA,采样 4 次。若要关闭 MSAA,则可以设置scene.msaaSamples = 1。但是通过比较,发现并没有多大改善。

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

【JavaScript】LeetCode:16-20

文章目录 16 无重复字符的最长字串17 找到字符串中所有字母异位词18 和为K的子数组19 滑动窗口最大值20 最小覆盖字串 16 无重复字符的最长字串 滑动窗口 + 哈希表这里用哈希集合Set()实现。左指针i,右指针j,从头遍历数组,若j指针指向的元素不在set中,则加入该元素,否则更新结果res,删除集合中i指针指向的元素,进入下一轮循环。 /*** @param

Java高级Day38-网络编程作业

112.网络编程作业 //1.使用字符流的方式,编写一个客户端程序和服务器端程序//2.客户端发送"name",服务器端接收到后,返回"我是nova"//3.客户端发送"hobby",服务器端接收到后,返回"编写java程序"//4.不是这两个问题,回复"你说啥呢"​​===============//客户端//===============public class SocketT

【语句】如何将列表拼接成字符串并截取20个字符后面的

base_info = "".join(tree.xpath('/html/head/script[4]/text()'))[20:] 以下是对这个语句的详细讲解: tree.xpath('/html/head/script[4]/text()')部分: tree:通常是一个已经构建好的 HTML 文档树对象,它是通过相关的 HTML 解析库(比如 lxml)对 HTML 文档进行解

0906作业+思维导图梳理

一、作业: 1、创捷一个类似于qq登录的界面 1)源代码 #include "widget.h"#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget){ui->setupUi(this);//QPushbutton:登录、退出this->join = new QP

C++20中支持的非类型模板参数

C++20中支持将类类型作为非类型模板参数:作为模板参数传入的对象具有const T类型,其中T是对象的类型,并且具有静态存储持续时间(static storage duration)。       在C++20之前,非类型模板参数仅限于:左值引用类型、整数类型、指针类型、指向成员类型的指针、枚举类型、std::nullptr_t。在C++20中,它已扩展并支持:浮点类型、字面量类类

2024.9.6 作业

1> 手写unique_ptr指针指针 #include <iostream>using namespace std;template <typename T>class my_unique_ptr{public:explicit my_unique_ptr(T *p = nullptr) noexcept // 构造函数{ptr = p;}~my_unique_ptr() noexcep