目前暂时只做了选择题部分,不保证没有错误,仅供参考,祝愿大家和我今年都能找到满意的工作哦~
选择题答案部分
单选题
1.B
2.A p为指针,32位地址的指针大小为4个字节
3.D str为数组,勿忘最后有一个'\0'
4.D
5.C
A:用户自定义了构造函数编译器不会合成无参构造函数
B:?一个类可以有多个拷贝构造函数
class A{};
class B: public A{
public:
B(const B&);
B(const A&);
};
D:一个类只能有一个析构函数
6.A struct默认访问级别为public
7.B 这道题目不严谨,如果子类为父类的友元类,那么可以也可以访问private
8.B 二分查找
9.C
10.D 析构10次的写法为delete[] pa;
11.A 析构函数非虚函数,不管通过对象还是指或引用调用,都是静态绑定,在编译期完成
12.D 首先排除用3,2 和4,2排除AB选项,然后观察C发现两个unsigned相加可能会溢出,所以选D,关于D,读者可以自己推导下,很简单
13.。。。不会。。。
14.D memset直接将s中的vptr给置为0了,调用虚函数需要通过vptr找到vtable,然后再vtable中找到函数调用之,这里无法定位vtable.
15.D A:static int a; B:int a; C:int *p = new int(1);
16.D 因此,用自定义类作为map的key,必须重载’<‘操作符
17.D
18.C
A错:用 #include <filename.h> 格式来引用标准库的头文件(编译器将从标准库目录开始搜索
B错:用 #include “filename.h” 格式来引用非标准库的头文件(编译器将从用户的工作目录开始搜索,如果没有,它还是会在标准库目录里面查找对应的头文件
D错:至少STL没这样做
19.B 向上取整
20.B
多选题
1.ACD
huffman编码后
A:一种编码为a:10, b:11, c:011, d:010, e:00,其中0和1可以用bitset来表示,每个字符不到一个字节,显然将花费更少的存储空间
B:显然错误,01互换立即边另外一个了
C:正确,只需要将hufferman的任意结点的左右子树对调一下就是一种编码,但是每个字符的深度不变
D:b为2,d为3 正确
2.AD
移位(<< 和 >>)和逻辑与(&)、或(|)、异或(^)运算操作数只能是整数
3.BC
4.B(感觉B有点牛角尖)
A.只要在类中申明函数时定义,如果满足inline函数规则,都是inline函数
B.如果函数定义比较复杂,编译器有权禁止inline
C.同A
D.编译时将调用inline函数的地方扩展为inline函数的定义
5.BD
6.ABC
首先根据域名查找对应IP(DNS),再通过TCP建立连接,最后传输完数据通过HTTP解析HTML文本
7.ABCD(这题非常不确定,有点变态)
8.B
A:拷贝构造函数不会返回对象引用,返回对象引用的是赋值函数
C:自动生成的为public成员
D:可以用其他类来拷贝构造
- #include <iostream>
- using namespace std;
- class A{
- };
- class B{
- public:
- B(const A&){cout << "用A构造B" << endl;}
- };
- int main()
- {
- A a;
- B b(a);
- return 0;
- }
9.CD
A:在构造函数中调用的虚函数实例都是本类中的,是静态绑定
B:同构造函数
关于A,B还可以举出一个很简单的反例,即构造父类的时候,子类还没构造完成,如何能动态绑定到子类呢,对吧?
C:关于虚函数,编译器产生的伪代码为(*(this->vptr[offset]))(),static中无this指针,offset为虚函数在vtable中的偏移量
D:完全可以,记住,虚函数也是可以通过对象来调用的,这个时候就是静态绑定了,但是一般情况下还是不要这样定义了,好吧?
10.ABC
形成重载的条件为参数个数(A),参数类型(BC)