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

6万字嵌入式最全八股文面试题大全及参考答案(持续更新)

目录

冒泡排序算法的平均时间复杂度和最坏时间复杂度分别是多少?在什么情况下使用冒泡排序较为合适?

选择排序算法是稳定的排序算法吗?为什么?

插入排序在近乎有序的数组中表现如何?为什么?

快速排序的基本思想是什么?它在最坏情况下的时间复杂度是多少?

归并排序的空间复杂度是多少?如何优化归并排序的空间复杂度?

希尔排序相较于直接插入排序有什么优势?

堆排序的过程及其时间复杂度和空间复杂度

如何判断一个排序算法是否是原地排序算法?冒泡排序、选择排序、插入排序中哪些是原地排序算法?

给出一个数组,使用快速排序算法对其进行排序,写出关键步骤和代码框架

解释一下归并排序中合并两个已排序子数组的过程

对于大规模数据排序,快速排序和归并排序哪个更适用?为什么?

排序算法的稳定性在什么场景下非常重要?举例说明

实现一个冒泡排序的优化版本,避免对已经有序的部分进行不必要的比较

插入排序和希尔排序在最坏情况下的性能差异是什么?

分析堆排序在嵌入式系统中的适用性和局限性

比较一下快速排序和堆排序的时间复杂度和空间复杂度,并说明各自的优缺点

给出一个乱序数组,使用归并排序算法将其排序,写出完整代码

如何在嵌入式系统有限的资源条件下选择合适的排序算法?

描述一下计数排序的基本原理和适用场景

基数排序对于什么样的数据特征效果较好?

进程线程的状态转换图 什么时候阻塞,什么时候就绪

父进程、子进程的关系以及区别

一个进程可以创建多少线程,和什么有关

进程的空间模型

什么是进程上下文、中断上下文

并发,同步,异步,互斥,阻塞,非阻塞的理解

什么是线程同步和互斥

线程同步与阻塞的关系?同步一定阻塞吗?阻塞一定同步吗?

孤儿进程、僵尸进程、守护进程的概念

正确处理僵尸进程的方法

如何创建守护进程

extern”C” 的作用

头文件声明时加 extern 定义时不要加 因为 extern 可以多次声明,但只有一个定义

函数参数压栈顺序,即关于__stdcall 和__cdecl 调用方式的理解

重写 memcpy()函数需要注意哪些问题

数组到底存放在哪里

char 和 int 之间的转换

C/C++ 内存相关

new 和 malloc 的区别

malloc 的底层实现

在 1G 内存的计算机中能否 malloc(1.2G)?为什么?

指针与引用的相同和区别;如何相互转换?

C 语言检索内存情况 内存分配的方式

const 常量和#define 的区别(编译阶段、安全性、内存占用等)

volatile 作用和用法

有常量指针 指针常量 常量引用 没有 引用常量

没有指向引用的指针,因为引用是没有地址的,但是有指针的引用

C/C++中变量的作用域

详细讲C++struct 和 class 的区别

详细讲C++继承和虚继承

详细讲C++多态的类,内存布局是怎么样的

详细讲C++被隐藏的基类函数如何调用或者子类调用父类的同名函数和父类成员变量

详细讲C++多态实现的三个条件、实现的原理

详细讲C++对拷贝构造函数 深浅拷贝 的理解 拷贝构造函数作用及用途?什么时候需要自定义拷贝构造函数?

详细讲C++析构函数可以抛出异常吗?为什么不能抛出异常?除了资源泄露,还有其他需考虑的因素吗?

详细讲C++什么情况下会调用拷贝构造函数(三种情况)

详细讲C++析构函数一般写成虚函数的原因

详细讲C++构造函数为什么一般不定义为虚函数

什么是C++纯虚函数

C++静态绑定和动态绑定的介绍

C++所有的构造函数

成员初始化列表的概念,为什么用成员初始化列表会快一些(性能优势)?

如何避免编译器进行的隐式类型转换;(explicit)

TCP、UDP 的优缺点

TCP UDP 适用场景

典型网络模型,简单说说有哪些

Http1.1 和 Http1.0 的区别

URI(统一资源标识符)和 URL(统一资源定位符)之间的区别

TCP、UDP 的区别

TCP 为什么是可靠连接

什么是三次握手

为什么三次握手中客户端还要发送一次确认呢?可以二次握手吗?

为什么服务端易受到 SYN 攻击?

什么是四次挥手

为什么客户端最后还要等待 2MSL?

