首页 > 程序人生 > 程序员面试技艺 > 迅雷校园招聘笔试题及答案解析(部分)
2014
11-11

迅雷校园招聘笔试题及答案解析(部分)

温馨提示:客观题和主观题得分都要超过一定标准,才能获得面试资格,如果一项得分很高,而另外一项得分很低,可能无法获得面试资格。

一、单选题

1.有变量int i = 0; int a = i++; int b=++a; int c = a+b; 请问表达式 a?b:c 的值是:

A. 0      B. 1      C. 2      D. 3

答案:B。

解析:

int i = 0;
int a = i++; //a = 0
int b = ++a;//b = 1 a = 1
int c = a + b;//a = 1 b = 1 c = 2
int d = a?b:c//a = 1 d = b = 1

2. 32位环境下,int *p=new int[10];请问sizeof(p)的值为:

A. 4     B. 10     C. 40     D. 8

答案:A。

解析:指针就是一个地址值,在32位系统下,占用4个字节,用sizeof求枚举类型的长度等于一个int型的长度,而与有几个枚举值无关.所以a也是占4个字节。

3. 有语句char str[] = "abcde";请问表达式sizeof(str)的值是:

A. 1    B. 4    C. 5    D. 6

答案: D。

解析:str数组中包含的元素是abcde\0

char str[] = "abcde";
strlen(str) = 5
sizeof(str) = 6
char str[10] = "abcde";
strlen(str) = 5
sizeof(str) = 10

4. 有函数int func(int i)的实现为:

int func(int i)
{
    if(i > 1)
        return i*func(i-1);
    else
        return 1;
}

请问函数调用f(5)的返回值是多少:

A. 5     B. 15     C. 20     D.120

答案:D。

解析:

func(5)
    5*func(4)
        4*func(3)
            3*func(2)
                2*func(1)
                    1
5*4*3*2*1 = 120

5. 请问以下说法,哪个是正确的:

A. 每个类都有一个无参数的构造函数

B. 每个类都有一个拷贝构造函数

C. 每个类能有多个构造函数

D. 每个类能有多个析构函数

答案:C。

解析:每个类只有一个析构函数和一个赋值函数,但可以有多个构造函数(包含一个拷贝构造函数,其它的称为普通构造函数)。

6. 用class关键字定义的类,其成员默认的访问属性为:

A. private         B. protected        C. public        D. 无定义

答案: A。

解析:class类中默认是private;struct结构中默认是public。

7. 类的成员有三种访问属性,分别是public、protected、private,子类能够访问的成员是:

A. 都能访问

B. public和protected

C. public和private

D. protected和private

答案:B。

解析:

public —— 公共,加上这个修饰的属性和方法,可以在程序的任何其它地方访问;

private —— 私有的,和public相反,加上这个修饰的属性和方法,只允许在自己本身这个类里访问,程序的任何其它地方都不能访问;

protected —— 保护,位于public和private中间,加上这个修饰的属性和方法,只能在子类(extends)和同包下的程序访问,别的的地方不能访问。

8. 请问对一个排好序的数组进行查找,时间复杂度为:

A. O(n)      B. O(lgn)       C. O(nlgn)        D. O(1)

答案:B。

9. 以下二叉树:

20130909163855453

后序遍历的结果是:

A. 丙乙丁甲戊己 

B. 甲乙丙丁戊己 

C. 丙丁乙己戊甲 

D. 丙丁己乙戊甲

答案:C。

后序:左右根     丙丁乙己戊甲

前序:根左右    甲乙丙丁戊己

中序:左根右    丙乙丁甲戊己

10. 看以下代码:

A *pa = new A[10];

delete pa;

则类A的构造函数和析构函数分别执行了几次:

A. 1   1           B. 10   10           C. 1   10                 D. 10   1

答案:D。

11. 看以下代码:

class A
{
    public:
        ~A();
};
A::~A()
{
    printf("delete A ");
}

class B : public A
{
    public:
        ~B();
};
B::~B()
{
    printf("delete B ");
}

请问执行以下代码

A *pa = new B();
delete pa;

输出的串是:

A. delete A

B. delete B

C. delete B delete A

D. delete A delete B

答案:A。

编程技巧