嵌入式类岗位大致分为以下几个类型:嵌入式软件开发工程师、驱动工程师、系统软件开发工程师、应用软件工程师、嵌入式测试工程师;还有一些:电子研发工程师、C/C++软件工程师(嵌入式)、智能驾驶软件工程师、机器人软件工程师、硬件产品经理等等。1.1. 嵌入式软件开发工程师A公司岗位描述:1、负责设备软件的设计和交付,包括单片机嵌入式开发、DSP嵌入式软件开发、多线程多任务的动态调度、动态内存管理等软件关键技术研究;2、负责设备软件研发及商用过程中的功能、性能、功耗、可靠性等问题的定位解决;3、负责设备软件新技术的预研和产品实现,提升产品优势;4、跟进行业新技术动态,参与新技术的研究,并能引入到产品开发中。A公司任职要求:1、熟练掌握汇编/C/C++编程语言和基本的常用数据结构,了解操作系统原理;2、熟悉Linux系统编程,嵌入式系统,ARM或单片机,RTOS实时操作系统;3、熟悉HTTP/TCP/UDP等网络协议,熟悉一种或以上接口协议优佳,如:USB、UART、Ethernet、PCIE、EMMC、I2C、SPI等;4、有嵌入式系统或产品的开发项目经验优先;小结:嵌入式软件开发工程师主要负责该部门嵌入式产品的研发工作,固件开发,单元测试,代码维护等,提升产品优势。很多公司都是大类嵌入式软件开发工程师,而不进行驱动、系统、应用工程师等区分。1.2. 驱动工程师B公司岗位描述:1、负责底层驱动及上层应用的开发和调试,外设驱动的开发优化工作,比如Camera、LCD、Sensor等;2、负责软硬件结合新器件技术预研和开发工作;B公司任职要求:(与A公司要求相差不大)C芯片公司驱动岗位描述:1、设计和开发驱动程序(user mode, kernel mode, firmware etc),HAL/API,提供应用程序库的支持,提供包括内存管理,任务管理,硬件资源管理等功能;2、建立驱动程序的开发环境,包括硅前和硅后测试和调试环境,以及相关驱动程序测试工具;3、与硬件工程师和软件工程师协调提供解决平台中出现的问题。C芯片公司任职要求:1、精通C/C++编程,有Linux编程经验者优先;2、熟悉计算机体系构架,算法设计等;3、具备CUDA/OpenCL/GPU shader programming知识和经验者优先;4、有较强学习新知识的能力;具备较强的沟通能力。小结:驱动工程师主要是编写和移植各种芯片驱动,优化硬件设备驱动,一般驱动工程师指Linux上的驱动开发工程师,所以需要精通Linux驱动框架,结合芯片本身去编写驱动,所以芯片公司招聘嵌入式相关的岗位一般是驱动工程师。1.3. 系统软件开发工程师D公司岗位描述:1、参与soc软件开发,包括soc bring up软件开发、IP驱动软件开发、bootloader软件开发、操作系统移植等;2、参与soc 软件、硬件系统验证;3、参与板级外设驱动软件开发与调试;4、参与soc BSP 、soc SDK 软件开发、软件测试。D公司任职要求: (与A公司要求相差不大)小结:系统软件开发工程师主要是编写固件,需要熟悉整个操作系统组成与调度,对固件的稳定性高求很高,是驱动和应用的基础。1.4. 应用软件工程师E公司岗位描述:1、负责嵌入式系统的搭建与维护,熟悉芯片驱动、嵌入式OS、SD接口定义;2、负责软件系统的跨芯片移植(如:NXP系列、STM32系列);3、负责系统集成以及调试工作;4、负责进行嵌入式软件系统的应用开发、优化。E公司任职要求: (与A公司要求相差不大)小结:应用软件工程师主要是编写业务逻辑程序,调用驱动工程师提供的接口控制设备,软件开发过程所涉内容范围非常广,主要使用C语言开发,但经常会涉及其它语言、数据库、前端后台、各种通讯协议等。1.5. 嵌入式测试工程师F公司岗位描述:1、负责嵌入式项目功能测试、性能测试、SDK测试或者自动化测试;2、根据产品需求制定测试方案、设计测试用例,搭建测试环境;3、依据测试用例完成产品的功能测试、硬件指标测试等,记录测试结果,报告与跟踪产品缺陷,并协助研发人员进行缺陷定位与重现;4、编写测试报告,根据测试结果评估软件质量;5、进行测试总结,编写测试相关文档,对测试中存在的问题及时分析与解决,并提出改进建议E公司任职要求:1、有嵌入式软件开发的经验优先;2、有脚本语言(如python/shell)的使用经验;3、有Linux下的自动测试和测试开发的经验;4、熟悉嵌入式调试技术及工具;5、具备良好的沟通表达能力,良好的分析解决问题的能力;剩余的大佬面经总结了 链接在下边 c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM