登录/注册

嵌入式开发笔试考什么

更多

好的,嵌入式开发笔试通常涵盖多个方面的知识,目的是考察候选人的基础知识、实践能力和解决实际工程问题的潜力。以下是常见的考察内容和题型:

一、核心基础知识

  1. C/C++ 程序设计: 这是嵌入式开发最主要的语言。

    • 基础语法: 数据类型、运算符、控制流(条件、循环)、函数(参数传递、作用域、递归)。
    • 指针: 指针的理解、应用极其重要!包括:指针运算、指针与数组的关系、多级指针、函数指针、const用法。
    • 内存管理:
      • malloc/free (C) 或 new/delete (C++) 的原理、使用和注意事项(内存泄漏、野指针)。
      • 栈和堆的区别。
    • 数据结构:
      • 链表(单向、双向、循环)的操作(插入、删除、遍历)。
      • 栈和队列的实现。
      • 二叉树基础(遍历)。
      • Hash表原理。
    • 位操作: 嵌入式经常需要直接操作寄存器,位操作(&, |, ^, ~, <<, >>)是必备技能。
    • 结构体与联合体:
      • 内存对齐(非常重要!笔试常考)。
      • 位域(Bit fields)的使用。
      • 联合体(Union)的用途(节省内存、类型转换)。
    • 关键字: static, extern, volatile, const, register的理解。
  2. 计算机组成原理:

    • CPU基本组成(ALU, 寄存器, PC)。
    • 存储体系:Cache的作用(提高访问速度)、RAM、ROM(Flash/PROM/EEPROM)的区别与用途。
    • 总线概念(地址总线、数据总线、控制总线)。
    • 冯·诺依曼体系结构/哈佛体系结构的区别。
  3. 数字电路基础:

    • 基本的逻辑门电路(与、或、非、与非、或非、异或)及其真值表。
    • 组合逻辑与时序逻辑的概念。
    • 基本触发器(如D触发器)的作用。
    • ADC/DAC的基本概念(分辨率、采样率)。
    • CPU时钟、复位电路的基本理解。

二、嵌入式系统特有知识

  1. 微控制器/微处理器:

    • 常见架构特点: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: 通道选择、采样精度、基准电压、转换时间。
  2. 操作系统基础(对于有OS的开发):

    • 实时操作系统: 实时性概念(硬实时、软实时)。
    • 任务/线程/进程: 区别与联系(在RTOS中通常是多任务)。
    • 任务调度:
      • 调度策略:抢占式/非抢占式、优先级调度(固定优先级/动态优先级)、轮转调度。
      • 优先级反转问题及其解决方案(优先级继承/优先级天花板)。
    • 同步与通信机制:
      • 信号量: 二进制信号量、计数信号量。互斥锁(Mutex)是特殊的二进制信号量。
      • 消息队列/邮箱: 任务间传递数据的机制。
      • 事件标志组/事件集: 事件触发机制。
      • 死锁的原因与预防。
    • 中断管理与上下文切换: 中断在RTOS中的作用。
    • 内存管理: 堆内存管理(如malloc在RTOS中的实现)、内存池。
    • 时间管理: 系统时钟滴答、时间片、超时机制。
    • 常用RTOS: FreeRTOS, RT-Thread, μC/OS-II/III等的基本概念(通常不会考具体API)。
  3. Linux驱动开发基础(如果涉及Linux):

    • Linux内核模块基本概念(编译、加载、卸载)。
    • 字符设备驱动框架(file_operations结构体)。
    • /proc, /sys 文件系统的作用。
    • 用户空间与内核空间数据交互(copy_to_user/copy_from_user)。
    • 基本的内核同步机制(自旋锁spinlock,互斥锁mutex)。
    • DTB/设备树的概念(新趋势)。
  4. 开发调试:

    • 交叉编译环境的概念。
    • 嵌入式系统启动流程(Bootloader -> Kernel -> RootFS -> App)。
    • JTAG/SWD调试接口的作用(烧写、单步、断点调试)。
    • 常用的调试手段(LED、UART打印Log、在线调试器、逻辑分析仪)。

三、扩展知识(可能加分项)

四、常见题型

  1. 选择题: 考察基础知识覆盖面广,速度快。
  2. 填空题: 考察关键知识点的记忆,如位操作、寄存器配置、数据类型大小。
  3. 判断题: 考察概念理解的正误。
  4. 简答题: 解释概念(如中断过程、SPI时序、UART帧格式、优先级反转及解决方法)。
  5. 程序分析题:
    • 读代码找错误(内存泄漏、越界、悬垂指针、死锁)。
    • 读代码解释功能或预测输出结果(特别是涉及指针、位操作、内存对齐的代码)。
    • 读代码优化性能或内存。
  6. 编程题:
    • 数据结构算法(链表操作、排序、查找 - 通常比互联网算法题简单)。
    • 位操作(设置、清除、翻转特定位)。
    • 模拟底层操作(用软件模拟简单的通信协议时序如I2C、SPI)。
    • 中断服务函数框架(设置标志、保护现场等)。
    • RTOS编程(用伪代码或特定RTOS API 写任务、创建信号量、使用队列等)。
    • 驱动编程(填充关键函数)。
  7. 系统设计题: (难度较高,通常出现在高级职位)
    • 设计一个小型系统或框架。
    • 优化系统性能/内存/功耗。
    • 设计多任务架构或通信机制。
    • 调试一个复杂问题的思路。 (非常常见!考察解决问题的思路和实际经验)

