ARM/Linux嵌入式面经(二九):经纬恒润Linux开发
文章目录
-
- 介绍自己的三个项目
- 1.什么是内联函数和宏定义?
-
- 内联函数与宏定义
- 追问及答案
- 2.宏定义作用在编译阶段的哪个阶段生效?
- 3.指针和数组的异同
-
- 指针和数组的异同
- 追问几个有深度的技术问题
- 4.讲一下结构体
-
- 回答
- 追问及答案
- 5.结构体里面内存对齐的规则
-
- 结构体内存对齐的规则
- 追问几个有深度的技术问题
- 6.结构体和联合体的关系与区别
-
- 结构体(Struct)和联合体(Union)的关系与区别
- 追问几个有深度的技术问题
- 7.讲一下epoll poll select
-
- epoll、poll、select 的区别
- 追问及答案
- 8.C++虚函数
-
- C++虚函数回答
- 追问几个有深度的技术问题
- 9.内存图显方式dma了解吗?
-
- DMA(Direct Memory Access)概述
- DMA在内存图显方式中的应用
- 追问及答案
- 10.以太网的网络协议了解吗?讲一下arp协议,动态arp和静态arp的区别
-
- 回答
- 追问有深度的技术问题及答案
介绍自己的三个项目
根据你的每个项目深挖了一些问题
1.什么是内联函数和宏定义?
内联函数与宏定义
内联函数(Inline Functions):
内联函数是C++(也存在于C99及之后版本,通过inline
关键字实现,但行为可能有所不同)中用于减少函数调用的开销的一种技术。当编译器遇到内联函数的调用时,它会在调用点直接展开函数的代码,而不是像普通函数调用那样进行压栈、跳转和返回。这样做的好处是可以减少函数调用的开销,特别是对于那些体积小、调用频繁的函数。但是,如果内联函数过大或包含复杂的控制结构,编译器可能会忽略内联请求,因为过度内联可能会增加代码大小,影响缓存效率,反而降低性能。
宏定义(Macro Definitions):
宏定义是预处理指令的一种,用于在预处理阶段对代码进行文本替换。宏定义可以是无参数的(如#define PI 3.14159
),也可以是有参数的(如