为什么建立连接是三次握手,关闭连接确是四次挥手呢?

vector list 异同

vector 内存是怎么增长的 vector 的底层实现

vector 和 deque 的比较

为什么 stl 里面有 sort 函数 list 里面还要再定义一个 sort

STL 底层数据结构实现

利用迭代器删除元素会发生什么?

map 是如何实现的,查找效率是多少

几种模板插入的时间复杂度

Linux 内核的组成

系统调用的作用

内核态,用户态的区别

Bootloader 多数有两个阶段的启动过程

Linux 的内核是由 bootloader 装载到内存中的?

为什么需要 BootLoader

Linux 内核同步方式总结

为什么自旋锁不能睡眠 而在拥有信号量时就可以?

大小端的区别以及各自的优点,哪种时候用

一个程序从开始运行到结束的完整过程(四个过程)

什么是堆,栈,内存泄漏和内存溢出?

堆和栈的区别

死锁的原因、条件 创建一个死锁,以及如何预防

硬链接与软链接的区别

虚拟内存,虚拟地址与物理地址的转换

计算机中,32bit 与 64bit 有什么区别

中断和异常的区别

中断怎么发生,中断处理大概流程

CPU 内存 虚拟内存 磁盘/硬盘 的关系

CPU 内部结构

ARM 结构处理器简析

波特率是什么,为什么双方波特率要相同,高低波特率有什么区别

ARM 和 DSP 有什么区别

ROM RAM 的概念浅析

IO 口工作方式:上拉输入 下拉输入 推挽输出 开漏输出

扇区 块 页 簇的概念

简述处理器在读内存的过程中,CPU 核、cache、MMU 如何协同工作?

请说明总线接口 USRT、I2C、USB 的异同点(串/并、速度、全/半双工、总线拓扑等)

什么是异步串口和同步串口

异步串口

同步串口

I2C 时序图

进程间通信的方式有哪些?各自的优缺点是什么?

线程安全的实现方式有哪些?

简述 Linux 中的文件权限及其设置方法

什么是虚拟内存,它有什么作用?

如何优化 C++程序的性能?

简述 C++中的智能指针及其用途

什么是内存泄漏,如何检测和避免?

介绍一下 Linux 中的进程调度算法

谈谈你对 C++模板的理解

如何实现一个线程池?

什么是红黑树,它的特点和应用场景是什么?

介绍一下 Linux 中的信号机制

如何进行 C++代码的单元测试

什么是缓存一致性问题,如何解决?

简述 Linux 中的文件系统

如何处理 C++中的异常?

介绍一下数据库的索引结构,如 B 树、B+树

什么是分布式系统,它的特点和挑战有哪些?

如何实现一个高效的哈希表?

简述 Linux 中的网络配置命令

简述嵌入式系统的特点和应用领域

解释实时操作系统与非实时操作系统的区别

嵌入式系统中常用的存储设备有哪些?

谈谈嵌入式系统中的电源管理技术

什么是中断优先级,如何设置中断优先级?

如何在嵌入式系统中实现低功耗设计?

介绍一下嵌入式系统中的 Bootloader 启动流程

嵌入式系统中如何进行代码优化?

什么是看门狗定时器,它的作用是什么?

谈谈嵌入式系统中的通信协议,如 SPI、I2S 等

如何在嵌入式系统中进行硬件调试?

解释嵌入式系统中的交叉编译

嵌入式系统中如何处理外部中断?

介绍一下嵌入式系统中的实时时钟(RTC)

如何提高嵌入式系统的可靠性?

谈谈嵌入式系统中的 Flash 存储器

什么是嵌入式系统中的任务调度算法?

如何在嵌入式系统中实现加密功能?

解释嵌入式系统中的 ADC(模数转换器)和 DAC(数模转换器)

嵌入式系统中如何进行内存保护?

介绍一下嵌入式系统中的触摸屏接口

如何在嵌入式系统中处理音频数据?

什么是嵌入式系统中的 DMA(直接内存访问)?

谈谈嵌入式系统中的传感器应用

如何优化嵌入式系统的启动时间?

解释嵌入式系统中的 GPIO(通用输入输出)

嵌入式系统中如何进行文件系统移植?

什么是嵌入式系统中的硬件抽象层(HAL)?

如何在嵌入式系统中实现远程升级?

介绍一下嵌入式系统中的蓝牙通信

谈谈嵌入式系统中的电源故障检测与恢复

什么是嵌入式系统中的 JTAG 接口?

如何在嵌入式系统中进行触摸屏校准?

