嵌入式开发面试问题总结(持续更新)
面试问题总结
c/c++
封装、继承和多态
- 封装:将属性和方法封装起来,并加以权限区分。
- 继承:子类继承父类的特征和行为,复用了从基类复制而来的数据成员和成员函数(基类私有成员无法被访问),其中构造函数、析构函数、友元函数、静态数据成员、静态成员函数都不能被继承,提高了代码的复用率。(虚继承解决菱形继承问题)。
- 多态:同一种类型的对象在不同的情况下表现出不同的行为。简单来说,就是同一个方法在不同的对象上可以有不同的实现。
1G内存这个可以malloc
1.2G空间?为什么?
malloc
能够申请的空间大小与物理内存的大小没有直接关系,仅与程序的虚拟地址空间相关。程序运行时,堆空间只是程序向操作系统申请划出来的一大块虚拟地址空间。应用程序通过malloc
申请空间,得到的是在虚拟地址空间中的地址,之后程序运行所提供的物理内存是由操作系统完成的。
单例模式
单例模式 (Singleton): 保证一个类只有一个实例(懒汉式,饿汉式)。
类模板和函数模板
在c++17
之前类模板支持自动类型推导,函数模板不支持自动类型推导。
自动类型转换和自动类型推导
- 自动类型转换:在某些情况下,编译器会自动将一个类型转换为另一个类型。这种转换也称为隐式类型转换。
- 数值类型之间的隐式类型转换。
- 派生类指针和基类指针之间的隐式类型转换。
- 用户自定义类型(类单个参数的构造函数)。
- 自动类型推导:自动类型推导是指编译器根据表达式的上下文来推断变量的类型。
虚析构和纯虚析构
关键字virtual
,纯虚析构函数必须要提供函数体,纯虚析构会使基类是抽象类,不能实例化对象。
缺省参数
缺省参数是指在定义函数时给某个参数设置一个默认值,当函数被调用时,如果没有传递该参数,就会使用默认值。调用时只能从最后一个参数开始进行省略,换句话说,如果你要省略一个参数,你必须省略它后面所有的参数。
sizeof
和 strlen
的区别
sizeof
是一个操作符,strlen
是库函数。sizeof
的参数可以是数据的类型,也可以是变量,而strlen
只能以结尾为‘\0‘
的字符串作参数。- 如果
strlen
函数调用的字符串没有以'\0'
结尾,那么该函数的行为是未定义的。
- 如果
- 编译器在编译时就计算出了
sizeof
的结果。而strlen
函数必须在运行时才能计算出来。并且sizeof
计算的是数据类型占内存的大小,而strlen
计算的是字符串实际的长度。 - 数组做
sizeof
的参数不退化,传递给strlen
就退化为指针了。- 对于一个空的类,里面没有任何成员和变量和函数,对该类的实例求
sizeof
得到的结果是1
,本来应该是0
,但是必须在内存中占有一定空间,至于占多少内存由编译器决定,大部分都是1
。 - 如果在类中添加构造函数和析构函数仍然是
1
。 - 如果把析构函数标记为虚函数,就会在实例中添加一个指向虚函数表的指针,所以大小是
4
或者8
。
- 对于一个空的类,里面没有任何成员和变量和函数,对该类的实例求
gcc
编译过程
- 预处理:头文件包含、宏替换、条件编译、删除注释。
- 编译:词法、语法、语义分析,检查无误后编译成汇编文件。
- 汇编:将汇编文件转换成二进制目标文件。
- 链接:将各个二进制文件+库文件+启动代码链接成可执行文件。
逻辑短路
执行逻辑运算时,如果能够确定整个表达式的结果,就不再继续计算表达式的其余部分。
- 逻辑与 (
&&
) 的短路:当使用&&
运算符时,如果第一个操作数为假(false
),则整个表达式的结果已经确定为假,因此不会计算第二个操作数。 - 逻辑或 (
||
) 的短路:当使用||
运算符时,如果第一个操作数为真(true
),则整个表达式的结果已经确定为真,因此不会计算第二个操作数。
好处:
- 避免不必要的计算:如果表达式的结果已经确定,就不需要执行后续的计算,这可以提高程序的效率。
- 防止潜在的错误:例如,在数组索引检查中,如果第一个条件已经满足,就不需要执行可能引发越界的第二个条件检查。
- 简化代码逻辑:有时候可以利用逻辑短路来简化复杂的条件判断。
单片机
UART
、IIC
和SPI
通信协议
串口协议:串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方 式的扩展接口。串行接口(Serial Interface
)是指数据一位一位地顺序传送。其特点是通信线路简 单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成 本,特别适用于远距离通信,但传送速度较慢。
- 是设备间接线通信的一种方式。
- 数据一位一位地顺序传送。
- 双向通信,全双工(两条线,一条发送数据(
TX
),一条接收数据(RX
))。 - 传送速度相对较慢。
IIC
协议:集成电路总线;是由PHILIPS
公司在80年代开发的两线式串行总线,用于连接微控制器及其外围设备。IIC
属于半双工同步通信方式(只有一根双向的数据线SDA
)。
-
简单性和有效性:由于接口直接在组件之上,因此
IIC
总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。 -
多主控(
multimastering
):任何能够进行发送和接收的设备都可以成为主总线。 -
IIC
串行总线一般有两根信号线,一根是双向的数据线SDA
,另一根是时钟线SCL
,其时钟信号是由主控 器件产生。
SPI
协议:串行外设接口;是一种高速的,全双工,同步的通信总线。
MISO
–Master Input Slave Output
,主设备数据输入,从设备数据输出。MOSI
–Master Output Slave Input
,主设备数据输出,从设备数据输入。SCK
–Serial Clock
,时钟信号,由主 设备产生。CS
–Chip Select
,片选信号,由主设备控制。
网络编程
arp
欺骗
发送真实的目的ip
和目的mac
但源ip
和源mac
是假的arp
应答包。
字节序
字节序是多字节数据在内存中的存放顺序,大端(高字节放在低地址);小端(低字节放在低地址)。
系统编程
上下文
上下文信息是CPU
执行程序时所需的状态信息集合,包括寄存器状态、程序计数器、堆栈信息等,它允许操作系统管理进程切换、中断处理和系统调用。
上下文切换是操作系统在不同进程或任务之间保存和加载这些状态信息的过程,尽管它对系统性能有影响,但对于多任务处理和响应中断是必不可少的。
数据库
数据结构与算法
其他
相关文章:
嵌入式开发面试问题总结(持续更新)
面试问题总结 c/c 封装、继承和多态 封装:将属性和方法封装起来,并加以权限区分。继承:子类继承父类的特征和行为,复用了从基类复制而来的数据成员和成员函数(基类私有成员无法被访问),其中构…...

