搜狗2013年校园招聘研发类笔试试卷

来源:互联网 发布:淘宝修改评价步骤 编辑:程序博客网 时间:2024/05/01 22:12

第I卷

I. C/C++类

1. 以下程序的输出是:

#include <iostream>using namespace std;class Base{public:Base(int j) : i(j) {}virtual ~Base() {}void func1() { i *= 10; func2();}int getValue() { return i; }protected:virtual void func2() { i++; }protected:int i;};class Child : public Base{public:Child(int j) : Base(j) {}void func1() { i *= 100; func2();}protected:void func2() { i += 2;}};int main(){Base *pb = new Child(1);pb->func1();cout<<pb->getValue()<<endl;delete pb;system("pause");return 0;}
// 12

2. 请问程序的输出结果是:

#include <iostream>using namespace std;#define DOUBLE(x) x+xint main(){int i = DOUBLE(5) * 5;cout<<i<<endl;system("pause");return 0;}
// 30

3. 写出以下程序的输出:

#include <iostream>using namespace std;int main(){char num;for (num=0; num<255; ){num += num;}cout<<num<<endl;system("pause");return 0;}
// 死循环

4. 程序出错在什么阶段:

#include <iostream>using namespace std;int main(int argc, char **argv){http://www.sogou.comcout<<"welcome to sogou"<<endl;system("pause");return 0;}
A. 编译阶段出错    B. 运行阶段出错    C. 编译和运行都出错    D. 程序正常运行

5. 下面程序执行结果为【说明:x86_64环境】()

#include <iostream>using namespace std;int main(){int a[4][4] = {{1, 2, 3, 4},{50, 60, 70, 80},{900, 1000, 1100, 1200},{13000, 14000, 15000, 16000}};int (*p1)[4] = a;int (*p2)[4] = &a[0];int *p3 = &a[0][0];printf("%d, %d, %d, %d\n", *(*(a+1)-1),// 4*(*(p1+3)-2)+1,// 1101*(*(p2-1)+16)+2,// 13002*(p3+sizeof(p1)-3)// 2);system("pause");return 0;}

A. 16000, 1101, 13002, 2

B. 4, 2, 3, 60

C. 16000, 2, 3, 2

D. 4, 1101, 13002, 60

在64位环境下,指针的大小是8字节,所以最后一个是60;当在32位环境下,最后一个应该是2.

6. 在32位操作系统gcc编译器环境下,下面的程序的运行结果为()

#include <iostream>using namespace std;class A{public:int b;char c;virtual void print(){cout<<"this is father's function!"<<endl;}};class B : A{public:virtual void print(){cout<<"this is children's function!"<<endl;}};int main(){cout<<sizeof(A)<<" "<<sizeof(B)<<endl;system("pause");return 0;}
A. 12 12    B. 8 8    C. 9 9    D. 12 16

7. 以下哪些做法是不正确或者应该极力避免的:【多选】(A C D)

A. 构造函数声明为虚函数

B. 派生关系中的基类析构函数声明为虚函数

C. 构造函数中调用虚函数

D. 析构函数中调用虚函数


A D

9. 有如下几个类和函数定义,选项中描述正确的是:【多选】()

class A{public:virtual void foo() {}};class B{public:virtual void foo() {}};class C : public A, public B{public:virtual void foo() {}};void var1(A *pa){B *pc = dynamic_cast<B *>(pa);}void bar2(A *pa){B *pc = static_cast<B *>(pa);}void bar3(){C c;A *pa = &c;B *pb = static_cast<B *>(static_cast<C *>(pa));}
A. bar1无法通过编译

B. bar2无法通过编译

C. bar3无法通过编译

D. bar1可以正确运行,但是采用了错误的cast.

D


A B C D

由于是private,如果是public的话,A将会正确。


C E F


128


B


B  D


原创粉丝点击