得力嵌入式工程师 一面 面经

1. 自我介绍

您好,我叫[姓名],[学历]毕业于[学校][专业]。我有[X年]嵌入式开发经验,主要从事基于ARM Cortex-M系列微控制器的产品开发。

在技术方面,我熟悉C/C++编程,掌握RTOS(如FreeRTOS)的应用,熟悉常用外设驱动开发(UART、SPI、I2C、ADC、PWM等)。项目经验包括[具体项目1]和[具体项目2],在这些项目中我负责[具体职责],解决了[具体问题]。

我对嵌入式系统有浓厚兴趣,平时会关注行业新技术,也会通过开源项目和技术社区持续学习。希望能加入贵公司,在嵌入式领域继续深耕发展。

2. 进程和线程的区别

定义:

  • 进程:系统资源分配的基本单位,拥有独立的地址空间
  • 线程:CPU调度的基本单位,是进程内的执行单元

主要区别:

资源占用

独立地址空间,资源开销大

共享进程地址空间,开销小

通信方式

IPC(管道、消息队列、共享内存、信号量)

直接访问共享变量(需同步)

创建开销

大(需要分配独立资源)

小(共享进程资源)

切换开销

大(需要切换地址空间)

小(同进程内切换)

独立性

高,进程崩溃不影响其他进程

低,一个线程崩溃可能导致整个进程崩溃

嵌入式RTOS中的体现:在FreeRTOS等RTOS中,通常只有任务(Task)的概念,类似于线程,所有任务共享同一地址空间,通过队列、信号量、互斥锁等机制进行同步和通信。

3. 中断的优先级如何设置?中断嵌套了解吗?

中断优先级设置:

在ARM Cortex-M系列中,通过NVIC(嵌套向量中断控制器)管理中断优先级:

// 设置中断优先级(数值越小优先级越高)
NVIC_SetPriority(UART0_IRQn, 2);  // 设置UART0中断优先级为2
NVIC_EnableIRQ(UART0_IRQn);       // 使能中断

优先级分组:

  • Cortex-M支持抢占优先级和子优先级
  • 通过AIRCR寄存器配置优先级分组
  • 例如:4位优先级可分为3位抢占+1位子优先级

中断嵌套:

  • 高优先级中断可以打断低优先级中断的执行
  • 同优先级中断不能相互嵌套
  • 中断嵌套深度受栈空间限制

注意事项:

  • 关键任务(如安全相关)设置高优先级
  • 耗时长的中断设置低优先级
  • 避免在中断中执行耗时操作
  • 合理使用中断屏蔽,防止竞态条件

4. volatile关键字的作用是什么?

作用:告诉编译器该变量可能被程序外部因素改变,禁止编译器对其进行优化。

使用场景:

  1. 中断服务程序中修改的变量:
volatile uint8_t flag = 0;

void UART_IRQHandler(void) {
    flag = 1;  // 中断中修改
}

int main(void) {
    while(flag == 0);  // 不加volatile可能被优化为死循环
}

  1. 硬件寄存器访问:
#define GPIO_REG  (*(volatile uint32_t *)0x40020000)
GPIO_REG = 0x01;  // 确保每次都从内存读写

  1. 多线程共享变量:
volatile int shared_data;  // 多任务访问的变量

注意:

  • volatile不保证原子性,多线程需配合互斥锁
  • volatile不能替代同步机制
  • 过度使用会降低性能

5. 看门狗的作用及使用场景

作用:看门狗(Watchdog)是一种硬件定时器,用于检测和恢复系统故障,防止程序跑飞或死机。

工作原理:

  1. 启动后开始倒计时
  2. 程序需要定期"喂狗"(重置计数器)
  3. 如果超时未喂狗,系统自动复位

使用场景:

  1. 防止程序死循环:
void main_task(void) {
    while(1) {
        // 正常业务逻辑
        process_data();
        
        // 定期喂狗
        WDT_Feed();

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

嵌入式面试八股文全集 文章被收录于专栏

这是一个全面的嵌入式面试专栏。主要内容将包括:操作系统(进程管理、内存管理、文件系统等)、嵌入式系统(启动流程、驱动开发、中断管理等)、网络通信(TCP/IP协议栈、Socket编程等)、开发工具(交叉编译、调试工具等)以及实际项目经验分享。专栏将采用理论结合实践的方式,每个知识点都会附带相关的面试真题和答案解析。

全部评论

相关推荐

02-14 16:34
门头沟学院 Java
YukiYukino:爽啊,福报,三年前我拿了offer不去,读研出来门槛也变高了
点赞 评论 收藏
分享
评论
1
2
分享

创作者周榜

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