温馨提示:客观题和主观题得分都要超过一定标准,才能获得面试资格,如果一项得分很高,而另外一项得分很低,可能无法获得面试资格。
一、单选题(20题,每题2分)
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
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
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、以下二叉树:
后序遍历的结果是()
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 ");
- }
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