L3.中级
679
0
91
在嵌入式开发领域,扎实的底层技术功底是面试成功的基石。掌握C/C++、Linux系统以及硬件接口驱动开发这三大核心板块,能让你在竞争中脱颖而出。本文基于CVTE的实际面试考点,系统梳理了高频技术问题,无论你是应届生寻求突破,还是开发者准备跳槽,都能从中查漏补缺,高效备考。
当然,技术之路不仅需要学习,也需要交流。欢迎到 云栈社区 分享你的面试心得,探讨更多嵌入式开发的实战技巧。
核心区别在于“本质是什么”:
返回值类型 (*指针名)(参数列表)
int (*func_ptr)(int, int)
int
返回值类型* 函数名(参数列表)
int* func(int n)
func
int arr[5]; arr = &arr[1];
arr++
sizeof
sizeof(arr)
sizeof(ptr)
引用是C++特性,本质是变量的别名,语法为类型& 引用名 = 原变量。核心特性:
类型& 引用名 = 原变量
void swap(int& a, int& b)
string& append(string& s1, const string& s2)
operator+
NULL
nullptr
*
&
.data
.bss
static
stack
共3种核心方式:
malloc
calloc
realloc
free
应使用堆上动态分配(malloc/calloc/realloc)。原因:
注意:堆内存需手动free,避免内存泄漏;分配失败时返回NULL,需做错误判断。
C++兼容C的所有内存分配方式,同时新增面向对象的分配方式,核心差异:
new
delete
new[]
delete[]
operator new
operator delete
placement new
unique_ptr
shared_ptr
weak_ptr
public
private
protected
memset
多态是C++面向对象三大特性(封装、继承、多态)之一,指同一接口(函数名)在不同对象上表现出不同行为。核心目的是解耦,提高代码复用性和扩展性。多态分为两类:
动态多态(核心面试考点)实现条件:
virtual
virtual void show()
静态多态实现:通过函数重载(同一作用域内,函数名相同、参数列表不同)或运算符重载实现,编译时由编译器根据参数类型匹配函数。
不能。原因:
vtable
this
可以,且建议父类析构函数设为虚函数。原因:
注意:子类析构函数无需显式加virtual,会自动继承父类虚析构函数的特性。
(1)静态成员(变量/函数)的作用
(2)静态成员函数修饰类的差异
ClassName::func()
泛型编程是一种不依赖具体数据类型的编程范式,核心思想是“编写通用代码,适配多种数据类型”,实现代码复用,同时保证类型安全(区别于void*的无类型安全)。C++中泛型编程的核心实现手段是模板(类模板、函数模板),此外还有STL(标准模板库),是泛型编程的典型应用。优势:
void*
类模板是泛型编程的核心工具,用于创建可适配多种数据类型的通用类,语法为:template <typename T> class 类名 { … };(T为类型参数,可自定义名称)。核心特性:
template <typename T> class 类名 { … };
T
MyClass<int>
MyClass<float>
template <typename T1, typename T2> class Pair { … };
vector
list
map
vector<int>
常见方式有5种:
核心区别:绑定时机不同,静态绑定依赖编译期类型,动态绑定依赖运行期对象实际类型。
Linux内存分配分为用户空间和内核空间分配,核心方式:
(1)用户空间分配:
ulimit -s
brk()
mmap()
(2)内核空间分配:
vmalloc()
核心区别:资源拥有与调度单位不同:
关系:一个进程至少包含一个线程(主线程),多个线程共享进程资源,共同完成进程任务。
Linux支持多种IPC方式,按常用度排序:
Ctrl+C
SIGINT
(1)无名管道(Pipe)
pipe(int fd[2])
fd[0]
fd[1]
fork
(2)有名管道(FIFO)
mkfifo(const char* pathname, mode_t mode)
mkfifo
rm
共同点:均基于字节流,遵循“先进先出”(FIFO),无数据结构,需手动同步读写节奏。
Linux进程有5种核心状态(基于ps命令查看):
ps
kill
wait()
waitpid()
SIGSTOP
SIGCONT
通过kill/killall/pkill命令,核心是向进程发送信号,常用信号与命令:
killall
pkill
(1)基本命令
kill -信号值 进程ID
kill -9 1234
killall 进程名
killall nginx
pkill 进程名
pkill -f test
(2)常用信号
15
SIGTERM
9
SIGKILL
2
常用命令:
ps aux
a
u
x
ps -ef
top
k
P
htop
通过chmod命令,修改文件/目录的读(r)、写(w)、执行(x)权限,分两种方式:
chmod
r
w
(1)符号法(常用,易理解) 语法:chmod [用户类型][操作符][权限] 文件名;
chmod [用户类型][操作符][权限] 文件名
g
o
+
-
=
chmod u+x,g=rw,o-r test.txt
(2)数字法(简洁) 语法:chmod 权限数字 文件名;
chmod 权限数字 文件名
chmod 755 test.sh
rwx
rx
chmod 644 test.txt
rw
文件属性包括所有者、所属组、创建/修改时间、隐藏属性等,对应命令:
chown
chown 所有者:所属组 文件名
chown user1:group1 test.txt
user1
group1
chown -R user1:group1 dir
touch
touch -d “2024-01-01 12:00” test.txt
chattr
chattr +i test.txt
chattr -i test.txt
lsattr test.txt
三种权限对应读(r)、写(w)、执行(x),分别作用于文件和目录,含义不同:
(1)对文件的权限
cat
more
vim
echo
(2)对目录的权限
ls
mv
cd
VIM是Linux/Unix系统下的高效文本编辑器,是VI编辑器的增强版,支持语法高亮、代码补全、多窗口编辑、宏录制等功能,是开发、运维必备工具。核心特性:
.vimrc
VIM默认启动进入命令模式,需按对应按键切换到编辑模式,常用按键:
i
I
A
O
s
S
退出编辑模式需按Esc键,返回命令模式。
Esc
在命令模式下操作,常用查找命令:
/关键词
/printf
n
N
?关键词
?printf
#
:noh
命令模式下的定位操作,快速跳转至目标位置:
(1)行定位
:行号
:100
gg
G
nG
50G
(2)列定位
$
^
(3)屏幕定位
H
M
L
Ctrl+f
Ctrl+b
-h
free -h
vmstat
vmstat 2 5
cat /proc/meminfo
sar -r
sar -r 1 10
内核同步用于解决多CPU、多进程/线程对内核资源(如全局变量、硬件设备)的并发访问冲突,常用机制:
schedule()
IIC(Inter-Integrated Circuit,集成电路间总线)是一种串行半双工同步通信总线,由飞利浦公司开发,广泛用于嵌入式设备间近距离通信(如传感器、EEPROM、LCD驱动)。核心特性:
中断是嵌入式系统中处理异步事件的机制:当外部设备(如按键、传感器、定时器)发生特定事件时,主动向CPU发送请求信号,CPU暂停当前正在执行的程序,转而去执行对应事件的处理程序(中断服务函数ISR),处理完成后返回原程序继续执行。核心作用:提高CPU利用率,避免CPU轮询等待外部事件,实现实时响应(如紧急按键、故障报警)。分类:
完整中断过程分为5步,即“中断请求-响应-处理-返回”:
不能直接传参。原因:
替代方案:
IIC数据帧以“起始条件”开始,“停止条件”结束,标准帧格式(7位地址)如下:
补充:读数据时,主设备在接收最后一个字节后发送NACK,告知从设备停止发送数据,随后发送停止条件。
波特率(Baud Rate)是UART通信中数据传输的速率单位,表示每秒传输的符号数(对于UART,每个符号对应1位数据,因此波特率=比特率),单位为bps(Bits Per Second)。核心作用:主从设备必须约定相同的波特率,否则数据传输会出错(如波特率不匹配导致乱码)。
UART(Universal Asynchronous Receiver/Transmitter,通用异步收发传输器)通信分为三线制(最常用)和二线制,核心线为:
补充:部分UART扩展了RTS/CTS流控制线(硬件流控),此时为五线制,但嵌入式场景中极少使用。
UART是异步通信,核心特点是无需时钟线同步,主从设备通过约定相同的波特率、数据位、校验位、停止位实现数据同步。与同步通信(如IIC、SPI)的区别:
UART数据帧为异步帧,格式可配置,标准帧结构(从低到高传输)如下:
以上就是对嵌入式开发中C/C++、Linux及硬件相关核心知识点的梳理。理解这些问题背后的原理,而不仅仅是背诵答案,才能让你在面试中游刃有余。在实际项目中灵活运用这些知识,将是你技术实力的最好证明。如果你在求职路上遇到了更多问题,不妨来 云栈社区 的面试求职板块看看,或许能找到更多启发。
收藏0回复 显示全部楼层 举报
发表回复 回帖后跳转到最后一页
手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )
GMT+8, 2026-1-25 20:31 , Processed in 0.249448 second(s), 43 queries , Gzip On.
Powered by Discuz! X3.5
© 2025-2026 云栈社区.