阿里巴巴校园招聘笔试题和面试题答案目(二)
16、下列代码编译时会产生错误的是()
1. #include
2. using namespace std;
3. struct Foo
4. {
5. Foo() { }
6. Foo(int) { }
7. void fun() { }
8. };
9. int main(void)
10. {
11. Foo a(10); //语句1
12. a.fun(); //语句2
13. Foo b(); //语句3
14. b.fun(); //语句4
15. return 0; 16. }
A、语句1 B、语句2 C、语句3 D、语句4
17、在32位机器上,下列代码中
#pragma pack(2)
•class A
•{
• int i;
• union U
• {
• char buff[13];
• int i;
• }u;
• void foo() { }
• typedef char* (*f)(void*);
• enum{red, green, blue} color;
•}a;
sizeof(a)的值是()
A、20 B、21 C、22 D、24 E、非以上选项
18、下面描述中,错误的是()
A、基类定义的public成员在公有继承的派生类中可见,也能在类外被访问
B、基类定义的public和protected成员在私有继承的派生类中可见,在类外可以被访问
C、基类定义的public和protected成员在保护继承的派生类中不可见
D、基类定义的protected成员在protected继承的派生类中可见,也能在类外被访问
19、当很频繁地对序列中部进行插入和删除操作时,应该选择使用的容器是()
A、vector B、list C、deque D、stack
20、判断一个单向链表中是否存在环的最佳方法是()
A、两重遍历 B、快慢指针 C、路径记录 D、哈希表辅助
21、给你1、2、3 这三个数字可以使用C的各种运算符你能表示的最大的整数是()
A、2*3*sizeof(1) B、3<<(2<
-1的二进制形式就是全1表示
22、下面代码的输出是多少?
1. class A
2. {
3. public:
4. A() { cout<<"A"<
5. ~A() { cout<<"~A"<
6. };
7.
8. class B:public A
9. {
10. public:
11. B(A &a):_a(a)
12. {
13. cout<<"B"<
14. }
15. ~B()
16. {
17. cout<<"~B"<
18. }
19. private:
20. A _a;
21. };
22.
23. int main(void)
24. {
25. A a; //很简单,定义a的时候调用了一次构造函数
26. B b(a); //这里b里面的_a是通过成员初始化列表构造起来的
27. //而且是通过copy constructor构造的是b的成员对象_a的,这里是编译器默认的,因此在构造好_a前,先调用基类构造函数
28. //然后才是构造自身,顺序就是A()->_a->B()(局部)