嵌入式必备八股文总结

嵌入式开发的面试,既考察基础知识,也会结合项目实践。本文整理了常见的必备八股文内容,帮助大家快速查漏补缺。

一、C 语言与内存管理

  • 指针与数组char *p 和 char a[] 的区别?二级指针、函数指针、回调函数的用法。
  • 字符串操作strlen 和 sizeof 的区别。strcpy 与 memcpy 的不同点。
  • 内存分配malloc/free 与 new/delete 的区别。内存对齐原则,为什么要对齐?栈区、堆区、静态区、常量区的区别。
  • 常考陷阱宏定义和 inline 的区别。const、volatile、static 的用法。大端小端存储的判断。

二、数据结构与算法

  • 链表单链表、双链表、循环链表的实现与反转。快慢指针寻找环。
  • 队列与栈循环队列的判空与判满。用两个栈实现队列。
  • 排序与查找快速排序、归并排序的时间复杂度。二分查找的实现。
  • 嵌入式常见算法环形缓冲区的实现。CRC 校验的原理和实现。

三、操作系统与 RTOS

  • 任务调度抢占式与协作式调度的区别。FreeRTOS 中的优先级反转与解决方法(优先级继承)。
  • 同步机制信号量、互斥锁、事件标志组的区别。队列在任务间通信中的应用。
  • 时间管理vTaskDelay 和 vTaskDelayUntil 的区别。滴答定时器(SysTick)的作用。

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

四、Linux 系统编程

  • 进程与线程fork 与 pthread_create 的区别。进程间通信方式:管道、消息队列、共享内存、socket。
  • 文件操作POSIX 接口:open、read、write、ioctl。阻塞与非阻塞 I/O。
  • 驱动开发字符设备驱动框架:open、read、write、release。中断处理流程:注册、上下半部、tasklet、工作队列。内核态与用户态的区别。

五、硬件相关知识

  • 总线协议I2C、SPI、UART 的区别与应用场景。DMA 传输的原理。
  • 存储器Flash 擦写机制,NAND 与 NOR 的区别。EEPROM 的使用注意事项。
  • 电路基础上拉电阻和下拉电阻的作用。开漏输出与推挽输出的区别。

六、项目与实战经验

  • 常见项目移植 FreeRTOS 到 STM32。基于 OLED/液晶屏的 GUI 界面开发。使用 Socket 实现简易 FTP/HTTP 客户端。驱动开发:I2C 传感器、SPI Flash、WS2812 灯条。
  • 项目问答你在项目中遇到过的最难的 bug 是什么?如何进行内存泄漏排查?如何优化系统功耗?

七、常见加分项

  • 工具链Makefile/CMake 的基本写法。交叉编译的流程。
  • 调试能力GDB 基本命令,如何调试段错误。使用 strace/dmesg 排查问题。
  • 工程素养代码可移植性与模块化设计。单元测试与持续集成的应用。

八、总结

嵌入式八股文不仅是面试题库,更是开发中必备的基础能力。想要在面试中脱颖而出,需要做到:

  1. 基础牢固:C 语言、数据结构、RTOS。
  2. 系统理解:Linux 驱动与内核机制。
  3. 硬件结合:懂协议、会调试。
  4. 项目可讲:能从设计到调优完整复盘。

只有把八股文知识点与实际项目经验结合,才能真正展示一个能写代码、能调问题、能解决实际需求的嵌入式工程师形象。

全部评论

相关推荐