准备建议

  1. 吃透基础: C语言是重中之重,特别是指针和内存管理。计算机组成原理和基本电路知识是根基。
  2. 精通通信协议: SPI, I2C, UART 的原理和细节必须烂熟于心,CAN, USB也需了解。这是重灾区。
  3. 深入理解MCU/CPU架构: 关注你所面试公司使用的平台(通常是ARM Cortex-M)。
  4. OS知识根据要求准备: 明确职位是否要求RTOS或Linux驱动开发经验,对应复习FreeRTOS/RTT/uC/OS基础或Linux驱动框架。
  5. 刷经典笔试题: 网上能找到很多嵌入式开发的经典笔试题目(特别是C语言和通信协议相关的)。
  6. 动手实践: 理解理论最好的方式就是动手写代码、调板子。
  7. 思考调试思路: 遇到一个硬件问题或软件问题,你会怎么一步一步调试定位并解决?

总结来说,嵌入式开发笔试的核心在于扎实的C语言功底、深入理解硬件与MCU工作原理、熟练应用常见通信协议,并具备操作系统(特别是RTOS)的基本概念和解决问题的能力(调试)。 备考时务必结合目标公司的招聘要求和可能使用的技术栈进行重点突破。祝你笔试顺利!

嵌入式开发前景怎么样?

嵌入式开发前景非常广阔,这主要得益于物联网、人工智能、大数据等技术的快速发展,以及嵌入式系统在各个领域的广泛应用。以下是对嵌入式开发前景的详细分

2024-07-10 09:00:29

Linux系统的嵌入式开发是什么

嵌入式开发听起来很高大上,但其实它就在我们身边。   嵌入式开发是指将操作系统、应用程序或数据存储在嵌入式设备中,如手机、平板电脑、智能家

2023-10-12 15:40:39

MAC上的嵌入式开发笔记分享

关于MAC上的嵌入式开发笔记1软件选择安装需要注意的问题软件选择由于我不想使用虚拟机和其他安装win软件的东西(嫌麻烦),在查阅资料后得知意法半导体的一套软件都有mac版,于是选择全家桶,即

2021-12-24 07:02:13

Qt嵌入式开发笔

Qt嵌入式开发笔记,未完整qmake,qt元对象系统,内存管理,信号与槽,事件处理,多线程开发

资料下载 英雄孤寂 2021-11-03 10:21:02

python做嵌入式开发_Python和嵌入式的区别是什么?可以做嵌入式开发吗?

从概念上来说,嵌入式和Python的区别还是比较明显的,嵌入式是一个开发领域,而Python则是一门编程语言。下面就来和大家说一说

资料下载 王伟 2021-11-02 20:21:02

嵌入式开发资料免费分享

嵌入式开发资料免费分享嵌入式工程师经验分享:如何学习嵌入式开发截取文档部分学习嵌入式

资料下载 佚名 2021-10-21 11:07:55

嵌入式开发(一):嵌入式开发新手入门

本篇文章整理下嵌入式开发中一些入门的基础技能,都是根据以往的工程经验整理,适用于之前没做过嵌入式开发的新手。嵌入式开发流程一般如下,一般是在PC

资料下载 佚名 2021-10-14 10:58:31

如何快速熟练掌握嵌入式开发嵌入式开发工程师需要做哪些事情

怎样才能快速熟练掌握嵌入式开发呢?成熟的嵌入式开发工程师需要做哪些事情?是很多新手朋友想要了解的,那么今天我们来简单的介绍一下

资料下载 佚名 2019-05-09 18:17:00

Pytorch代码移植嵌入式开发笔记,错过绝对后悔

@[TOC]Pytorch 代码移植嵌入式开发笔记目前在做开发完成后的AI模型移植到前端的工作。 由于硬件设施简陋,需要把代码和算法翻译成基础加乘算法并输出每个环节参数。记录几点实用技巧以及项目

2021-11-08 08:24:37

大佬都在看的Qt嵌入式开发笔

Qt嵌入式开发笔记,未完整qmake,qt元对象系统,内存管理,信号与槽,事件处理,多线程开发

2021-11-08 07:26:00

关于MAC上的嵌入式开发笔

关于MAC上的嵌入式开发笔记2使用ST-LINK进行调试使用ST-LINK进行调试在实际使用的过程中发现,从建立程序到下载cubeide可以包办,其他两个不需要装,就是刚买的st-link v2需要

2021-11-05 09:27:13

嵌入式开发的产品有哪些_嵌入式开发的流程

本文主要阐述了嵌入式开发的产品,其次介绍了嵌入式开发的流程。

2020-08-31 15:38:26

嵌入式开发的流程_嵌入式开发的前景

当前,嵌入式开发已经逐步规范化,在遵循一般工程开发流程的基础上,嵌入式开发有其自身的一些特点。主要包括系统需求分析(要求有严格规范的技术要求)、

2020-07-30 11:23:57

如何看待Java开发嵌入式开发

首先,Java开发和嵌入式开发都是目前IT行业内比较常见的开发岗位,也都有大量的从业人员,所以从就业的角度来看,学习Java

2019-06-15 10:33:46

Java开发嵌入式开发该如何选择

首先,Java开发和嵌入式开发都是目前IT行业内比较常见的开发岗位,也都有大量的从业人员,所以从就业的角度来看,学习Java

2019-06-10 11:37:47

7天热门专题 换一换
相关标签