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