2015搜狗研发笔试题目集锦:涵盖内存字节序、递归与位操作
5星 · 超过95%的资源 需积分: 9 98 浏览量
更新于2024-07-21
收藏 209KB PDF 举报
在搜狗2015年的校园招聘研发类笔试题中,测试了应聘者的基础编程概念、数据结构和算法理解、计算机体系结构以及对递归和指针操作的理解。以下是题目详解:
1. **内存字节序与数值表示**:
- 小端字节序(LittleEndian)意味着低字节存储在内存的低地址处,高字节在高地址。根据题目,整数0x12345678被分成了四个字节存储,0x3(地址偏移为2)对应的是最低字节。因此,在LittleEndian字节序中,地址0x3处存放的字节是0x78。
2. **递归函数与边界条件**:
- 第二题要求分析`foo`函数的递归调用情况。函数首先检查输入是否小于等于0,如果是,则返回1。否则,执行3*foo(x-1, y/2)。给定输入(3, 5),函数不会进入递归,直接返回3*foo(2, 2.5)。由于y不为整数,向下取整后为2,但递归不会继续进行,因为x减1会变为1,小于等于0。所以,输出结果为3。
3. **递归函数再次应用**:
- 第三题的`foo`函数与上题类似,但参数不同。当x=20, y=13时,函数会递归调用,直到x或y小于等于0。最终结果为3*foo(4, 6.5),由于x仍大于0,会继续递归,直到x减到0。所以,输出为3。
4. **位操作和逻辑运算**:
- 第四题考察了对位操作的理解。`fun`函数通过位操作`x |= x + 1`实现二进制计数器,直到`x+1`变为0。对于输入2014,函数返回n的值,即2014二进制表示中的1的数量,这等于5。
5. **数组、指针和类型转换**:
- 第五题中,`*(a+1)`和`*(ptr-1)`分别访问数组元素和指针指向的元素。数组`a`的第二个元素是2,而`ptr`实际上是数组的下一个元素地址,所以`*(ptr-1)`实际上是指向数组第一个元素的指针,值为1。因此输出是2, 1。
6. **C语言和内存计算**:
- 最后一个问题涉及了`sizeof`运算符在不同情况下的使用。`sizeof(str_arg)`将返回数组的大小,`sizeof(str)`和`sizeof(p)`分别计算字符串`str`和指针`p`本身的大小。在Linux的64位系统中,`char`类型的大小通常为1个字节,所以`sizeof(str_arg)`可能是100,`sizeof(str)`是1(因为`str`是一个字符),而`sizeof(p)`取决于指针的大小,通常是8(在64位系统中)。`func`调用中,`sizeof(str_arg)`也会输出100,但具体输出取决于`func`内部的操作。
这些题目涵盖了计算机基础知识、编程技巧、递归理解以及特定环境下的内存管理和C语言特性,旨在测试应聘者的编程基础和逻辑思维能力。
661 浏览量
2015-12-22 上传
2012-12-10 上传
2021-08-30 上传
2023-07-31 上传
2022-11-30 上传
2021-09-14 上传
346 浏览量
风风风风风111
- 粉丝: 0
- 资源: 18
最新资源
- 平尾装配工作平台运输支撑系统设计与应用
- MAX-MIN Ant System:用MATLAB解决旅行商问题
- Flutter状态管理新秀:sealed_flutter_bloc包整合seal_unions
- Pong²开源游戏:双人对战图形化的经典竞技体验
- jQuery spriteAnimator插件:创建精灵动画的利器
- 广播媒体对象传输方法与设备的技术分析
- MATLAB HDF5数据提取工具:深层结构化数据处理
- 适用于arm64的Valgrind交叉编译包发布
- 基于canvas和Java后端的小程序“飞翔的小鸟”完整示例
- 全面升级STM32F7 Discovery LCD BSP驱动程序
- React Router v4 入门教程与示例代码解析
- 下载OpenCV各版本安装包,全面覆盖2.4至4.5
- 手写笔画分割技术的新突破:智能分割方法与装置
- 基于Koplowitz & Bruckstein算法的MATLAB周长估计方法
- Modbus4j-3.0.3版本免费下载指南
- PoqetPresenter:Sharp Zaurus上的开源OpenOffice演示查看器