奇虎360C++研发工程师笔试题解析

需积分: 9 3 下载量 15 浏览量 更新于2024-09-08 收藏 390KB PDF 举报
本资源为2016年奇虎360公司针对C++研发工程师的内推笔试题目,主要考察C++编程语言的基础知识、数组操作、字符串处理、内存管理以及函数调用等技能。 一、关于二维数组的优化 题目中涉及到一个1000x1000的二维数组x,考察了代码效率。选项A到D分别给出了不同的遍历方式。正确的答案是D,即`for(int i=0; i<1000; i++) for(int j=0; j<1000; j++) x[i][j]+=x[j][i];`。这种写法减少了交换i和j的位置,使得内层循环的元素更接近缓存,从而提高了缓存局部性,降低了访问内存的开销,提高了执行效率。 二、字符串赋值 题目中考察了如何正确地将字符串赋值给字符数组。选项A、C和D都是正确的方式,而B选项是错误的,因为它尝试直接将字符串字面量赋值给未初始化的字符数组,这在C++中是不允许的。正确做法应该是使用strcpy函数(选项C)或直接用双引号初始化数组(选项D)。 三、补码表示 题目询问在8位寄存器中,-25的补码表示。由于-25的十进制表示是110101,其反码是001010,加1后得到补码101011,转换为十六进制即为E7H。 四、静态变量与作用域 这部分涉及函数中的静态变量。在C++中,静态变量在函数内部定义但只初始化一次,后续调用时保留之前的状态。因此,根据代码,正确答案是B,即1222。在main函数中输出初始的a值1,然后调用fun1()改变a为2,再次输出,接着调用fun2()不会影响main中的a,再输出,最后调用fun3(),由于fun3()内的a是静态的,所以不会影响main中的a,再次输出。 五、指针与引用 最后一道题目考察了指针和引用的使用。`change`函数接受一个整型指针、一个引用和一个普通整型变量。由于指针`a`和引用`b`的修改不会影响到实参,而`c`是按值传递的,因此在main函数中,`a`的值始终保持为20,`b`的值在调用`fun2()`后变为30。所以正确答案是C,即10,30,30。 这些题目反映了奇虎360对于C++研发工程师的基本技术要求,包括对数组操作的优化、字符串处理的规范、内存管理的理解以及对函数调用中变量状态的掌握。通过这样的笔试,公司可以评估应聘者的基础编程能力和问题解决技巧。