嵌入式经典百套大厂面试题总结(持续更新中)

本专栏整理了国内主流科技公司和制造企业的嵌入式岗位面试题,涵盖互联网、AI、汽车、硬件等多个领域,帮助求职者系统准备面试。

📚 目录结构

禾赛科技 嵌入式软件工程师一面

禾赛科技 嵌入式软件工程师二面

大疆智能驾驶软件工程一面

大疆智能驾驶软件工程二面

特斯拉-嵌入式软件开发方向-一面

特斯拉-嵌入式软件开发方向-二面

安克创新 嵌入式 一面

安克创新 嵌入式 二面

龙旗科技Linux驱动开发 一面试题

龙旗科技Linux驱动开发 二面试题

龙旗科技Linux驱动开发 HR面

英诺菲特科技 嵌入式软件开发 一面

英诺菲特科技 嵌入式软件开发 二面

北京零零科技 嵌入式软件开发一面

北京零零科技 嵌入式软件开发二面

移远通信 嵌入式软件开发 一面

移远通信 嵌入式软件开发 二面

深圳爱培科 嵌入式工程师一面

深圳爱培科 嵌入式工程师二面

极氪-C++嵌入式开发方向-一面

极氪-C++嵌入式开发方向-二面

影石-嵌入式软件开发-一面

影石-嵌入式软件开发-二面

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

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

虹软科技 嵌入式开发软件 一面

虹软科技 嵌入式开发软件 二面

极氪-C++嵌入式开发方向-一面

极氪-C++嵌入式开发方向-二面

联想嵌入式软件开发 一面

联想嵌入式软件开发 二面

小鹰锐视-嵌入式开发 一面 面经

小鹰锐视-嵌入式开发 二面 面经

最近帮大家总结了非常多经典的面试题,涵盖有C++,嵌入式MCU和Linux等多个方向的。

其他内容正在持续更新中。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

🎯 涵盖技术栈

基础知识

  • C/C++编程
  • 数据结构与算法
  • 操作系统原理
  • 计算机网络
  • Linux系统编程

嵌入式核心

  • ARM架构与汇编
  • RTOS(FreeRTOS、RT-Thread等)
  • 裸机开发
  • Bootloader
  • 驱动开发

通信协议

  • CAN/LIN总线
  • I2C/SPI/UART
  • 以太网/TCP/IP
  • MQTT/CoAP
  • 蓝牙/WiFi/4G/5G

汽车电子

  • AUTOSAR
  • ISO 26262功能安全
  • UDS诊断协议
  • OTA升级
  • BMS/VCU/电机控制

AI与算法

  • 深度学习框架
  • 模型部署与优化
  • 计算机视觉
  • 语音处理
  • 边缘计算

工具与规范

  • Git版本控制
  • MISRA C编码规范
  • 单元测试
  • 调试工具(GDB、JTAG等)
  • 性能分析

💡 使用建议

  1. 按公司准备:根据目标公司选择对应的面试题进行重点复习
  2. 按方向准备:根据岗位方向(如汽车电子、IoT、AI等)系统学习
  3. 循序渐进:先掌握基础知识,再深入专业领域
  4. 实践结合:理论学习配合项目实践,准备好项目经历
  5. 模拟面试:找同学或朋友进行模拟面试,提升表达能力

📝 面试准备清单

  • [ ] 基础知识扎实(C/C++、数据结构、操作系统)
  • [ ] 至少2-3个完整的项目经历
  • [ ] 熟悉目标岗位的核心技术栈
  • [ ] 了解目标公司的产品和技术方向
  • [ ] 准备好自我介绍和常见问题回答
  • [ ] 整理技术难点和解决方案
  • [ ] 准备好要问面试官的问题

🔥 高频考点

  1. 指针与内存管理:指针运算、内存泄漏、野指针
  2. 多线程与同步:互斥锁、信号量、死锁
  3. 中断与异常:中断处理流程、优先级、中断嵌套
  4. 通信协议:CAN总线、I2C时序、SPI配置
  5. 算法题:链表、树、排序、动态规划
  6. 项目经历:技术难点、解决方案、项目亮点

