4399网页游戏面试C++测试题.docx
- 文档编号:11725892
- 上传时间:2023-03-31
- 格式:DOCX
- 页数:14
- 大小:19.21KB
4399网页游戏面试C++测试题.docx
《4399网页游戏面试C++测试题.docx》由会员分享,可在线阅读,更多相关《4399网页游戏面试C++测试题.docx(14页珍藏版)》请在冰豆网上搜索。
4399网页游戏面试C++测试题
C++测试题
一.选择题:
1.以下代码执行的结果是什么?
a
void main()
{
int i;
char a[]="String";
char *p="New Sring";
char *Temp;
Temp=a;
a=malloc(strlen(p) + 1);
strcpy(a,p);
p = malloc(strlen(Temp) + 1);
strcpy(p,Temp);
printf("(%s, %s)",a,p);
free(p);
free(a);
}
a) 交换p 和& a的内容,同时打印出 New string, string
b) 在第8行生成编译期错误
c) 在第5行生成编译期错误
d) 在第7行生成编译期错误 e) 在第1行生成编译期错误
2. 下面程序的执行结果是?
b
char *gxxx()
{
static char xxx[1024];
return xxx;
}
void main()
{
char *g="string";
strcpy(gxxx(),g);
g = gxxx();
strcpy(g,"oldstring");
printf("The string is :
%s",gxxx());
}
a) The string is :
string
b) The string is :
Oldstring
c) 产生执行期错误
d) 产生编译期语法错误
e) 以上都不对
3. 以下程序的执行结果是?
c
void myalloc(char *x, int n)
{
x= (char *)malloc(n*sizeof(char));
memset(x,\0,n*sizeof(char));
}
main()
{
char *g="String";
myalloc(g,20);
strcpy(g,"Oldstring");
printf("The string is %s",g);
}
a) The string is :
String
b) 执行期错误
c) The string is :
Oldstring
d) 编译期语法错误
e) 以上都不对
4.以下代码的执行结果是?
c
void main()
{
char p[]="String";
int x=0;
if(p=="String")
{
printf("Pass 1");
if(p[sizeof(p)-2]=='g')
printf("Pass 2");
else
printf("Fail 2");
}
else
{
printf("Fail 1");
if(p[sizeof(p)-2]=='g')
printf("Pass 2");
else
printf("Fail 2");
}
}
a) Pass 1, Pass 2
b) Fail 1, Fail 2
c) Pass 1, Fail 2
d) Fail 1, Pass 2
e) 编译器语法错
5. 对于下面的代码,哪个说法是对的?
b
const char *p; 以及 char * const p;
a) 两个字符串内容都不可修改
b) 第一个:
不可修改字符串内容,第二个,不可假改指针内容
c) 两个指针都不可修改
d) 第一个:
不可修改指针,第二个,不可修改字符串内容
e) 以上说法都不对
6. 以下代码的输出是?
c
void main()
{
char c=-64;
int i=-32;
unsigned int u =-16;
if(c>i)
{
printf("pass1,");
if(c
printf("pass2");
else
printf("Fail2");
}
else
{
printf("Fail1);
if(i
printf("pass2");
else
printf("Fail2")
}
}
a) Pass1,Pass2
b) Pass1,Fail2
c) Fail1,Pass2
d) Fail1,Fail2
e) 以上都不对
7. 以下代码的输出是 e
void main()
{
int i=0;
for(i=0;i<20;i++)
{
switch(i)
{
case 0:
i+=5;
case 1:
i+=2;
case 5:
i+=5;
default:
i+=4;
break;
}
printf("%d,",i);
}
}
a) 0,5,9,13,17
b) 5,9,13,17
c) 12,17,22
d) 16,21
e) 语法错误
8. 下面哪个说法是对的?
d
class A
{
virtual void func1();
void func2();
}
Class B:
public class A
{
void func1()
{
cout << "fun1 in class B" << endl;
}
virtual void func2()
{
cout << "fun2 in class B" << endl;
}
}
a) A中的func1和B中的func2都是虚函数.
b) A中的func1和B中的func2都不是虚函数.
c) A中的func2是虚函数.,B中的func1不是虚函数.
d) A中的func2不是虚函数,B中的func1是虚函数.
9. cout是I/O流库预定义的什么?
. b
a)类
b)对象
c)包含文件
d)常量
10. 在32位系统下,已知int a,*pa=&a;,输出指针pa十进制的地址值的方法是?
d
a)cout< b)cout<<*pa; c)cout<<&pa; d)cout< 11. 32位系统下,有一个类A定义如下: Class A { Int M1; Float M2; Virtual void F1( void ); Void F2( void ); Static void F3( void ); }; 定义一个A的实例a,请问a在常规的编译实现下,所占的内存空间有多大b a)8 b)12 c)16 d)20 e)24 f) 以上答案都不对 12. 32位系统下,有一个类A定义如下: 定义一个A的实例a,请问a在常规的编译实现下,所占的内存空间有多大 Class A { Int M1; Float M2; Static Float M3; Static const Int M4; Enum M5 { E1 = 1; E2 = 2; } }; 定义一个A的实例a,请问a在常规的编译实现下,所占的内存空间有多大 d a)8 b) 12 c)16 d)20 e)24 f) 以上答案都不对 13. 已知类型定义如下: class A { int x; virtual ~A(){} }; class B: public A { int y; } 以下表达式的输出为: c A* pa = New A; //假定pa赋值后的地址为0x111111; B* pb = dynamic_cast< B*>( pa ); 请问以上代码执行后,pb的值是: a)0 b)与pa相同,即为0x111111 c)抛出异常 d)在pa地址上,进行类型换算偏移后的地址 e)以上结果都不对 14. 已知类型定义如下: class A { int x; virtual ~A(){} }; class B: public A { int y; } 以下表达式的输出为: A* pa = New A; //假定pa赋值后的地址为0x111111; B& b = dynamic_cast< B&>(* pa ); 请问以上代码执行后, b的地址是: c a)0 b)与pa相同,即为0x111111 c)抛出异常 d)在pa地址上,进行类型换算偏移后的地址 e)以上结果都不对 15. 关于this指针的说法错误的是 d a) this指针不需要显示说明 b) 虚函数拥有this指针 c) 成员函数拥有this指针 d) 静态成员函数拥有this指针 16. 下面对构造函数的不正确描述是 a a) 系统可以提供默认的构造函数 b) 构造函数可以有参数,所以可以有返回值 c) 构造函数可以重载 d) 构造函数可以设置默认参数 17.下列对模板的声明,正确的是 c a) template b) template c) template d) template 18. 什么函数只能访问静态成员变量。 b a) 静态函数 b) 虚函数 c) 构造函数 d) 析构函数 19 假定类定义如下: Class A { ~A(void){} } Class B { ~B( void){} } Class C : public B { ~C( void ){} A a; } 现有C的实例c,则当C被销毁时,调用的析构函数的顺序为 e a) ~C(), ~A(), ~B(); b) ~A(),~C(),~B() c) ~B(),~A(),~C() d) ~C(),~B(),~A() e) ~A,~B(),~C() f) ~B(),~C(),~A() 20假定类定义如下: Class A { A(void){} } Class B { B( void){} } Class C : public B { C( void ){} A a; } 现有C的实例c,则当C被创建时,调用的建构函数的顺序为 a a) C(),A(),B(); b) A(),C(),B() c) B(),A(),C() d) C(),B(),A() e) A, B(),C() f) B(),C(),A() 二.问答题 1.以下程序的输出是 #include #define MAX(a,b) a > b ? a : b void main () { int m = 10, n = 3, k = 1; k = MAX(m, n + k) * 10; cout << "k = "<< k < } 100 2.以下程序的输出是: #include using namespace std; class a{ }; class b { public: virtual void test(){ } }; void main(void) { cout << sizeof(a); cout << sizeof(b); } 1 4 3. 什么函数不能声明为虚函数? 静态成员函数不能是虚函数 构造函数不能是虚函数 4. 简述c++0x标准比较重要的新特性有哪些 新特性之一: Lambda表达式. 很多编程编程语言都支持匿名函数(anonymousfunction)。 所谓匿名函数,就是这个函数只有函数体,而没有函数名。 Lambda表达式就是实现匿名函数的一种编程技巧,它为编写匿名函数提供了简明的函数式的句法。 同样是VisualStudio中的开发语言,VisualBasic和VisualC#早就实现了对Lambda表达式的支持,终于VisualC++这次也不甘落后,在VisualStudio2010中添加了对Lambda表达式的支持。 新特性之二: 静态断言static_assert 在新的C++标准C++0x中,加入了对静态断言的支持,引入了新的关键字static_assert来表示静态断言。 使用静态断言,我们可以在程序的编译时期检测一些条件是否成立,这个特性在调试模板函数的模板参数时特别有用。 在编译的时候,模板函数实例化,这时我们就可以使用静态断言去测试模板函数的参数是否按照我们的设计拥有合适的值。 此外,静态断言还带来很多其他的优势。 例如静态断言在编译时进行处理,不会产生任何运行时刻空间和时间上的开销,这就使得它比assert宏具有更好的效率。 另外比较重要的一个特性是如果断言失败,它会产生有意义且充分的诊断信息,帮助程序员快速解决问题。 新特性之三: auto关键字 在C++0x中,auto关键字的意义发生了改变。 从VisualC++2010开始,auto关键字将用于指引编译器根据变量的初始值来决定变量的数据类型。 换句话说,我们可以把auto当成一种新的数据类型,它可以“从初始化器(initialize)中推导出所代表的变量的真正类型”。 这种对auto关键字的使用方式可以大大消除当前替代方式所导致的冗长和易出错的代码。 新特性之四: 右值引用 作为最重要的一项语言特性,右值引用(rvaluereferences)被引入到C++0x中。 我们可以通过操作符“&&”来声明一个右值引用,原先在C++中使用“&”操作符声明的引用现在被称为左值引用。 左值引用和右值引用的表现行为基本一致,它们唯一的差别就是右值引用可以绑定到一个临时对象(右值)上,而左值引用不可以。 5. 分别写出BOOL,int,float,指针类型的变量a 与“零”的比较语句。 Bool a; if( a==false ) Int a; if( a==0 ) Float a; if( a==0 ) 6. 简述单件,对象工厂,观察者模式的常见用途。 客户端--------------服务器 7. 一个父类写了一个virtual 函数,如果子类覆盖它的函数不加virtual ,是否能实现多态? 能 只要基类在定义成员函数时已经声明了virtue关键字,在派生类实现的时候覆盖该函数时,virtue关键字可加可不加,不影响多态的实现。 8. const 符号常量; (1)const char *p (2)char const *p (3)char * const p 说明上面三种描述的区别 1 p指针指向的值必须是字符型 2 p指针指向的值不能变 3 p指针地址不能变 9. 写出运行结果: {// test2 union V { struct X { unsigned char s1: 2; unsigned char s2: 3; unsigned char s3: 3; }x; unsigned char c; }v; v.c = 100; printf("%d", v.x.s3); } 3 10. 简述Critical Section和Mutex的不同点 Mutex 是内核对象 Critical Section本身不是内核对象
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 4399 网页 游戏 面试 C+ 测试