嵌入式面试笔试刷题(day10)

举报
yd_274589494 发表于 2023/08/28 17:56:08 2023/08/28
【摘要】 @TOC 前言本篇文章继续讲解笔试和面试。 一、数组和链表的区别1.内存:数组使用连续的内存块来存储元素,每个元素在内存中占据固定大小的空间。这样的存储方式使得数组的访问速度快,通过索引即可直接访问任意位置的元素。链表使用分散的内存块来存储元素,每个元素(节点)在内存中可以位于任意位置。每个节点包含了存储数据的部分和指向下一个节点的指针。这种存储方式使得插入和删除操作更加灵活,但访问元素需要...

@TOC


前言

本篇文章继续讲解笔试和面试。

一、数组和链表的区别

1.内存:

数组使用连续的内存块来存储元素,每个元素在内存中占据固定大小的空间。这样的存储方式使得数组的访问速度快,通过索引即可直接访问任意位置的元素。

链表使用分散的内存块来存储元素,每个元素(节点)在内存中可以位于任意位置。每个节点包含了存储数据的部分和指向下一个节点的指针。这种存储方式使得插入和删除操作更加灵活,但访问元素需要遍历整个链表。

2.性能:

数组的访问速度快,通过索引可以直接访问任意位置的元素,时间复杂度为 O(1)。但是在插入和删除元素时,需要移动其他元素来保持连续性,导致时间复杂度为 O(n)。

链表在插入和删除元素时,只需要修改指针的指向,所以插入和删除的时间复杂度可以达到 O(1)。但是在访问元素时,需要遍历链表,时间复杂度为 O(n)。

3.操作复杂度:

数组的插入和删除操作需要移动其他元素,因此操作复杂度较高。在插入和删除元素的场景较多时,数组性能不如链表。

链表的插入和删除操作只需要改变指针的指向,操作复杂度较低。在需要频繁执行插入和删除操作的场景中,链表更加适合。

数组适合于需要频繁访问元素的场景,而链表适用于需要频繁插入和删除元素的场景。

二、什么是内存对齐

内存对齐是指在存储数据时,将数据按照一定规则放置在内存中的过程。

三、IIC的时序

1.开始信号(Start Signal):主设备发送一个低电平的信号,表示即将开始通信。

2.从设备地址(Device Address):主设备发送从设备的地址,主要用于指定与之通信的从设备。地址包括一个7位的从设备地址和读/写位。读/写位用于指示主设备是要进行读操作还是写操作。

3.应答信号(Acknowledge Signal):每次发送地址或数据后,发送方会释放SDA线(串行数据线),然后接收方会发送应答位。如果接收到的正确数据,则发送一个低电平的应答(ACK)信号;如果接收到的数据有误或不需要发送应答,则发送一个高电平的非应答(NACK)信号。

4.读或写操作(Read or Write Operation):主设备通过传输数据来完成读或写操作。在读操作中,从设备向主设备发送数据;在写操作中,主设备向从设备发送数据。

5.停止信号(Stop Signal):主设备发送一个高电平的停止信号,表示通信结束。

四、static作用

static关键字在C语言中可以用于静态变量、静态函数、静态全局变量和静态局部变量。它们的具体作用包括控制变量的生命周期、作用域以及对其他文件的可见性。

五、查看tty设备的方法

使用ls /dev/tty*
在这里插入图片描述

六、查找指定文件命令

1.使用find命令:

find <路径> -name <文件名>

<路径>:指定要搜索的起始路径。可以是根目录 /,也可以是当前目录 .,或者其他指定的目录。
-name <文件名>:指定要查找的文件名。可以使用通配符进行模糊匹配,如 * 表示任意字符。

2.使用locate命令:

locate <文件名>

<文件名>:指定要查找的文件名。与find不同,locate命令使用基于数据库的搜索,因此速度较快。

七、三次握手和四次挥手

1.三次握手

1.第一次握手(SYN):客户端向服务器发送一个带有 SYN(同步)标志的包,用于请求建立连接。发送方选择一个初始的序列号(Sequence Number)作为起始值,并将 SYN 标志置为1。

2.第二次握手(SYN+ACK):服务器收到客户端的 SYN 包后,确认收到,并向客户端发送一个带有 SYN 和 ACK(应答)标志的包。服务器也会为自己选取一个初始的序列号,并将客户端的序列号加1作为确认号(Acknowledgment Number)。

3.第三次握手(ACK):客户端收到服务器的 SYN+ACK 包后,向服务器发送一个带有 ACK 标志的包作为确认。该包中的序列号被设置为收到的确认号加1。

在这里插入图片描述

2.四次挥手

1.第一步(FIN1):
主动关闭连接的一方(称为发起者)向对方发送一个带有 FIN(Finish)标志的 TCP 报文段。
发起者不再发送数据,但仍可以接收对方发送的数据。

2.第二步(ACK1):
接收到 FIN 的一方(称为被动关闭者)收到 FIN 报文后,向发起者发送一个确认应答(ACK)报文,确认已收到 FIN。
被动关闭者仍可以发送剩余数据,直到发送和接收缓冲区中的数据都被传输完成。

3.第三步(FIN2):
被动关闭者发送一个带有 FIN 标志的报文段,表示它也希望关闭连接。
被动关闭者不再发送数据,但仍可以接收来自发起者的数据。

4.第四步(ACK2):
发起者接收到被动关闭者的 FIN 后,向被动关闭者发送一个确认应答,确认收到 FIN。
发起者等待一段时间,以确保对方收到确认应答。

在这里插入图片描述

八、半关闭状态

半关闭(Half-closed)状态是指在 TCP 连接中,一方关闭了它的输出流(发送数据),但仍然可以接收对方发送的数据。

九、字节流和数据报

字节流(TCP):

字节流是 TCP 中的传输方式,它将数据视为连续的字节流,没有明确的消息边界。
TCP 将数据划分为一个个的字节,并以无结构的方式在连接上进行传输。
发送方将数据以字节流的形式发送给接收方,接收方接收到字节后按照顺序重新组装成完整的数据。
具有可靠性和顺序性,TCP 通过序列号、确认号和重传机制来保证数据的可靠性和正确的顺序。

数据报(UDP):

数据报是 UDP 中的传输方式,它将数据视为独立的数据包,每个数据包之间是独立的。
UDP 将数据划分为一个个固定大小的数据报(通常称为 UDP 数据报或者 UDP 包)进行传输。
每个数据报都有自己的头部信息,包括源端口、目标端口和长度等,用于标识和组装数据。
数据报发送时不保证顺序和可靠性,接收方无法确保接收到的数据报的顺序和完整性。

总结

本篇文章就讲解到这里。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。