华为微软面试题集:指针编程与二进制转换挑战
需积分: 3 177 浏览量
更新于2024-07-26
收藏 124KB DOC 举报
本文档涵盖了多个知名企业的面试题,包括华为、微软和大唐等公司,旨在帮助面试者准备这些公司的技术挑战。以下是部分题目及其详细解析:
1. **华为指针编程题**:
题目要求设计一个名为`Func`的函数,接收一个整数数组`A`和其大小`nSize`。函数的目标是将数组中的所有0移动到数组的末尾,而非零整数保持在数组的前面,并确保整个数组仍然有序。此操作需要在不使用额外空间(或尽可能少用)的情况下进行,同时考虑效率和异常处理。设计时,可以采用双指针策略,一个指针从数组头部开始扫描,遇到非零元素就将其与下一个元素交换,另一个指针从数组尾部开始检查是否为0,找到0后逐渐向前移动。
2. **C/C++笔试题:二进制计数**:
这段代码通过不断执行位与运算`(m & (m - 1))`计算`m`的二进制表示中1的个数。变量`count`最终会显示`m`转换为二进制后1的个数。例如,如果`m = 9999`,其二进制形式是`11111111111111111111111111111101`,减一后变为`11111111111111111111111111111100`,继续与自身位与,直到`m`变为0,此时`count`的值即为1的个数。
3. **C/C++笔试题:整型数组反转**:
要编写一个函数,将32位整型参数`i`分解为一个4字节数组,高位在前,低位在后。如`0X00FE00AC`应分解为`0XOO, 0XFE, 0XOO, 0xAC`。使用`itoa`函数将`i`转换为十六进制字符串,然后将高位部分复制到数组`c`的前端,最后输出数组和转换后的十六进制字符串。
4. **大公司笔试题**:
a) **循环报数游戏**:
题目要求模拟一个报数游戏,规则是123报数,报到3的人出列。使用`while`循环和数组`p`来记录剩余人员的位置,当剩余人数少于1时,循环结束,最后一个人的索引即为答案。
b) **链表合并队列**:
需要合并两个已排序的队列A和B到一个新队列H中,且不能使用额外空间。可以使用两个指针分别遍历两个队列,每次从队列较小的那个中取出元素添加到H,直到其中一个队列为空。
以上题目展示了在面试中可能遇到的典型问题,涉及数据结构、算法、指针操作、位操作以及基本逻辑设计等技能。准备这类面试时,除了熟悉这些问题,还要注意解题的清晰思路和代码的可读性。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2010-03-21 上传
2011-06-28 上传
2013-08-03 上传
2012-07-18 上传
2012-02-23 上传
双鱼理
- 粉丝: 6
- 资源: 20
最新资源
- 常用SQL语句+实例
- Flex与Yacc入门
- 08年下 软件设计试卷
- 28套空白个人简历模板.doc
- S3C2410完全开发流程
- sql server 2000中的语句
- S7-300 400的系统软件和标准功能参考手册
- GNU make中文手册
- BGA是PCB 上常用的组件,通常CPU、NORTH BRIDGE、SOUTH BRIDGE、
- Oracle9i数据库管理实务讲座
- 电热锅炉温度控制器 AD590 MCS-51单片机
- 明明白白C指针(很不错哦)
- JavaScript Step By Step
- UML入门与精通(pdf高清晰版)
- Installshield入门指南
- OpenDoc-IntroduceToSpringFramework.pdf