30道c++笔试题
c++笔试题30道
记录一下做的笔试题目
1.下列关于纯虚函数的描述中,正确的是
A.纯虚函数是一种特殊的虚函数,是空函数
B.具有纯虚函数的类称为虚基类
C.一个基类中说明有纯虚函数,其派生类一定要实现该纯虚函数
2.关于引用与指针的区别,下列叙述错误的是
A.引用必须被初始化,指针不必
B.删除空指针是无害的,不能删除引用
C.不存在指向空值的引用,但是存在指向空值的指针
3.下面关于描述内存分配方式以及它们的区别描述正确的是
A.从静态存储区分配。在执行任务时,函数内部局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集。
B.从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多的内存,程序员自己负责在何时用free或者delete释放内存。动态内存的生存期由程序员决定,使用非常灵活,但问题也最多。
C.在栈上分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。
4.在创建类派生对象时,构造函数的执行顺序是
A.对象成员构造函数,派生类本身的构造函数,基类构造函数
B.派生类本身的构造函数,基类构造函数,对象成员构造函数
C.派生类本身的构造函数,对象成员构造函数,基类构造函数
5.将父类的析构函数定义为虚函数,下列正确的是
A.释放子类指针时能正确释放父类对象
B.这样做是错误的
C.释放父类指针时能正确释放子类对象
6.假定指针变量p定义为“int *p = new int(100);”,要释放p所指向的动态内存,应使用语句
A. delete *p;
B. delete p;
C. delete &p;
7.关于重载函数,哪个说明是正确的?
A. 函数名相同,参数类型或个数不同
B. 函数名相同,返回值类型不同
C. 函数名相同,函数内部实现不同
8.如果默认参数的函数声明为 ”void fun(int a, char b=’a’, double c=3.2, int d=1);”,则下面调用写法正确的是
A. fun();
B. fun(2, 3.2);
C. fun(2, ‘c’, 3.14);
9.short a = 10,要使a的低八位翻转,必须进行下列哪个操作
A. a^0x00FF
B. a|0x00FF
C. a&0x00FF
10.下面关于类的继承和派生的程序,其输出结果是
#include <iostream> using namespace std; class A { public: A(){cout << "A";} }; class B { public: B(){cout << "B";} }; class C : public A { B b; public: C(){cout << "C";} }; int main() { C obj; return 0; }
A. CBA
B. BAC
C. ACB
11.下面程序的输出结果是
#include <iostream> using namespace std; class ClassA { friend long fun(ClassA a) { if (a.i < 2) return 3; return a.i * fun(ClassA(a.i-1)); } public: ClassA(long a) { i = a; } private: long i; }; int main() { int sum = 0; for (int i = 0; i < 3; i++) { sum += fun(ClassA(i)); } cout << sum << endl; }
A. 12
B. 10
C. 15
12.下面代码执行后的结果为
#include <stdio.h> int main() { int sum = 0; int i = 0, j = 0; for (j = 0; j < 8; j++) { if (j % 2) continue; sum += j; } printf("sum = %d", sum); return 0; }
A. sum=10
B. sum=11
C. sum=12
13.下列一段c++代码的输出是
#include <stdio.h> class Base { public: int Bar(char x) { return (int)(x); } virtual int Bar(int x) { return 2 * x; } }; class Derived : public Base { public: int Bar(char x) { return (int)(-x); } int Bar(int x) { return (x / 2); } }; int main() { Derived Obj; Base *pObj = &Obj; printf("%d,",pObj->Bar((char)(50))); printf("%d,",pObj->Bar(50)); return 0; }
A. 50, 25
B. 100, 50
C. -50, 25
#include <iostream> #include <vector> #include <iterator> using namespace std; int main() { vector<int> myvector; for (int i = 1; i <= 10; i++) { myvector.push_back(i); } myvector.erase(myvector.begin()+6); myvector.erase(myvector.begin(), myvector.begin() + 4); for (unsigned i = 0; i < myvector.size(); i++) { cout << myvector[i] << ' '; } }
A. 5 6 7 8 9
B. 5 6 8 9 10
C. 6 7 8 9 10
15.以下程序的输出结果是
#include <iostream> using namespace std; int main() { int x = -1; try { cout << "Inside try" << endl; if (x < 0) { throw x; cout << "After throw" << endl; } } catch (int x) { cout << "Exception Caught" << endl; } cout << "After catch" << endl; return 0; }
A. Inside try Exception Caught After throw After catch
B. Inside try Exception Caught After catch
C. Inside try Exception Caught
16.对于c++语言,下面描述正确的是
A. 线性表的逻辑顺序和物理顺序总是一致的。
B. 线性表的顺序存储表示优于链式存储表示。
C. 线性表若采用链式存储表示时所有节点之间的存储单元地址可连续可不连续
17.设哈希表长m=13,哈希函数H(key)=key MOD 11。表中已有4个节点:addr(16)=5,addr(28)=6,addr(84)=7,addr(19)=8其余地址为空,如用线性探测再散列处理冲突,则其关键字为38的地址为
A. 9
B. 6
C. 8
18.铁路调度用“栈”,假设进栈车厢编队序列为123(进栈过程中可以出栈),出栈则有许多编队序号,以下不可能出现的序号是
A. 123
B. 321
C. 213
19.下述哪个容器是使用连续内存空间保存的
A. map
B. list
C. vector
20.已知有序序列 1 2 3 4 5 6 7 8 9 10,在二分查找关键字1的过程中,先后进行比较的关键字依次是多少
A. 5 3 1
B. 5 2 1
C. 6 2 1
A. 冒泡
B. 直接插入
C. 快速
22.对N个数排序,最坏情况下时间复杂度最低的是()排序算法
A.归并
B. 插入
C. 冒泡
23.现有如下代码段
x = 2; while (x < n/2) x = 2 * n
假设n ≥ 0,则其时间复杂度应为
A. O(n^2)
B. O(nlog2(n))
C. O(log2(n))
24.下面关于线程的叙述中,正确的是
A. 不论是系统级线程还是用户级线程,其切换都需要内核的支持
B. 线程是资源分配的单位,进程是调用和分配的单位
C. 在引入线程的系统中,进程仍是资源分配和调度分派的基本单位
A. 进程的共享正文段
B. 进程中访问临界资源的程序段
C. 进程访问系统资源的程序段
A. 欲阻止一个变量被改变,可以使用cosnt关键字
B. 在定义该const变量时,不用将其初始化
C. 在一个函数声明中,const可以修饰形参,表明它是一个输入参数,在函数内部不能改变其值
A. 死锁产生的原因是进程推进顺序不当
B. 环路是死锁产生的必要条件
C. 采用银行家算法能有效地实现死锁避免
28.对数据库,关于索引的理解正确的是(多选题)
A. 索引应该根据具体的检索需求来创建,在选择性好的列上创建索引
B. 索引并非越多越好
C. 建立索引可加速查询
A. Both TCP and UDP provide retransmission mechanism;
B. TCP also provides flow control;
C. Both TCP and UDP provide reliability service
30.公司网络中心存储服务器ip是192.168.0.200/255.255.255.128,下面是各部门计算机ip,哪些计算机可以访问存储服务器(多选题)
A. 192.168.0.126
B. 192.168.0.154
C. 192.168.0.250
D. 192.168.0.10