2016奇虎360 C++研发工程师笔试题目与答案解析

版权申诉
0 下载量 67 浏览量 更新于2024-09-09 1 收藏 550KB PDF 举报
本资源是一份关于奇虎360 2016年的C++研发工程师内推笔试题及答案的文档。这份资料涵盖了面试过程中可能遇到的一些关键知识点,旨在测试应聘者的编程技能、算法理解和计算机基础知识。 1. 高效的二维数组操作:题目测试了对一个1000x1000二维数组进行元素相加的操作效率。四个选项中,最高效的是第三个选项 `for(inti=0;i<1000;j++)for(intj=0;j<1000;j++)x[j][i]+=x[j][i];`。这个代码段通过先固定外层循环变量 `j`,再遍历内层循环,减少了不必要的重复计算,因为每个元素 `x[i][j]` 只会被访问一次,符合矩阵元素对角线遍历的特点,从而提高效率。其他选项可能会导致更多的元素重复累加。 2. 字符串赋值:问题询问不能正确将字符串 "HELLO!" 赋给数组 `b` 的语句。正确答案是第二个选项 `charb[10];b="HELLO!";`,因为 C++ 中,直接使用双等号 (`=`) 将字符串常量赋值给字符数组会导致不正确的内存分配和复制,应使用 `strcpy()` 函数进行复制。 3. 寄存器与补码表示:问题涉及机器数在8位补码寄存器中的表示。-25的二进制补码形式为10000000(最高位为符号位),转换为十六进制即为EH(减去1得到原码01111111)。因此,正确答案是D,E7H。 4. 函数调用与局部变量:程序测试了函数调用对全局变量和静态局部变量的影响。在 `fun3()` 中,`inta=4` 是对静态局部变量的重新初始化,不会改变之前函数调用 `fun1()` 和 `fun2()` 对 `a` 的修改。因此,最后输出的结果是 `1114`,对应于 `fun3()` 中的 `inta=4`。选项B是正确答案。 5. 变量传递与作用域:`change()` 函数中,`a` 是指针,`b` 是引用,`c` 是实际值。在主函数中,调用 `change(&a, b, c)` 时,`a` 的值被更新为20,然后`b` 被设置为30,但`c` 保持为30。最后输出 `a=20, b=30, c=30`。选项A是正确答案。 通过这份文档,求职者可以复习和理解C++语言的基本概念、数组操作、内存管理、数据类型以及函数调用的行为,这对于准备类似的笔试面试非常重要。