嵌入式校招常考面试题总结

最近整理嵌入式校招的过程中常考的面试题。不同公司面试的侧重点会有所不同,但整体来看,考察范围基本集中在几个核心方向:C语言基础、单片机原理、RTOS以及Linux嵌入式。很多问题表面看起来比较基础,但面试官往往会不断深入追问细节和底层原理。

为了方便复习和查漏补缺,我把一些比较典型的面试题整理了出来。

一、C语言基础

  1. 如何理解 constvolatile 关键字?它们分别在什么场景下使用?
  2. static 关键字在函数内部、函数外部以及修饰变量时分别有什么作用?
  3. 指针和数组在本质上有什么区别?在函数参数传递时有什么不同?
  4. sizeofstrlen 的区别是什么?它们分别在什么时候计算?
  5. 结构体为什么会产生内存对齐?如何计算结构体的实际大小?
  6. 什么是野指针?常见的野指针产生场景有哪些?
  7. 堆和栈的区别是什么?各自适合什么样的内存分配场景?
  8. 宏定义和 inline 函数有什么区别?各自的优缺点是什么?
  9. C语言函数调用时,参数是如何压栈的?函数返回时栈又是如何恢复的?
  10. volatile 为什么在嵌入式开发中经常用于中断变量或硬件寄存器?

二、单片机基础

  1. 如何理解单片机中的中断机制?中断响应的基本流程是什么?
  2. 中断服务函数中为什么不建议执行复杂逻辑?
  3. 什么是GPIO?输入模式和输出模式有什么区别?
  4. 定时器在单片机中通常有哪些用途?
  5. UART、SPI、I2C 这三种通信接口分别有什么特点和使用场景?
  6. 什么是DMA?DMA相比CPU直接搬运数据有什么优势?
  7. 单片机启动后程序是从哪里开始执行的?启动流程是怎样的?
  8. 什么是看门狗?为什么在嵌入式系统中经常使用看门狗?
  9. 单片机程序如果出现跑飞,一般有哪些可能原因?
  10. 什么是寄存器映射?单片机是如何通过寄存器控制外设的?

三、RTOS

  1. RTOS 与裸机系统相比最大的区别是什么?
  2. RTOS 中任务调度的基本原理是什么?
  3. 什么是任务优先级?优先级对任务调度有什么影响?
  4. 什么是任务切换(Context Switch)?任务切换时系统会保存哪些信息?
  5. RTOS 中任务通常有哪些状态?它们之间如何转换?
  6. 什么是信号量?信号量在什么场景下使用?
  7. 互斥锁和信号量有什么区别?
  8. 什么是优先级反转?一般有哪些解决方案?
  9. RTOS 中为什么需要 Tick 中断?Tick 中断通常用来做什么?
  10. 如果系统中存在多个周期任务(例如1ms、10ms、100ms),我应该如何设计任务调度结构?

四、Linux嵌入式

  1. 如何理解 Linux 的用户态和内核态?两者有什么区别?
  2. 进程和线程有什么区别?在 Linux 中如何创建进程和线程?
  3. Linux 中进程间通信有哪些方式?各自适用于什么场景?
  4. 什么是虚拟内存?Linux 为什么需要虚拟内存机制?
  5. 什么是文件描述符?为什么 Linux 中很多资源都通过文件描述符访问?
  6. fork() 调用之后会发生什么?父子进程有什么区别?
  7. 什么是系统调用?应用程序是如何进入内核执行系统调用的?
  8. 什么是设备驱动?Linux 驱动程序在系统中的作用是什么?
  9. 什么是设备树?为什么嵌入式 Linux 中需要设备树?
  10. 交叉编译是什么?为什么嵌入式开发通常需要交叉编译?

全网最全面的嵌入式八股文专栏:https://www.nowcoder.com/creation/manager/columnDetail/mPZ4kk

结尾

嵌入式校招面试虽然涉及的知识范围比较广,但核心内容其实相对固定,主要集中在 C语言基础、硬件理解、RTOS原理以及Linux系统基础。很多面试题都会从简单问题开始,然后逐步深入到实现细节,因此在准备过程中不仅要记住概念,更重要的是理解其背后的原理。

通过系统整理和复习这些高频问题,可以帮助我们更清晰地梳理知识体系,在面试时也更容易从容应对面试官的深入追问。

全部评论
mark收藏了
点赞 回复 分享
发布于 03-14 14:35 四川

相关推荐

点赞 评论 收藏
分享
评论
点赞
5
分享

创作者周榜

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