奇虎360 C++研发工程师笔试题解析
需积分: 9 163 浏览量
更新于2024-09-09
收藏 390KB PDF 举报
"2016年奇虎360公司针对C++研发工程师的内推笔试题目,主要考察C++编程基础、数组操作、内存管理以及函数调用中的变量作用域和值传递等知识。"
这篇笔试题涉及到的知识点包括:
1. **二维数组的高效操作**:
- 在给定的四个选项中,选项D `for(int i=0; i<1000; i++) for(int j=0; j<1000; j++) x[i][j]+=x[j][i];` 是执行效率最高的。这是因为该代码实现了对称矩阵的加法,两个循环都是按照行优先顺序遍历,避免了重复计算。其他选项因为循环变量的错误使用可能导致无限循环或者计算错误。
2. **字符串的赋值**:
- 正确答案B `char b[10]; b="HELLO!";` 是不正确的,因为它尝试将字符串常量赋值给非静态字符数组,这在C++中是不允许的。
- A选项通过初始化直接赋值是正确的。
- C选项使用`strcpy()`函数复制字符串到数组是正确的。
- D选项使用字符串字面量直接初始化数组也是正确的。
3. **补码表示法**:
- 在8位寄存器中,-25的补码表示为D选项`E7H`。这是因为-25的二进制表示为110101,加上1得到其反码101010,再加1得到其补码101011,转换为十六进制即为E7H。
4. **静态变量与函数调用**:
- 这道题目考察了函数内部变量的作用域和生命周期。`static`关键字使得变量在函数调用之间保持其值。根据给出的代码,`a`在不同函数中的行为各不相同,正确答案B `1222`表示在main函数中先打印出1,调用`fun1()`后变为2,然后调用`fun2()`不会影响全局`a`的值,再次打印还是2,最后调用`fun3()`不影响全局`a`,因此再次打印仍然是2。
5. **值传递与引用传递**:
- 这个代码段`void change(int*a,int&b,intc)`中,`*a`和`b`分别代表值传递和引用传递。当调用`change()`函数并改变参数时,`a`的值不会被改变,而`b`的值会被改变。因此,正确答案B `1,1`表示在函数调用后,原`a`的值未变,`b`的值已变。
这些题目体现了奇虎360对于C++研发工程师的基本技能要求,包括数组操作、字符串处理、数值表示、内存管理和函数调用的理解。解答这些问题需要扎实的C++基础知识和对语言特性的深入理解。
2022-04-02 上传
2018-11-27 上传
2021-05-19 上传
2021-05-18 上传
点击了解资源详情
2021-05-18 上传
2018-05-15 上传
2021-09-26 上传
「已注销」
- 粉丝: 2
- 资源: 4
最新资源
- 正整数数组验证库:确保值符合正整数规则
- 系统移植工具集:镜像、工具链及其他必备软件包
- 掌握JavaScript加密技术:客户端加密核心要点
- AWS环境下Java应用的构建与优化指南
- Grav插件动态调整上传图像大小提高性能
- InversifyJS示例应用:演示OOP与依赖注入
- Laravel与Workerman构建PHP WebSocket即时通讯解决方案
- 前端开发利器:SPRjs快速粘合JavaScript文件脚本
- Windows平台RNNoise演示及编译方法说明
- GitHub Action实现站点自动化部署到网格环境
- Delphi实现磁盘容量检测与柱状图展示
- 亲测可用的简易微信抽奖小程序源码分享
- 如何利用JD抢单助手提升秒杀成功率
- 快速部署WordPress:使用Docker和generator-docker-wordpress
- 探索多功能计算器:日志记录与数据转换能力
- WearableSensing: 使用Java连接Zephyr Bioharness数据到服务器