解释嵌入式系统中的 CAN 总线

嵌入式系统中如何处理图像数据?

谈谈嵌入式系统中的实时数据库

什么是嵌入式系统中的看门狗复位?

如何优化嵌入式系统中的网络通信性能?

介绍一下嵌入式系统中的 Wi-Fi 通信

谈谈嵌入式系统中的数据压缩算法

解释嵌入式系统中的 UART(通用异步收发器)

嵌入式系统中如何进行代码加密?

什么是嵌入式系统中的 EEPROM(电可擦可编程只读存储器)?

如何在嵌入式系统中实现语音识别?

介绍一下嵌入式系统中的 RTC 闹钟功能

谈谈嵌入式系统中的低噪声放大器

什么是嵌入式系统中的电源滤波?

如何在嵌入式系统中进行传感器融合?

解释嵌入式系统中的 SPI 通信协议的工作原理

嵌入式系统中如何处理 ADC 采样数据?


冒泡排序算法的平均时间复杂度和最坏时间复杂度分别是多少?在什么情况下使用冒泡排序较为合适?

冒泡排序的时间复杂度

  • 平均时间复杂度: O(n²)
  • 最坏时间复杂度: O(n²)<

相关文章:

6万字嵌入式最全八股文面试题大全及参考答案(持续更新)

目录 冒泡排序算法的平均时间复杂度和最坏时间复杂度分别是多少?在什么情况下使用冒泡排序较为合适? 选择排序算法是稳定的排序算法吗?为什么? 插入排序在近乎有序的数组中表现如何?为什么? 快速排序的基本思想是什么?它在最坏情况下的时间复杂度是多少? 归并排序…...

iceberg 用户文档(持续更新)

iceberg 用户文档 表 Schema 变更查看表的元数据信息表参数变更 表 Schema 变更 Iceberg 支持使用 Alter table … alter column 语法对 Schema 进行变更&#xff0c;示例如下 -- spark sql -- 更改字段类型 ALTER TABLE prod.db.sample ALTER COLUMN measurement TYPE doubl…...

基于YOLOv8的船舶检测系统

基于YOLOv8的船舶检测系统 (价格85) 包含 【散货船&#xff0c;集装箱船&#xff0c;渔船&#xff0c;杂货船&#xff0c;矿砂船&#xff0c;客船】 6个类 通过PYQT构建UI界面&#xff0c;包含图片检测&#xff0c;视频检测&#xff0c;摄像头实时检测。 &#xff08;该…...

使用腾讯云域名解析实现网站重定向

前言 最近&#xff0c;在CSDN平台上我写了一系列博客&#xff0c;希望能与同学分享一些技术心得。然而&#xff0c;每当需要向他人推荐我的博客时&#xff0c;那串复杂且缺乏规律的CSDN博客首页域名总让我感到不便。这让我开始思考&#xff0c;如果能将这一域名替换为一个既个…...

为什么相比直接使用new和std::shared_ptr构造函数,make_shared在内存分配和管理方面更为高效。

使用std::make_shared相比于直接使用new和std::shared_ptr构造函数在内存分配和管理方面更为高效&#xff0c;主要原因如下&#xff1a; 内存分配效率 std::make_shared通过一次内存分配来同时分配控制块&#xff08;用于引用计数等&#xff09;和对象的内存。这种方式减少了…...

7-Python数据类型——列表和元组的详解(增删改查、索引、切片、步长、循环)

一、列表 1.1 列表 list 有序且可变的容器&#xff0c;可以存放多个不同类型的元素 列表就是专门用来记录多个同种属性的值 列表&#xff1a;存储同一个类别的数据&#xff0c;方便操作 字符串&#xff0c;不可变&#xff1a;即&#xff1a;创建好之后内部就无法修改【内置…...

大数据-61 Kafka 高级特性 消息消费02-主题与分区 自定义反序列化 拦截器 位移提交 位移管理 重平衡

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…...

Google Gemma2 2B:语言模型的“小时代”到来?

北京时间8月1日凌晨&#xff08;当地时间7月31日下午&#xff09;&#xff0c;Google发布了其Gemma系列开源语言模型的更新&#xff0c;在AI领域引发了巨大的震动。Google Developer的官方博客宣布&#xff0c;与6月发布的27B和9B参数版本相比&#xff0c;新的2B参数模型在保持…...

三线程顺序打印1-100

