笔试题小记1

来源:互联网 发布:36芯三网合一网络箱 编辑:程序博客网 时间:2024/05/16 14:45

class与struct的默认访问权限不一样:
class默认private
struct默认public

protected访问权限
在类中被protected修饰的函数或数据成员,只能被该类或其子类的以及其友元函数访问。
特别要注意的是:访问权限为protected的类成员不能被该类的实例对象或其子类的实例对象访问

在没有继承的情况下,protected跟private相同。在派生类的时候才出现分化。
基类对象不能访问基类的protected成员,派生类中可以访问基类的protected成员。也就是说private成员是不能被继承的,只有public,protected的成员才可以被继承。
派生类的情况下protected的访问权限同public。这种说法是不对的,类内部直接访问没什么区别,但是访问对象基类的protected成员只能是在该类的内部。由派生类对象访问protected成员会出错

下列情况可以终止当前线程的运行:
1.抛出一个例外时。

  1. 当该线程调用sleep()方法时。

  2. 当一个优先级高的线程进入就绪状态时。

不能被声明为虚函数的有:
常见的不能声明为虚函数的有:普通函数(非成员函数);静态成员函数;内联成员函数;构造函数;友元函数。

冒泡排序

void func(int a[],int n){     int k;     for(int i=1;i<length;++i)       for(int j=0;j<length-i;++j)       {           if(a[j]>a[j+1])           {              k=a[j];              a[j]=a[j+1];              a[j+1]=k;           }       }}

冒泡排序的时间维度是O(n*n)

归并排序
归并操作(merge),也叫归并算法,指的是将两个顺序序列合并成一个顺序序列的方法。
如 设有数列{6,202,100,301,38,8,1}
初始状态:6,202,100,301,38,8,1
第一次归并后:{6,202},{100,301},{8,38},{1},比较次数:3;
第二次归并后:{6,100,202,301},{1,8,38},比较次数:4;
第三次归并后:{1,6,8,38,100,202,301},比较次数:4;
总的比较次数为:3+4+4=11,;
逆序数为14;

这里写图片描述

虚函数与纯虚函数的区别
1.纯虚函数声明如下: virtual void funtion1()=0; 纯虚函数一定没有定义,纯虚函数用来规范派生类的行为,即接口。包含纯虚函数的类是抽象类,抽象类不能定义实例,但可以声明指向实现该抽象类的具体类的指针或引用。
2、虚函数声明如下:virtual ReturnType FunctionName(Parameter);虚函数必须实现,如果不实现,编译器将报错

数据结构的特性:

数组:优点是插入快,如果知道下标,可以非常快地存取。缺点是查找慢,删除慢,大小固定。

有序数组:优点是比无序的数据查找快。缺点是删除和插入慢,大小固定。

栈:优点是提供后进先出方式的存取。缺点是存取其他项很慢。

队列:提供先进先出方式的存取。缺点是存取其他项很慢。

链表:优点是插入快,删除快。缺点是查找慢。

二叉树:优点是查找、插入、删除都快(如果树保持平衡)。缺点是删除算法复杂。

红-黑树:查找、插入、删除都快。树总是平衡的。缺点是算法复杂。

2-3-4树:优点是查找、插入、删除都快。树总是平衡的。类似的树对磁盘存储有用。缺点是算法复杂。

哈希表:优点是如果关键字已知则存取极快。插入快。缺点是删除慢,如果不知道关键字则存取很慢,对存储空间使用不充分。

堆:优点是插入、删除快,对最大数据项的存取很快。缺点是对其他数据项存取慢。

图:优点是对现实世界建模。缺点是有些算法且复杂。

C语言中未初始化的变量
全局变量 静态变量初始值为0
局部变量,自动变量初始值随机分配

类中构造函数与析构函数的调用顺序

构造函数的调用顺序总是如下:
1.基类构造函数。如果有多个基类,则构造函数的调用顺序是某类在类派生表中出现的顺序,而不是它们在成员初始化表中的顺序。
2.成员类对象构造函数。如果有多个成员类对象则构造函数的调用顺序是对象在类中被声明的顺序,而不是它们出现在成员初始化表中的顺序。
3.派生类构造函数

析构函数
析构函数的调用顺序与构造函数的调用顺序正好相反,将上面3个点反过来用就可以了,首先调用派生类的析构函数;其次再调用成员类对象的析构函数;最后调用基类的析构函数。
析构函数在下边3种情况时被调用:
1.对象生命周期结束,被销毁时(一般类成员的指针变量与引用都i不自动调用析构函数);
2.delete指向对象的指针时,或delete指向对象的基类类型指针,而其基类虚构函数是虚函数时;
3.对象i是对象o的成员,o的析构函数被调用时,对象i的析构函数也被调用。

进栈与出栈
设有一个栈,元素依次进栈的顺序是A,B,C,D,E。下列不可能的出栈顺序有?
A. ABCDE
B. BCDEA
C. EABCD
D. EDCBA

C
进一个出一个的序列为A
AB进栈B出栈C进栈出栈D进栈出栈E进栈出栈A出栈的序列为B
全部进栈再出栈的序列为D,栈为先进后出的数据结构,无论如何都不会出现C的情况,故选C

0 0
原创粉丝点击