[转]2013年完美世界校园招聘笔试题

1、设有矩阵A1(30*35)、A2(35*15)、A3(15*5)、A4(5*10),M=A1*A2*A3*A4,下列组合计算M所需数乘次数最少的是:
A、(A1(A2(A3A4)))    B、(A1((A2A3)A4))    C、((A1A2)(A3A4))    D、((A1(A2A3))A4)   E、(((A1A2)A3)A4)
2、在32位机器上,有如下代码:
  1. char array[] = "abcdefg";  
  2. printf("%d ",sizeof(array));        // 8  
  3.   
  4. char *p = "abcdefg";  
  5. printf("%d ",sizeof(p));            // 4  
  6.   
  7. void func(char p[10])  
  8. {  
  9.     printf("%d ",sizeof(p));        // 4  
  10. }  
  11.   
  12. void func(char (&p)[10])  
  13. {  
  14.     printf("%d ",sizeof(p));        // 10  
  15. }  
  16.   
  17. int main(void)  
  18. {  
  19.     printf("%d ",sizeof(char[2]));     // 2  
  20.     printf("%d ",sizeof(char&));       // 1  
  21.     return 0;  
  22. }  
其输出结果依次为:
A、8   4   4  10  2  1
B、4   4   4  10  4  1
C、8   4   4  10  2  4
D、8   4   4  4  2  1
E、8   4   4  10  4  4
F、以上答案都不对
3、
  1. CONTAINER::iterator iter , tempIt;  
  2. for(iter = cont.begin() ; iter != cont.end() ; )  
  3. {  
  4.     tempIt = iter;  
  5.     ++iter;  
  6.     cont.erase(tempIt);  
  7. }  
假设cont是一个CONTAINER的示例,里面包含数个元素,那么当CONTAINER为:
1、vector<int>
2、list<int>
3、map<int , int>
4、deque<int>
会导致上面的代码片段崩溃的CONTAINER类型是:
A、1,4     B、2,3    C、1,3      D、2,4
正确答案选择A(第1个、第4个都是线性的类型存储,所以会存在崩溃)
4、以下代码
  1. class classA  
  2. {  
  3. public:  
  4.     classA()  
  5.     {  
  6.         clear();  
  7.     }  
  8.     virtual ~classA()  
  9.     {  
  10.     }  
  11.     void clear()  
  12.     {  
  13.         memset(this , 0 , sizeof(*this));  
  14.     }  
  15.     virtual void func()  
  16.     {  
  17.         printf("func ");  
  18.     }  
  19. };  
  20. class classB : public classA  
  21. {  
  22. };  
  23.   
  24. int main(void)  
  25. {  
  26.     classA oa;  
  27.     classB ob;  
  28.     classA * pa0 = &oa;  
  29.     classA * pa1 = &ob;  
  30.     classB * pb = &ob;  
  31.   
  32.     oa.func();         // 1  
  33.     ob.func();         // 2  
  34.     pa0->func();       // 3  
  35.     pa1->func();       // 4  
  36.     pb->func();        // 5  
  37.   
  38.     return 0;  
  39. }  
A、func              func        执行出错      执行出错        func  
B、执行出错         func        执行出错      执行出错        func 
C、执行出错      执行出错      执行出错      执行出错      执行出错
D、func              func          func            func          func
E、func              func        执行出错          func          func
F、以上选项都不对
5、在32位系统中
  1. class CBase  
  2. {  
  3. public:  
  4.     void func()  
  5.     {  
  6.         Print();  
  7.     }  
  8.     virtual void Print()  
  9.     {  
  10.         cout<<"CBase::Print"<<endl;  
  11.     }  
  12. };  
  13. class CDerived : public CBase  
  14. {  
  15. public:  
  16.     virtual void Print()  
  17.     {  
  18.         cout<<"CDerived::Print"<<endl;  
  19.     }  
  20. };  
  21.   
  22. int main(void)  
  23. {  
  24.     CDerived c;  
  25.     CBase *p = &c;  
  26.     return 0;  
  27. }  
请问:
sizeof(*p)的值是多少? (实际上求的就是一个成员变量的大小+一个虚表指针VPTR的大小)
A、1    B、4     C、8    D、12
p->Print(); 和 c.func();的输出分别是?
A、CBase::Print     CBase::Print     B、CBase::Print     CDerived::Print
C、CDerived::Print  CBase::Print    D、CDerived::Print  CDerived::Print
6、
  1. struct Thing  
  2. {  
  3.     int valueA;  
  4.     const int valueB;  
  5. };  
  6. Thing t;  
t的成员变量valueA 和 valueB 的值分别为:
A、0  0     B、垃圾值  0     C、无法运行     D、垃圾值  垃圾值
常成员变量valueB必须在构造函数中进行初始化
7、for(int x = 0 , y = 0; !x && y <= 5 ; y++)语句执行循环的次数是:
A、0        B、5        C、6        D、无数次
8、在Windows 32位操作系统中,假设字节对齐为4,对于一个空的类A,sizeof(A)的值为()
A、0         B、1         C、2         D、4
9、以下对函数指针的定义,哪些是正确的:
A、typedef  int  (*fun_ptr)(int , int);       B、typedef  int  *(fun_ptr)(int , int); 
C、typedef  int  (fun_ptr*)(int , int);       D、typedef  *int  (fun_ptr)(int , int); 
10、在32位系统中,下面结构体
  1. struct st  
  2. {  
  3.     char ch , *ptr;  
  4.     union  
  5.     {  
  6.         short a , b;  
  7.         unsigned int c : 2 , d : 1;  
  8.     };  
  9.     bool f;  
  10.     struct st *next;  
  11. };  
的大小是:
A、14字节       B、16字节       C、20字节       D、24字节
11、32位小端字节序的机器上,如下代码:
  1. char array[12] = {0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 , 0x07 , 0x08};  
  2. short *pshort = (short *)array;  
  3. int *pint = (int *)array;  
  4. int64 *pint64 = (int64 *)array;  
  5. printf("0x%x , 0x%x , 0x%x , 0x%x", *pshort , *(pshort+2) , *pint64 , *(pint+2));  
输出结果为:
A、0x201 , 0x403 , 0x807060504030201 , 0x0    B、0x201 , 0x605 , 0x807060504030201 , 0x0   
C、0x201 , 0x605 , 0x4030201 , 0x8070605       D、0x102 , 0x506 , 0x102030405060708 , 0x0  
E、0x102 , 0x304 , 0x1020304 , 0x5060708          F、0x201 , 0x605 , 0x4030201 , 0x6050403
12、有关引用,下列说法错误的是:
A、引用定义时必须初始化
B、类的非静态引用成员变量不需要在构造函数中初始化
C、数组可以有引用,但没有引用数组
D、public派生对象可以初始化基类类型的引用
E、整型数据的常引用可以直接用数值初始化
F、以上选项都不是
13、Windows PE文件装载到的地址为:
A、0x0030000    B、0x0040000    C、任意地址   D、0x10000000    
14、以下哪些对象可用于Windows进程间通信:
A、事件    B、临界区    C、互斥量    D、共享内存
原文地址:https://www.cnblogs.com/anyuan9/p/6171704.html