一、前言 以下为个人建议,仅供参考。当你还没有收到面试通知的时候,你就应该先做好准备,多模拟几次面试,找人一对一演练也好;对着镜子自己练习也好,一定要去做这个动作,而不是靠想。因为想要临场超常发挥,那还是想想算了。那应该提前准备一些什么呢?其实就是预测面试官的问题。一般来讲,嵌入式软件面试的流程为自我介绍、根据简历中个人技能及项目进行提问、八股文、反问等,接下来分别说一下各个环节该如何应对。二、自我介绍这一环节是大多数面试的开场白(也不是所有面试官都会让你做自我介绍,但概率极低!)。面试官需要在你进行自我介绍的过程中,再次扫一下你的简历(虽然面试官在对你进行面试之前,已经对你简历进行过分析了)。因此,在这种情况下,你的自我介绍不要再按照简历上的说,更需要突出一些简历上没有的信息或者是与你投的岗位匹配相关度高的信息。个人建议是:先介绍自己的名字➕学校专业;其次、说你与该公司行业、该岗位的匹配度(因此去面试之前需要查看公司简介、了解公司是做什么的)。在该过程中,可以引出自己做的哪些项目与岗位jd是匹配的;最后、说一下求职意向,一定要表现出你就是想来这个岗位。举例:尊敬的面试官,您好!我叫xxx,来自xx大学xx专业,今天来应聘的岗位是嵌入式软件开发。我觉得个人与该岗位的匹配度表现在以下方面………首先是xxx,其次是xxx(一定要往岗位jd上靠拢)。最后,贵公司招聘的该岗位要求里边一些技能点和我的经历是比较匹配的,另外我对xxx方向很感兴趣,该岗位与我的职业方向也是比较吻合的,因此我投递了该岗位。希望贵公司能给我这个工作机会。以上就是我的自我介绍,谢谢。三、专业技能及项目问答这一环节主要是针对你简历上的项目以及专业技能进行提问,以验证你是不是水货!因此,你需要对自己简历上的专业技能、项目经历部分上的每一个字负责!一般来讲,会让你介绍一下你的项目,或者是问你项目中的某个功能怎么实现的,驱动代码怎么写(要能口述出来,所以不建议用cube生成代码,否则连驱动都不知道怎么写)等等。在这个过程中,可能会问到你不会的问题。这个时候不要紧张,更不要不懂装懂,老老实实说你不会,然后说想试着回答一下(尽量答一些相关的点),这样也是很加分的。不要一上来就语无伦次,或者是胡编乱造。遇上不会的很正常,毕竟你不是神,关键是别扣分!三、八股文这一环节快接近尾声了,面试官想要考察一下你的基础知识。一般来讲,包括c语言知识、stm32、内核架构、rtos等。这种八股文一般来讲都是有固定答案的。所以,你在去面试的前一天,你需要好好的回顾、准确来说是背诵这些知识!一定要去背!多背,记在脑子里。并且,个人建议自己整理一个八股文合集(你也不想每次面试之前还要东翻翻,西翻翻吧),这样既能方便记忆,又能节约之后面试的准备时间,非常方便。当然,如果你懒得整理,笔者已经整理好了一份嵌入式软件开发八股文合集,有需要的同学可以私信领取即可。四、其他及反问环节这里的其他指的是一些非技术上的,但又能影响你面试结果的问题。比如说,请你说一下对我们公司的了解?你生活中的优点和缺点?你的职业规划是什么?你能给公司带来什么价值?比较感兴趣的工作内容是什么?如何开展工作等等。上面我例举的都是常见的问题,请好好准备。此外,如果面大厂的话,一般来讲手撕是跑不了的,两道题。因此,需要你自己多花时间刷力扣、牛客等,基础和中等的coding题就足够。最后,来到最后一个环节:反问。这个环节不管你有没有问题,麻烦你一定要问好吗?你不问,那offer也不会问你。通常来讲,反问环节可问以下问题(举例,仅供参考):问进来以后会做什么业务产品?会在哪个部门?部门架构?承担的工作内容是什么?等等…最后的最后,本次分享内容就到这里,感谢观看!如果你能看到这里,相信你面试会通过的,祝大家秋招/春招上岸!如果有需要《嵌入式软件开发八股文合集》、个人开源的mcu➕rtos项目等资料,请私信笔者领取即可
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-21 10:04
已编辑
点赞 评论 收藏
分享
评论
点赞
12
分享

创作者周榜

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