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

简介: 嵌入式面试笔试刷题(day10)

前言

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

一、数组和链表的区别

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 包)进行传输。

每个数据报都有自己的头部信息,包括源端口、目标端口和长度等,用于标识和组装数据。

数据报发送时不保证顺序和可靠性,接收方无法确保接收到的数据报的顺序和完整性。

总结

本篇文章就讲解到这里。


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
6月前
|
SQL Java
java面试题笔试常见选择题大全含答案
java面试题笔试常见选择题大全含答案
|
2月前
|
C语言
经典面试题:嵌入式系统中经常要用到无限循环,怎么样用C编写死循环呢
在嵌入式系统开发中,无限循环常用于持续运行特定任务或监听事件。使用C语言实现死循环很简单,可以通过`while(1)`或`for(;;)`的结构来编写。例如:`while (1) { /* 循环体代码 */ }`,这种写法明确简洁,适用于需要持续执行的任务或等待中断的场景。
|
7月前
|
存储 算法 安全
【刷题】 leetcode 面试题 01.06 字符串压缩
来看效果: 非常好!!!过啦!!!
68 5
【刷题】 leetcode 面试题 01.06 字符串压缩
|
7月前
|
算法
【刷题】 leetcode 面试题 08.05.递归乘法
递归算法是一种在计算机科学和数学中广泛应用的解决问题的方法,其基本思想是利用问题的自我相似性,即将一个大问题分解为一个或多个相同或相似的小问题来解决。递归算法的核心在于函数(或过程)能够直接或间接地调用自身来求解问题的不同部分,直到达到基本情况(也称为基础案例或终止条件),这时可以直接得出答案而不必再进行递归调用。
71 4
【刷题】 leetcode 面试题 08.05.递归乘法
|
5月前
|
传感器 芯片
嵌入式通信协议全解析:SPI、I²C、UART详解(附带面试题)
通信是指人与人或人与自然之间通过某种行为或媒介进行的信息交流与传递。从广义上来说,通信是指需要信息的双方或多方在不违背各自意愿的情况下采用任意方法、任意媒质,将信息从某方准确安全地传送到另方。在出现电波传递通信后,通信被单一解释为信息的传递,是指由一地向另一地进行信息的传输与交换,其目的是传输消息。通信方式包括利用“电”来传递消息的电信,这种通信具有迅速、准确、可靠等特点,且几乎不受时间、地点、空间、距离的限制,因而得到了飞速发展和广泛应用。
1111 0
|
7月前
|
存储 算法 C语言
从C语言到C++_39(C++笔试面试题)next_permutation刷力扣
从C语言到C++_39(C++笔试面试题)next_permutation刷力扣
65 5
|
7月前
|
网络安全 Windows
PentestGPT-V0(1),网络安全面试题2024笔试
PentestGPT-V0(1),网络安全面试题2024笔试
|
7月前
|
算法 Java C++
刷题两个月,从入门到字节跳动offer丨GitHub标星16k+,美团Java面试题
刷题两个月,从入门到字节跳动offer丨GitHub标星16k+,美团Java面试题
|
7月前
|
消息中间件 前端开发 Java
java面试刷题软件kafka和mq的区别面试
java面试刷题软件kafka和mq的区别面试
|
7月前
|
监控
嵌入式面试题:数据传输单工,半双工,全双工之间的区别
嵌入式面试题:数据传输单工,半双工,全双工之间的区别
78 0