华为嵌入式软件面试真题详解
需积分: 49 107 浏览量
更新于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++编程基础、指针操作和数组理解,这些都是嵌入式软件工程师需要掌握的核心技能。准备面试时,不仅要理解这些概念,还需要熟悉如何在实际编程场景中应用它们。
2021-09-26 上传
镇上村树
- 粉丝: 115
- 资源: 42
最新资源
- MATLAB新功能:Multi-frame ViewRGB制作彩色图阴影
- XKCD Substitutions 3-crx插件:创新的网页文字替换工具
- Python实现8位等离子效果开源项目plasma.py解读
- 维护商店移动应用:基于PhoneGap的移动API应用
- Laravel-Admin的Redis Manager扩展使用教程
- Jekyll代理主题使用指南及文件结构解析
- cPanel中PHP多版本插件的安装与配置指南
- 深入探讨React和Typescript在Alias kopio游戏中的应用
- node.js OSC服务器实现:Gibber消息转换技术解析
- 体验最新升级版的mdbootstrap pro 6.1.0组件库
- 超市盘点过机系统实现与delphi应用
- Boogle: 探索 Python 编程的 Boggle 仿制品
- C++实现的Physics2D简易2D物理模拟
- 傅里叶级数在分数阶微分积分计算中的应用与实现
- Windows Phone与PhoneGap应用隔离存储文件访问方法
- iso8601-interval-recurrence:掌握ISO8601日期范围与重复间隔检查