三线程顺序打印1-100 题目 三个线程顺序打印1-100; 解题 基本思路 首先需要创建三个线程, 确定使用线程1打印 num % 3 1 的数, 线程2打印 num % 3 2 的数, 线程3打印 num % 3 0 的数;使用 synchronized 同步锁让每次只有一个线程进行打印, 每个线程打印前先判断当前数是…...

中央处理器CPU

中央处理器CPU cpu的组成&#xff08;从功能方面来看&#xff09;cpu的执行过程★.取指令阶段★.解码阶段★.执行阶段 重点&#xff1a; 1.cpu的组成 2.cpu怎么执行程序&#xff08;命令&#xff09; cpu的组成&#xff08;从功能方面来看&#xff09; 寄存器&#xff1a;用来临…...

用Python实现AI人脸识别

实现AI人脸识别通常涉及到使用深度学习库&#xff0c;如TensorFlow或PyTorch&#xff0c;配合预训练的人脸识别模型。以下是一个使用Python和TensorFlow框架中的tensorflow_hub模块来加载和使用一个预训练的人脸识别模型的简单示例。 步骤 1: 安装必要的库 首先&#xff0c;你…...

MSPM0G3507_2024电赛自动行驶小车(H题)_问题与感悟

这次电赛题目选的简单了&#xff0c;还规定不能使用到摄像头&#xff0c;这让我之前学习的Opencv 4与树莓派无用武之地了&#xff0c;但我当时对于三子棋题目饶有兴趣&#xff0c;但架不住队友想稳奖&#xff0c;只能选择这个H题了...... 之后我还想抽空将这个E题三子棋题目做…...

C语言:指针(2)

一.数组名 在了解数组名前我们先看一段代码 int arr[10] {1,2,3,4,5,6,7,8,9,10}; int *p &arr[0]; 根据我们上一篇学习的知识&#xff0c;我们知道&arr[0]是数组第一个元素的地址&#xff0c;这时我们再看另一段代码的运行结果。 #include <stdio.h> int ma…...

数组——二维数组

数组(中) 二维数组 定义 二维数组本质上是一个行列式的组合&#xff0c;也就是说二维数组是有行和列两部分构成。二维数组数据是通过行列进行解读。 二维数组可被视为一个特殊的一维数组&#xff0c;相当于二维数组又是一个一维数组&#xff0c;只不过它的元素是一维数组。 …...

深入 Vue 组件与状态管理的教程

目录 深入 Vue 组件与状态管理的教程第一部分&#xff1a;深入组件1. 理解插槽&#xff08;Slots&#xff09;的使用1.1 基础插槽示例1.2 具名插槽1.3 作用域插槽 第二部分&#xff1a;Vue Router1. 学习 Vue Router 的基本配置1.1 基本路由配置1.2 嵌套路由1.3 路由参数 2. 导…...

Spring Boot 实现异步处理多个并行任务

在现代Web应用开发中&#xff0c;异步处理和多任务并行处理对于提高系统的响应性和吞吐量至关重要。Spring Boot 提供了多种机制来实现异步任务处理&#xff0c;本文将介绍如何利用这些机制来优化您的应用程序性能。 1. 引言 在高负载情况下&#xff0c;如果所有的请求都采用…...

TiDB系列之:使用Flink TiDB CDC Connector采集数据

TiDB系列之&#xff1a;使用Flink TiDB CDC Connector采集数据 一、依赖项二、Maven依赖三、SQL Client JAR四、如何创建 TiDB CDC 表五、连接器选项六、可用元数据七、特征一次性处理启动阅读位置多线程读取DataStream Source 八、数据类型映射 TiDB CDC 连接器允许从 TiDB 数…...

每日一道算法题 最接近的三数之和

题目 16. 最接近的三数之和 - 力扣&#xff08;LeetCode&#xff09; Python class Solution:def threeSumClosest(self, nums: List[int], target: int) -> int:nums.sort()nlen(nums)ans0min_diffinf # infinite 无穷for i in range(n-2):tmpnums[i]li1rn-1while l<…...

搭建自己的金融数据源和量化分析平台(六):下载并存储沪深两市上市公司财报

基于不依赖wind、某花顺等第三方平台数据的考虑&#xff0c;尝试直接从财报中解析三大报表进而计算ROE等财务指标&#xff0c;因此需要下载沪深两市的上市公司财报数据&#xff0c;便于后续从pdf中解析三大报表。 深市爬虫好做&#xff0c;先放深市爬虫&#xff1a; 根据时间段…...

C语言-常见关键字详解