⚠️ 注意事项

  • 面试题仅供参考,实际面试内容会有变化
  • 答案为参考答案,可根据个人理解适当调整
  • 建议深入理解原理,而非死记硬背
  • 不同岗位侧重点不同,需针对性准备
  • 保持学习热情,关注行业最新技术动态
全部评论

相关推荐

前言 在之前推出的项目中,有很多粉丝私信我,到底什么是bootloader?什么是APP?是手机APP那种吗?有什么用?解决什么问题等等。因此,笔者再发一次详细版。1.为什么要用固件升级功能?我尽量一句话说清楚:目的就是为了产品发布以后想要对产品中的固件程序进行更新,那就需要重新烧录程序,但是产品一般都封装完好,不能拆开进行烧录调试,此时就需要IAP通过预留的通信接口(包括但不仅限于串口、IIC、SPI、CAN等通信方式),将所要更新的程序传入设备,以达到快速更新程序。比如汽车的OTA更新,如果不用OTA更新,只能去线下把汽车拆开再烧程序了,非常麻烦。其中,IAP全称是In Application Programing,即在程序中编程,意思就是说把需要更新的程序传入原来的程序中,原来的程序接收到了更新程序,就跳转到更新程序去执行。2 .什么是bootloader和APP程序(高频考点)?Bootloader叫做引导加载程序。在嵌入式系统上电复位后首先运行引导加载程序,它的功能主要是负责系统的上电自检、必要的硬件初始化、建立储存空间映射,并加载和启动操作系统。Bootloader一般储存在bootROM中,当前使用最多的类型是NOR flash rom,在大多数的嵌入式系统中,flash里边不仅储存了bootloader,还储存了用户程序代码。Bootloader有两种工作模式,一种是启动加载模式,另一种是下载模式;而提到的固件升级就属于bootloader的下载模式。比如博主的整个烟机项目就是一个巨大的bootloader程序,因为它能接收固件并进行跳转执行。3.为什么不做一个只有更新功能的bootloader,非要在bootloader里边实现如此多的功能呢?因为在产品中固件更新功能只是为了以防万一,有需要更新的时候才进行更新,不需要更新的时候用原来的功能就够了。接下来说一下什么是APP程序。APP指的就是需要传输的更新固件,不是手机APP,通常以.bin文件形式发送。又有粉丝问,那为什么要用bin文件,而不用hex文件呢?因为hex文件是包含地址信息的ASCII文本文件,可直接用于烧录;bin文件是纯二进制数据文件,不含地址信息,烧录时需要指定起始地址。刚好APP区域的划分是由我们自行划分的,起始地址只能自己指定,APP程序自然是要烧录到APP区域执行,因此需要未指定起始地址的bin文件。4. 固件升级的工作原理是什么?固件升级的工作原理实际上就是:先将整个Flash划分成boot区和APP区(前提为flash升级),boot区专门用于执行bootloader,APP区专门执行APP程序;然后将bootloader烧录到boot区,接下来通过上位机传入固件,此时bootloader接收固件并跳转到APP区域执行固件。上述这段话是一个总结,接下来从STM32的上电启动流程、bootloader到底干了什么以及APP程序如何跳转三个层面来进行具体分析。(1)STM32上电启动流程(以下是高频考点)当STM32发生复位时,此时硬件会强制PC寄存器指向一个固定地址0X00000000(或者是由boot引脚映射的0x08000000),该地址存放的是主堆栈指针(MSP)的初始值,内核会读取该值并进行堆栈初始化,以创建好C环境以及安全调用中断服务函数。其次,PC寄存器会执行到0x00000004地址,取出该地址存放的复位中断处理函数,并跳转过去执行;在复位函数中,首先完成系统时钟的初始化,其次调用__main函数,完成数据的初始化,如将Flash中的data段数据拷贝到RAM中,然后将未初始化的全局变量(bss段)清零。最后,__main函数调用main函数,进入到main函数执行。(2)bootloader程序在固件升级中到底干了什么?一句话说清楚这个问题。实际上,在固件升级功能中,bootloader就干了三件事情:1、接收上位机传输的固件保存到RAM中;2、将RAM上的固件拷贝到Flash;3、跳转到APP执行。(3)APP程序怎么跳转的?跳转APP程序操作实际上就一行代码--调用jump2app()。那为什么调用这个函数就行了呢?答案是jump2app是一个函数指针,直白点,它就是一个地址0x00000004+M(M是偏移量,或者说是boot区与APP区的分界线);这个地址看起来很熟悉对吧?因为才在上电启动流程里边见过,不同的是多了一个M,这代表的意思是在APP区里重新创建了一个新的中断向量表(依然0x00000000+M存放堆栈指针MSP、0x00000004+M存放复位向量)。理解了这行地址代表的含义之后,我们再来看jump2app()的含义。这实际上就是取地址操作(这里我不多解释了,如果你不明白,说明你C语言基础还要补),而这个地址里存放的是APP区的复位向量。因此,此处代表的意思就是取出复位向量并跳转执行,也就是执行到了APP区的复位中断服务函数中,然后再次执行系统时钟的初始化、调用__main函数初始化数据,最后调用APP的main函数执行。到此处,开始执行APP程序的main函数功能,跳转APP程序执行成功。
点赞 评论 收藏
分享
03-13 00:04
已编辑
吉林大学 Java
约面的挺突然。。狠下心接了1.自我介绍2.讲讲JAVA的反射3.可以继续讲讲AOP,动态代理[ 因为讲反射不小心吟唱到了例如AOP的动态代理,但是这块记忆的非常不熟,结果磕磕绊绊 ]4.项目我看你写了AOP和注解,具体怎么实现滑动窗口限流的[ 梦到什么说什么,吟唱八股发散千万不要散到自己不熟悉的区域 ]5.也讲讲为什么另一个项目选择令牌桶,具体流程6. OK,讲讲 Redis 的数据类型?还有吗?就了解这五种嘛[ 把5个的基础类型从应用对比到历届底层全都吟唱了一遍。一句还有吗直接没力气了,简历就写了理解5种,别的我是真一点没看TT ]7.讲讲Redission分布式锁实现8.这个指数退避怎么实现的9.在这里有考虑去保障幂等性嘛10.这里为什么使用指数退避呢? 什么时候用均匀重传[已经晕过去了说不了解,刚说了后就意识到,估计应该说指数退避能缓解压力防止下游服务器雪崩之类的]11.ok,那讲讲JMM12.讲讲RocketMQ如何保证的不丢消息13.讲讲RocketMQ延迟消息原理14.讲讲项目Redis实现会话记忆这一块15.如果ai调用function calling出现幻觉,有考虑怎么解决吗?[ 不了解,面试官说什么接口幂等化,高危操作人工防护,没在听,感觉人已经飞升了TT ]16.mcp了解嘛?和function calling有什么区别[ 依旧不了解,只能说了个前者规范架构抽象解耦,后者耦合高只能算个工具调用]17.AI生成代码的代码质量怎么保障,那平时如何review的呢18.算法。lc215  数组中最大第k个元素19.打算考研还是本科就业20.反问1️⃣有哪里不足,有哪些需要提高的部分。[主要说知识广度不够,多刷算法,让我别太紧张]2️⃣部门业务会做什么人生第二次面试。感觉大厂面试官的气场压力很大应该凉了不过这次面试非常锻炼心态,多面试,多面试。
冰炸橙汁_不做oj版:redis除了五种基本数据类型,其他的几种还是要掌握一下的,挺常用
点赞 评论 收藏
分享
评论
点赞
4
分享

创作者周榜

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