华为等名企C++笔试面试题集:指针与数据结构优化

5星 · 超过95%的资源 需积分: 11 105 下载量 196 浏览量 更新于2024-07-25 2 收藏 149KB DOC 举报
本资源是一份包含多道来自知名企业的笔试面试题文档,主要聚焦于C/C++编程语言以及数据结构相关知识。以下是一些题目及其知识点的详细解读: 1. **上海华为的指针问题**: 这道题目要求设计一个`Func`函数,将一个整数数组`A`中的所有0移动到数组的末尾,而非零整数保持在数组的前面,并保持有序。函数需要尽可能不使用额外空间(原地操作)并考虑效率和异常处理。这个问题涉及到了数组操作、指针遍历、以及算法设计,需要对内存管理和数据移动有深入理解。 2. **计算二进制中1的个数**: 提供的代码片段是一个C/C++程序,通过`m`的位运算找到二进制表示中1的个数。`count`变量被初始化为0,然后通过`m &= (m - 1)`重复执行,每次操作都将最低位的1变为0,直到m变为0。最终`count`的值即为1的个数。 3. **分解32位整型为4字节数组**: 要求将一个32位整型(如0X00FE00AC)转换为一个高位在前的4字节数组。使用`itoa`函数将整型转换为十六进制字符串,然后手动反转数组顺序。 4. **公司笔试题**: a) **报数游戏**:题目要求模拟123报数,当报到3的人离开,找出最后一个留下的人员。这涉及到循环和条件判断,同时需要考虑边界条件和循环终止条件。 b) **链表合并有序队列**:用链表实现两个已排序队列A和B的合并,要求合并后的结果仍然有序且不使用额外空间。这涉及到链表操作、比较节点、以及队列的插入和删除操作。 以上内容展示了文档中涉及的C/C++编程基础、数据结构应用(如数组、指针、链表和队列)、以及算法设计(如排序和数据移动)。这些题目考察了应聘者的编码能力、逻辑思维和问题解决技巧,是衡量潜在员工技术实力的重要组成部分。对于准备求职的候选人来说,理解和掌握这些问题能够提升他们的面试竞争力。