一、const 关键字const用于声明常量&#xff0c;赋值后&#xff0c;其值不能再被修改。 示例&#xff1a; const int MAX_COUNT 100; 二、static static关键字在不同情境下有不同作用&#xff1a; 1.函数中的静态变量&#xff1a;保留变量状态&#xff0c;仅初始化一次&a…...

异步编程之std::future(一): 使用

目录 1.概述 2.std::future的基本用法 3.使用 std::shared_future 4.std::future的使用场景 5.总结 1.概述 在编程实践中&#xff0c;我们常常需要使用异步调用。通过异步调用&#xff0c;我们可以将一些耗时、阻塞的任务交给其他线程来执行&#xff0c;从而保证当前线程的…...

Vue3 + JS项目配置ESLint Pretter

前言 如果在开发大型项目 同时为多人协作开发 那么 ESLint 在项目中极为重要 在使用 ESLint 的同时 也需要使用 Pretter插件 统一对代码进行格式化 二者相辅相成 缺一不可 1. 安装 VsCode 插件 在 VsCode 插件市场搜索安装 ESLint 和 Pretter 2. 安装依赖 这里直接在 pac…...

JavaScript (十四)——JavaScript typeof和类型转换

目录 JavaScript typeof, null, 和 undefined typeof 操作符 null undefined undefined 和 null 的区别 JavaScript 类型转换 JavaScript 数据类型 JavaScript 类型转换 将数字转换为字符串 将布尔值转换为字符串 将日期转换为字符串 将字符串转换为数字 一元运算符…...

CTF-web 基础

网络协议 OSI七层参考模型&#xff1a;一个标准的参考模型 物理层 网线&#xff0c;网线接口等。 数据链路层 可以处理物理层传入的信息。 网络层 比如IP地址 传输层 控制传输的内容的传输&#xff0c;在传输的过程中将要传输的信息分块传输完成之后再进行合并。 应用…...

CP AUTOSAR标准之ChineseV2XNetwork(AUTOSAR_SWS_ChineseV2XNetwork)(更新中……)

1 简介和功能概述 本文档指定了AUTOSAR基础软件模块中国车辆对接网络(CnV2xNet)的功能、API和配置。   中国车联网网络(CnV2xNet)与中国车联网消息(CnV2xMsg)、中国车联网管理(CnV2xMgt)、中国车联网安全(CnV2xSec)以及AUTOSAR BSW模块以太网接口(EthIf)共同构成了AUTOSAR架构…...

【hloc】 项目流程

hloc 项目流程 1. 数据集准备2. 特征提取3. 匹配特征4. 三维重建5. 定位6. 结果评估7. 示例脚本 这个项目涉及到了视觉定位和三维重建的一系列步骤&#xff0c;从特征提取、匹配、三维重建到定位和结果评估。通过提供的脚本文件&#xff0c;用户可以方便地运行整个流程。 1. 数…...

鸿蒙系统开发【应用接续】基本功能

应用接续 介绍 基于ArkTS扩展的声明式开发范式编程语言编写的一个分布式视频播放器&#xff0c;主要包括一个直播视频播放界面&#xff0c;实现视频播放时可以从一台设备迁移到另一台设备继续运行&#xff0c;来选择更合适的设备继续执行播放功能以及PAD视频播放时协同调用手…...

nextTick方法的作用是什么?什么时候会用到

nextTick 方法在 Vue.js 中扮演着重要的角色&#xff0c;它用于在下次 DOM 更新循环结束之后执行延迟回调。这主要用于确保在 Vue 完成 DOM 更新后执行依赖于 DOM 的操作。 作用 确保 DOM 更新完成&#xff1a;Vue 的 DOM 更新是异步的&#xff0c;当你修改了数据后&#xff0…...

多 NodeJS 环境管理

前言 对于某个项目依赖特定版本的 NodeJS&#xff0c;或几个项目的 NodeJS 版本冲突时&#xff0c;需要在系统中安装多个版本的 NodeJS&#xff0c;这时可以使用一些工具来进行多个 NodeJS 的管理。 有很多类似的 NodeJS 管理工具&#xff0c;如 nvm, nvs, n 等&#xff0c;接…...

解决网站被植入跳转木马病毒

概述 网站被植入跳转木马病毒是一种常见的安全威胁&#xff0c;它可能导致网站用户被重定向到恶意站点。本文将指导您如何检测、清除这类木马病毒以及采取预防措施。 步骤1&#xff1a;确认感染 首先&#xff0c;需要确认您的网站确实受到了跳转木马的影响。 示例&#xff…...