意外发现openGauss兼容Oracle的几个条件表达式
意外发现openGauss兼容Oracle的几个条件表达式 最近工作中发现openGauss在兼容oracle模式下,可以兼容常用的两个表达式,因此就随手测试了一下。 查看数据库版本 [ommopenGauss ~]$ gsql -r gsql ((openGauss 6.0.0-RC1 build ed7f8e37) compiled at 2…...
使用Keepalived提高吞吐量和负载均衡ip_hash.
一 . Nginx使用Keepalived提高吞吐量案例 Keepalived[表示把连接保持一定长连接数来提高吞吐量] 1.1没有使用keepalived参数 upstream tomcats {server 192.168.28.102:8080; } server {listen 88;server_name www.tomcats.com;location / {proxy_pass http://to…...

网络故障与排除(一)
一、Router-ID冲突导致OSPF路由环路 路由器收到相同Router-ID的两台设备发送的LSA,所以查看路由表看到的OSPF缺省路由信息就会不断变动。而当C1的缺省路由从C2中学到,C2的缺省路由又从C1中学到时,就形成了路由环路,因此出现路由不…...

C++之运算符重载
1、运算符重载 //Complex.h #ifndef _COMPLEX_H_ #define _COMPLEX_H_class Complex { public:Complex(int real_, int imag_);Complex();~Complex();Complex& Add(const Complex& other); void Display() const;Complex operator(const Complex& other);privat…...
使用springdoc-openapi-starter-webmvc-ui后访问swagger-ui/index.html 报错404
按照官网说明,引入 springdoc-openapi-starter-webmvc-ui后应该就可以直接访问swagger-ui.html或者swagger-ui/index.html就可以出现swagger页面了,但是我引入后,访问提示报错404. 在我的项目中,有其他依赖间接引入了org.webjars…...

深入理解计算机系统 家庭作业4.52
练习题4.3 p.254 \sim\seq\seq-full.hcl文件内已经说的很清楚了哪些不能更改,哪些是题目要求更改的控制逻辑块. 依据家庭作业4.51的答案,在seq-full.hcl文件内更改对应的HCL描述即可 以下答案注释了#changed的就是更改部分 #/* $begin seq-all-hcl */ ######################…...

深度学习:手撕 RNN(2)-RNN 的常见模型架构
本文首次发表于知乎,欢迎关注作者。 上一篇文章我们介绍了一个基本的 RNN 模块。有了 这个 RNN 模块后,就像搭积木一样,以 RNN 为基本单元,根据不同的任务或者需求,可以构建不同的模型架构。本节介绍的所有结构&#…...

【Linux进程篇】Linux进程管理——进程创建与终止
W...Y的主页 😊 代码仓库分享💕 目录 进程创建 fork函数初识 写时拷贝 fork常规用法 fork调用失败的原因 进程终止 进程退出场景 _exit函数 exit函数 return退出 进程创建 fork函数初识 在linux中fork函数时非常重要的函数,它从已…...

Python爬虫实战(实战篇)—17获取【CSDN某一专栏】数据转为Markdown列表放入文章中
文章目录 专栏导读背景结果预览1、页面分析2、通过返回数据发现适合利用lxmlxpath3、进行Markdown语言拼接总结 专栏导读 在这里插入图片描述 🔥🔥本文已收录于《Python基础篇爬虫》 🉑🉑本专栏专门针对于有爬虫基础准备的一套基…...
Go语言-big.Int
文章目录 Go 语言 big.Int应用场景:大整数位运算使用举例: go sdk中crypto/ecdsa 椭圆曲线生成私钥相关结构中就有使用 Go 语言 big.Int Go 语言 big.Int 参考URL: https://blog.csdn.net/wzygis/article/details/82867793 math/big 作为 Go 语言提供的…...
getContentView(mBinding.getRoot()); 会导致内存泄露吗?里面有SurfaceView ViewBinding
在上述代码中,ActivityTestingBinding 是一个 Data Binding 库生成的类,用于绑定 XML 布局到 Activity 中。inflate(getLayoutInflater()) 用于将布局文件解析并转换为对应的视图层次结构。然后 getWindow().setFlags() 设置窗口属性,保持屏幕…...

基于transformers框架实践Bert系列6-完形填空
本系列用于Bert模型实践实际场景,分别包括分类器、命名实体识别、选择题、文本摘要等等。(关于Bert的结构和详细这里就不做讲解,但了解Bert的基本结构是做实践的基础,因此看本系列之前,最好了解一下transformers和Bert…...

cesium绘制编辑区域
npm 安装也是可以的 #默认安装最新的 yarn add cesium#卸载插件 yarn remove cesium#安装指定版本的 yarn add cesium1.96.0#安装指定版本到测试环境 yarn add cesium1.96.0 -D yarn install turf/turf token记得换成您自己的!!! <t…...

数据库攻防之MySQL
MySQL 是最流行的关系型数据库,与此同时也是 web 应用中最好的关系型数据库管理应用软件。我们在渗透过程中碰到的 PHP 站点大部分都会搭配 MySQL 数据库,因此它是红队攻防中最常遇到的数据库。 0x01 MySQL简介 MySQL 是典型的关系型数据库,…...

八国多语言微盘微交易所系统源码 单控点控 K线完好
安装环境linux NGMySQL5.6PHP7.2(函数全删)pm2管理器(node版本选择v12.20.0) config/ database.php 修改数据库链接 设置运行目录 public 伪静态thinkphp...

爪哇,我初学乍道
>>上一篇(学校上课,是耽误我学习了。。) 2016年9月,我大二了。 自从我发现上课会耽误我学习,只要我认为不影响我期末学分的,我就逃课了。 绝大多数课都是要签到的,有的是老师突击喊名字…...
【MySQL精通之路】全文搜索(5)-限制
主博客:【MySQL精通之路】全文搜索功能-CSDN博客 全文搜索仅支持InnoDB和MyISAM表。 分区表不支持全文搜索。参见“分区的限制和限制”。 全文搜索可用于大多数多字节字符集。 例外的是,对于Unicode,可以使用utf8mb3或utf8mb4字符集ÿ…...

动态规划part03 Day43
LC343整数拆分(未掌握) 未掌握分析:dp数组的含义没有想清楚,dp[i]表示分解i能够达到的最大乘积,i能够如何分解呢,从1开始遍历,直到i-1;每次要不是j和i-j两个数,要不是j和…...
Activity->Activity生命周期和启动模式
<四大组件 android:name"xxx"android:exported"true" // 该组边能够被其他组件启动android:enabled"true" // 该组件能工与用户交互 </四大组件>Activity常用生命周期 启动Activity 2024-05-29 03:53:57.401 21372-21372 yang …...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...

Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
uniapp 字符包含的相关方法
在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)
前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 编辑 前言: 类加载器 1. …...

毫米波雷达基础理论(3D+4D)
3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文: 一文入门汽车毫米波雷达基本原理 :https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...