嵌入式开发笔试考什么
好的,嵌入式开发笔试通常涵盖多个方面的知识,目的是考察候选人的基础知识、实践能力和解决实际工程问题的潜力。以下是常见的考察内容和题型:
一、核心基础知识
-
C/C++ 程序设计: 这是嵌入式开发最主要的语言。
- 基础语法: 数据类型、运算符、控制流(条件、循环)、函数(参数传递、作用域、递归)。
- 指针: 指针的理解、应用极其重要!包括:指针运算、指针与数组的关系、多级指针、函数指针、
const用法。 - 内存管理:
malloc/free(C) 或new/delete(C++) 的原理、使用和注意事项(内存泄漏、野指针)。- 栈和堆的区别。
- 数据结构:
- 链表(单向、双向、循环)的操作(插入、删除、遍历)。
- 栈和队列的实现。
- 二叉树基础(遍历)。
- Hash表原理。
- 位操作: 嵌入式经常需要直接操作寄存器,位操作(
&,|,^,~,<<,>>)是必备技能。 - 结构体与联合体:
- 内存对齐(非常重要!笔试常考)。
- 位域(Bit fields)的使用。
- 联合体(Union)的用途(节省内存、类型转换)。
- 关键字:
static,extern,volatile,const,register的理解。
-
计算机组成原理:
- CPU基本组成(ALU, 寄存器, PC)。
- 存储体系:Cache的作用(提高访问速度)、RAM、ROM(Flash/PROM/EEPROM)的区别与用途。
- 总线概念(地址总线、数据总线、控制总线)。
- 冯·诺依曼体系结构/哈佛体系结构的区别。
-
数字电路基础:
- 基本的逻辑门电路(与、或、非、与非、或非、异或)及其真值表。
- 组合逻辑与时序逻辑的概念。
- 基本触发器(如D触发器)的作用。
- ADC/DAC的基本概念(分辨率、采样率)。
- CPU时钟、复位电路的基本理解。
二、嵌入式系统特有知识
-
微控制器/微处理器:
- 常见架构特点:ARM Cortex-M/M0+/M3/M4/A7/A9, AVR, PIC, RISC-V 等。Cortex-M系列是主流。
- CPU工作模式(特权模式、用户模式)及其切换。
- 中断系统:
- 中断向量表。
- 中断服务程序。
- 中断优先级、嵌套。
- 中断使能与禁止。
- 中断与轮询的区别。
- 外设接口通信协议: 非常重要!
- UART/USART: 异步串行通信,波特率配置,起始位/停止位/奇偶校验,多处理通信协议(Modbus等)可能涉及。
- SPI: 全双工同步串行通信,主从模式,时钟极性与相位(CPOL/CPHA)。
- I2C: 两线制同步串行通信,开漏输出、上拉电阻,起始信号/停止信号/应答信号,地址寻址。
- CAN: 差分信号,帧格式(标准帧/扩展帧),仲裁机制(载波侦听/非破坏性仲裁)。
- USB: OTG概念、设备类(HID/CDC等)、端点(EP)、数据传输方式(控制、中断、批量、同步)。
- 定时器/计数器: 输入捕获、输出比较、PWM信号生成、定时器中断。
- 看门狗: 作用和配置。
- GPIO: 输入/输出模式(推挽、开漏)、上下拉电阻、驱动能力、端口重映射。
- ADC/DAC: 通道选择、采样精度、基准电压、转换时间。
-
操作系统基础(对于有OS的开发):
- 实时操作系统: 实时性概念(硬实时、软实时)。
- 任务/线程/进程: 区别与联系(在RTOS中通常是多任务)。
- 任务调度:
- 调度策略:抢占式/非抢占式、优先级调度(固定优先级/动态优先级)、轮转调度。
- 优先级反转问题及其解决方案(优先级继承/优先级天花板)。
- 同步与通信机制:
- 信号量: 二进制信号量、计数信号量。互斥锁(Mutex)是特殊的二进制信号量。
- 消息队列/邮箱: 任务间传递数据的机制。
- 事件标志组/事件集: 事件触发机制。
- 死锁的原因与预防。
- 中断管理与上下文切换: 中断在RTOS中的作用。
- 内存管理: 堆内存管理(如
malloc在RTOS中的实现)、内存池。 - 时间管理: 系统时钟滴答、时间片、超时机制。
- 常用RTOS: FreeRTOS, RT-Thread, μC/OS-II/III等的基本概念(通常不会考具体API)。
-
Linux驱动开发基础(如果涉及Linux):
- Linux内核模块基本概念(编译、加载、卸载)。
- 字符设备驱动框架(
file_operations结构体)。 /proc,/sys文件系统的作用。- 用户空间与内核空间数据交互(
copy_to_user/copy_from_user)。 - 基本的内核同步机制(自旋锁
spinlock,互斥锁mutex)。 - DTB/设备树的概念(新趋势)。
-
开发调试:
- 交叉编译环境的概念。
- 嵌入式系统启动流程(Bootloader -> Kernel -> RootFS -> App)。
- JTAG/SWD调试接口的作用(烧写、单步、断点调试)。
- 常用的调试手段(LED、UART打印Log、在线调试器、逻辑分析仪)。
三、扩展知识(可能加分项)
- 网络基础: TCP/IP基础(四层模型),HTTP, MQTT等协议概念。
- 脚本语言: Python/Shell脚本用于自动化测试或辅助开发。
- 通信模块: WiFi、蓝牙、LoRa等无线模块的基本使用。
- RTOS高级特性: 软件定时器、任务通知、动态创建任务/信号量等。
四、常见题型
- 选择题: 考察基础知识覆盖面广,速度快。
- 填空题: 考察关键知识点的记忆,如位操作、寄存器配置、数据类型大小。
- 判断题: 考察概念理解的正误。
- 简答题: 解释概念(如中断过程、SPI时序、UART帧格式、优先级反转及解决方法)。
- 程序分析题:
- 读代码找错误(内存泄漏、越界、悬垂指针、死锁)。
- 读代码解释功能或预测输出结果(特别是涉及指针、位操作、内存对齐的代码)。
- 读代码优化性能或内存。
- 编程题:
- 数据结构算法(链表操作、排序、查找 - 通常比互联网算法题简单)。
- 位操作(设置、清除、翻转特定位)。
- 模拟底层操作(用软件模拟简单的通信协议时序如I2C、SPI)。
- 中断服务函数框架(设置标志、保护现场等)。
- RTOS编程(用伪代码或特定RTOS API 写任务、创建信号量、使用队列等)。
- 驱动编程(填充关键函数)。
- 系统设计题: (难度较高,通常出现在高级职位)
- 设计一个小型系统或框架。
- 优化系统性能/内存/功耗。
- 设计多任务架构或通信机制。
- 调试一个复杂问题的思路。 (非常常见!考察解决问题的思路和实际经验)
准备建议
- 吃透基础: C语言是重中之重,特别是指针和内存管理。计算机组成原理和基本电路知识是根基。
- 精通通信协议: SPI, I2C, UART 的原理和细节必须烂熟于心,CAN, USB也需了解。这是重灾区。
- 深入理解MCU/CPU架构: 关注你所面试公司使用的平台(通常是ARM Cortex-M)。
- OS知识根据要求准备: 明确职位是否要求RTOS或Linux驱动开发经验,对应复习FreeRTOS/RTT/uC/OS基础或Linux驱动框架。
- 刷经典笔试题: 网上能找到很多嵌入式开发的经典笔试题目(特别是C语言和通信协议相关的)。
- 动手实践: 理解理论最好的方式就是动手写代码、调板子。
- 思考调试思路: 遇到一个硬件问题或软件问题,你会怎么一步一步调试定位并解决?
总结来说,嵌入式开发笔试的核心在于扎实的C语言功底、深入理解硬件与MCU工作原理、熟练应用常见通信协议,并具备操作系统(特别是RTOS)的基本概念和解决问题的能力(调试)。 备考时务必结合目标公司的招聘要求和可能使用的技术栈进行重点突破。祝你笔试顺利!
嵌入式开发前景怎么样?
嵌入式开发前景非常广阔,这主要得益于物联网、人工智能、大数据等技术的快速发展,以及嵌入式系统在各个领域的广泛应用。以下是对嵌入式开发前景的详细分
2024-07-10 09:00:29
Linux系统的嵌入式开发是什么
嵌入式开发听起来很高大上,但其实它就在我们身边。 嵌入式开发是指将操作系统、应用程序或数据存储在嵌入式设备中,如手机、平板电脑、智能家
2023-10-12 15:40:39
MAC上的嵌入式开发笔记分享
关于MAC上的嵌入式开发笔记1软件选择安装需要注意的问题软件选择由于我不想使用虚拟机和其他安装win软件的东西(嫌麻烦),在查阅资料后得知意法半导体的一套软件都有mac版,于是选择全家桶,即
python做嵌入式开发_Python和嵌入式的区别是什么?可以做嵌入式开发吗?
从概念上来说,嵌入式和Python的区别还是比较明显的,嵌入式是一个开发领域,而Python则是一门编程语言。下面就来和大家说一说
资料下载
王伟
2021-11-02 20:21:02
嵌入式开发(一):嵌入式开发新手入门
本篇文章整理下嵌入式开发中一些入门的基础技能,都是根据以往的工程经验整理,适用于之前没做过嵌入式开发的新手。嵌入式开发流程一般如下,一般是在PC
资料下载
佚名
2021-10-14 10:58:31
如何快速熟练掌握嵌入式开发嵌入式开发工程师需要做哪些事情
怎样才能快速熟练掌握嵌入式开发呢?成熟的嵌入式开发工程师需要做哪些事情?是很多新手朋友想要了解的,那么今天我们来简单的介绍一下
资料下载
佚名
2019-05-09 18:17:00
Pytorch代码移植嵌入式开发笔记,错过绝对后悔
@[TOC]Pytorch 代码移植嵌入式开发笔记目前在做开发完成后的AI模型移植到前端的工作。 由于硬件设施简陋,需要把代码和算法翻译成基础加乘算法并输出每个环节参数。记录几点实用技巧以及项目
关于MAC上的嵌入式开发笔记
关于MAC上的嵌入式开发笔记2使用ST-LINK进行调试使用ST-LINK进行调试在实际使用的过程中发现,从建立程序到下载cubeide可以包办,其他两个不需要装,就是刚买的st-link v2需要
嵌入式开发的流程_嵌入式开发的前景
当前,嵌入式开发已经逐步规范化,在遵循一般工程开发流程的基础上,嵌入式开发有其自身的一些特点。主要包括系统需求分析(要求有严格规范的技术要求)、
2020-07-30 11:23:57
Java开发和嵌入式开发该如何选择
首先,Java开发和嵌入式开发都是目前IT行业内比较常见的开发岗位,也都有大量的从业人员,所以从就业的角度来看,学习Java
2019-06-10 11:37:47
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- EDA是什么?有什么作用?
- dtmb信号覆盖城市查询
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- amoled屏幕和oled区别
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机