华为嵌入式软件面试真题详解
需积分: 49 3 浏览量
更新于2024-07-19
1
收藏 544KB PDF 举报
"华为面试真题集包含了2013年至2015年华为公司对嵌入式软件工程师的面试问题,其中包含了答案。这份资料来自UTips校招平台,旨在帮助求职者准备华为公司的面试,提供关于预编译、指针类型、sizeof运算符在处理数组时的应用以及32位机器上的指针大小等相关知识点的实践题目。"
在华为的面试真题中,涉及了以下几个重要的嵌入式软件开发知识点:
1. **预编译**:
预编译是在实际编译之前进行的一个步骤,主要处理宏定义、条件编译指令等。当代码包含大量的头文件且这些文件不经常改变,或者多个模块共用相同的编译选项和头文件时,预编译可以提高编译效率,生成预编译头文件。
2. **指针类型的区别**:
- `char*const p`:常量指针,指针变量p的值不可修改,但可以通过p修改它所指向的char型变量。
- `char const* p`:指向常量的指针,p指向的内容不可修改,但指针p本身可变,可以指向其他位置。
- `const char* p`:与`char const* p`相同,表示p指向的内容是常量,不能修改。
3. **sizeof运算符的使用**:
sizeof运算符可以用来获取变量或数据类型的大小。在函数外部,对于静态数组,sizeof能正确返回数组的总字节数。但在函数内部,如果传递的是数组的首地址(例如,`char str[]`),sizeof会返回指针的大小,因为此时数组信息丢失,仅剩指针本身。因此,在函数UpperCase中,sizeof(str)将返回指针的大小,而非字符串的实际长度。
4. **32位机器的指针大小**:
在32位系统中,数据总线宽度为32位,这意味着地址总线也是32位,因此一个指针占用4个字节,即32位。
5. **数组和指针操作**:
代码中的`inta[5]`定义了一个整型数组,`*(a+1)`访问数组第二个元素,即`a[1]`,值为2。`int*ptr=(int*)(&a+1)`创建了一个指针,它指向`a`数组之后的位置,即下一个内存单元。`*(ptr-1)`访问的是`ptr`指针前一个位置的元素,即`a[4]`,在给定的数组中,这将导致越界访问,因为在C/C++中,数组下标从0开始,所以`a[5]`是无效的。不过,由于题目没有提供完整的运行环境,我们无法确定实际输出,但可以推测可能会输出数组的最后一个元素,即5。
这些面试问题涵盖了C/C++编程基础、指针操作和数组理解,这些都是嵌入式软件工程师需要掌握的核心技能。准备面试时,不仅要理解这些概念,还需要熟悉如何在实际编程场景中应用它们。
镇上村树
- 粉丝: 114
- 资源: 42
最新资源
- 前端协作项目:发布猜图游戏功能与待修复事项
- Spring框架REST服务开发实践指南
- ALU课设实现基础与高级运算功能
- 深入了解STK:C++音频信号处理综合工具套件
- 华中科技大学电信学院软件无线电实验资料汇总
- CGSN数据解析与集成验证工具集:Python和Shell脚本
- Java实现的远程视频会议系统开发教程
- Change-OEM: 用Java修改Windows OEM信息与Logo
- cmnd:文本到远程API的桥接平台开发
- 解决BIOS刷写错误28:PRR.exe的应用与效果
- 深度学习对抗攻击库:adversarial_robustness_toolbox 1.10.0
- Win7系统CP2102驱动下载与安装指南
- 深入理解Java中的函数式编程技巧
- GY-906 MLX90614ESF传感器模块温度采集应用资料
- Adversarial Robustness Toolbox 1.15.1 工具包安装教程
- GNU Radio的供应商中立SDR开发包:gr-sdr介绍