补发一篇 秋招小米的面经,附自己的复盘解答

1. 进程和线程的区别?

进程是程序的一次执行实例,拥有独立的地址空间和系统资源;

线程是进程内的执行单元,多个线程共享所属进程的资源,但各自拥有独立的栈和寄存器状态。

区别:进程间隔离性强、开销大;线程轻量、通信高效,但需同步机制保障安全。

2. 什么是死锁?如何预防?

死锁是多个进程/线程互相等待对方释放资源。

预防:按固定顺序加锁、避免持有并等待、使用超时机制。

3. STM32的GPIO有哪几种工作模式?

输入(浮空/上拉/下拉)、输出(推挽/开漏)、复用功能、模拟模式。

4. volatile关键字作用?

告诉编译器该变量可能被外部(如硬件、中断)修改,禁止优化,每次必须从内存读取。

5. 堆和栈的区别?

栈由系统自动管理,速度快但容量小;

堆需手动分配(malloc/new),灵活但易泄漏、速度慢。

6. TCP和UDP区别?

TCP面向连接、可靠、有序;

UDP无连接、不可靠、低延迟,适用于音视频等实时场景。

7. 什么是三次握手?

Client发SYN → Server回SYN+ACK → Client发ACK,建立可靠连接,防止历史请求干扰。

8. I2C和SPI的区别?

I2C:两线(SDA/SCL)、半双工、多主多从、速度慢;SPI:四线(MOSI/MISO/SCLK/CS)、全双工、主从结构、速度快。

9. 为什么析构函数要声明为虚函数?

确保通过基类指针删除派生类对象时,能正确调用派生类析构函数,避免资源泄漏。

10. new 和 malloc 的区别?

new 是C++操作符,调用构造函数、类型安全;malloc 是C函数,只分配内存,返回void*。

11. 什么是看门狗?作用?

看门狗是硬件定时器,程序需定期“喂狗”,否则超时复位,用于防止系统死锁。

12. RTOS的任务调度方式?

优先级调度(高优先执行)、时间片轮转(同优先级轮流执行),支持抢占。

13. Linux设备节点在哪?

在 /dev 目录下,如 /dev/ttyS0、/dev/mmcblk0。

14. 常量存储在哪个内存区?

字符串字面量等常量存放在只读数据段(常量区),程序结束由系统回收。

15. 硬链接和软链接区别?

硬链接共享inode,不能跨文件系统;

软链接是独立文件,指向路径,可跨文件系统。

16. 中断和异常的区别?

中断来自外部硬件(异步),异常由CPU内部错误或指令触发(同步)。

17. C程序编译四阶段?

预处理 → 编译 → 汇编 → 链接。

18. static的作用?

限制作用域(文件内)或延长生命周期(局部静态变量),类中表示共享成员。

19. 大小端是什么?网络用哪种?

大端:高位存低地址;

小端:低位存低地址。网络字节序为大端。

20.如何查看Linux系统性能?

用 top、htop、free -h、iostat、vmstat 等命令监控CPU、内存、IO等。

21.C/C++程序内存分布情况,常量所在的区 

C/C++程序内存分为五区:栈(局部变量)、堆(动态分配)、全局/静态区(全局和static变量)、常量区(字符串字面量、const全局/静态变量,只读)、代码区(函数机器指令)。

其中常量(如 "hello"、const char* p = "..." 中的字符串)存储在常量区,程序结束时由系统释放。

嵌入式软件工程师面试完全指南

面经一共32篇文章,12w+字数,包含全部最新的面试必问考点,4.7w+同学学习,2800+订阅,非常适合在找工作面经薄弱的同学,3200+订阅还会涨价,提前订阅提前享受,持续更新中。

原帖链接:https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM

全部评论
一看就是嵌入式,驱动应用都有问到
点赞 回复 分享
发布于 昨天 10:10 陕西
一看就是嵌入式的岗位哈哈哈
点赞 回复 分享
发布于 昨天 09:23 广东

相关推荐

评论
2
6
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务