嵌入式大厂面经 3(持续更新中!)

这是一个嵌入式大厂面试题专栏,每天更新高频面试题。专栏将包含题目描述、详细解析、相关知识点扩展以及实际代码示例。内容涵盖操作系统、驱动开发、通信协议等核心领域,并结合实际项目经验进行分析。每道题目都会附带面试官可能的追问方向,帮助大家更好地准备面试!

1. 函数指针

面试题:函数指针的定义和使用方法是什么?

答案解析:

// 定义函数指针类型
typedef int (*Operation)(int, int);

// 函数定义
int add(int a, int b) { return a + b; }
int sub(int a, int b) { return a - b; }

// 使用函数指针
Operation op = add;
int result = op(10, 5);  // 结果为15

op = sub;
result = op(10, 5);      // 结果为5

2. 位操作

面试题:常见的位操作技巧有哪些?

答案解析:

// 1. 判断奇偶
bool isEven = (n & 1) == 0;

// 2. 交换两数
a ^= b;
b ^= a;
a ^= b;

// 3. 获取最低位1
int lowbit = n & (-n);

// 4. 统计1的个数
int count = 0;
while (n) {
    n &= (n-1);
    count++;
}

3. 结构体内存对齐

面试题:结构体内存对齐的规则是什么?

答案解析:

// 1. 基本规则
struct Example1 {
    char c;     // 1字节
    int i;      // 4字节
    short s;    // 2字节
};
// 实际占用12字节而不是7字节

// 2. 优化方法
struct Example2 {
    int i;      // 4字节
    short s;    // 2字节
    char c;     // 1字节
};
// 实际占用8字节

// 3. 指定对齐
#pragma pack(1)
struct Example3 {
    char c;
    int i;
    short s;
};
#pragma pack()
// 实际占用7字节

嵌入式面试八股文全集 文章被收录于专栏

这是一个全面的嵌入式面试专栏。主要内容将包括:操作系统(进程管理、内存管理、文件系统等)、嵌入式系统(启动流程、驱动开发、中断管理等)、网络通信(TCP/IP协议栈、Socket编程等)、开发工具(交叉编译、调试工具等)以及实际项目经验分享。专栏将采用理论结合实践的方式,每个知识点都会附带相关的面试真题和答案解析。

全部评论
函数指针就是指向函数的指针。结构体内存对齐的对齐单位是 以最大的变量对齐。😯
1 回复 分享
发布于 今天 09:20 上海
点赞 回复 分享
发布于 今天 09:07 山西

相关推荐

评论
1
1
分享

创作者周榜

更多
牛客网
牛客企业服务