登录/注册

嵌入式开发c面试题

更多

以下是一些常见的嵌入式C语言开发面试题及参考答案,涵盖了基础、深入和嵌入式特有的知识点:


1. 指针相关

问题:volatile关键字的作用?举一个嵌入式中的例子


2. 内存管理

问题:static关键字在全局变量、局部变量和函数中的区别?


3. 位操作

问题:如何将第3位置1?如何清除第5位?

uint8_t num = 0;
num |= (1 << 3);   // 第3位置1
num &= ~(1 << 5);  // 第5位清零

4. 中断处理

问题:中断服务程序(ISR)的设计原则?


5. 结构体与内存对齐

问题:以下结构体占多少字节?

struct Data {
    uint8_t  a;     // 1字节
    uint32_t b;     // 4字节
    uint16_t c;     // 2字节
};


6. 联合体(Union)的应用

问题:联合体在嵌入式中的典型用途?


7. const vs #define

问题:const#define定义常量有何区别?

特性 const #define
类型检查 无(直接替换)
作用域 遵循作用域规则 全局(文件内有效)
内存占用 占用内存(可获取地址) 不占用内存
调试 可调试(符号可见) 不可调试

8. 大小端(Endianness)

问题:如何检测目标平台的字节序?

uint32_t num = 0x12345678;
uint8_t *p = (uint8_t*)#
if (*p == 0x78) {
    printf("Little-Endian");
} else {
    printf("Big-Endian");
}

9. 看门狗(Watchdog)

问题:看门狗的作用和触发方式?


10. 内存屏障(Memory Barrier)

问题:为什么需要内存屏障?举例说明


11. 零长度数组(Flexible Array)

问题:结构体末尾的零长度数组有何作用?


动态分配结构体时附加可变长数据:

struct Packet {
    uint32_t len;
    uint8_t data[0]; // 零长度数组
};

// 使用
struct Packet *pkt = malloc(sizeof(struct Packet) + 100);
pkt->len = 100;

节省内存(比data[1]更灵活)。


进阶问题

  1. 栈溢出检测:如何实现栈溢出保护?
    :在栈顶和栈底设置特定值(如0xDEADBEEF),定期检查是否被修改。

  2. DMA(直接内存访问):DMA操作时,CPU如何与DMA协调共享内存?
    :使用内存屏障确保数据一致性;DMA传输时CPU应避免访问相关内存区域。

  3. 低功耗设计:如何降低嵌入式系统的功耗?
    :空闲时进入睡眠模式;关闭外设时钟;降低主频;中断唤醒。


通过这些问题可全面考察候选人对C语言、硬件操作和嵌入式系统的理解。实际面试时可根据岗位需求调整侧重点(如RTOS、通信协议等)。

常见的嵌入式C语言面试题

数组是最基本的数据结构,关于数组的面试题也屡见不鲜,本文罗列了一些常见的面试题,仅供参考。目前有以下18道题目。

2023-07-18 10:46:44

分享10道有趣的嵌入式C语言面试题及答案

10个C语言面试题,涉及指针、进程、运算、结构体、函数、内存,看看你能做出几个!

2023-05-09 10:54:26

嵌入式软件工程师笔试面试的相关资料分享

嵌入式软件笔试,嵌入式软件面试,程序员简历书写,Linux驱动工程师笔试,Linux驱动工程师

2021-12-24 07:46:19

嵌入式常见经典笔试题

几种通讯方式?6.C函数允许重入吗?7.嵌入式操作系统和通用操作系统有什么差别?嵌入式经典

资料下载 佚名 2021-11-03 18:51:44

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

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

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

嵌入式试题

嵌入式试题库(嵌入式开发培训班收费)-嵌入式

资料下载 佚名 2021-07-30 14:23:04

嵌入式系统与嵌入式PLC

嵌入式系统与嵌入式PLC(嵌入式开发面试题目)-该文档为嵌入式系统与

资料下载 名士流 2021-07-30 10:38:15

Android的多个经典面试题详细讲解

本文档的主要内容详细介绍的是Android的多个经典面试题详细讲解。

资料下载 佚名 2019-08-26 17:30:00

嵌入式开发为什么选择C语言?

1、嵌入式开发为什么选择C语言?(面试题!!!)嵌入式开发中操作系统是核

2021-12-15 07:45:30

嵌入式软件面试资料大合集

、stm32)、freertos、MQTT,懂硬件。关于面试题首先,每一家的公司方式面试不一样, 前一晚先复习一些C语言基础,我

2021-10-28 08:14:01

嵌入式C语言面试题库 精选资料推荐

嵌入式开发—C语言面试题用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_

2021-07-19 07:21:46

常见的MySQL高频面试题

在各类技术岗位面试中,似乎 MySQL 相关问题经常被问到。无论你面试开发岗位或运维岗位,总会问几道数据库问题。经常有小伙伴私信我,询问如何应对 MySQL

2021-02-08 16:05:00

嵌入式工程师常见面试题

嵌入式工程师常见面试题,看看都会不!

2021-02-02 07:42:32

嵌入式工程师常见的面试题汇总

嵌入式工程师常见面试题,看看都会不!

2021-01-12 07:35:47

浅谈嵌入式软件开发经典面试题

嵌入式软件开发经典面试题

2020-03-20 14:25:52

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