2018年9月2日21点13分
- AVL树的插入过程(AVL树出现不平衡情况时调整的规则,待补充)
- 下面程序输出什么?
#include<iostream>
#include<list>
using namespace std;
class Foo{
public:
Foo()
{
cout << "1";
}
Foo(const Foo& f)//拷贝构造函数
{
cout << "2";
}
Foo(Foo&& f)//移动构造函数
{
cout << "3";
}
void* operator new(size_t s)
{
cout << "4";
return ::new_handler(s);
}
};
int _tmain(int argc, _TCHAR* argv[])
{
list<Foo> L;
L.push_back(Foo());
system("pause");
return 0;
}
/*
13
*/
push_back()函数是右值引用,移动拷贝?
STL的vector是自增长的,所以在其容量capacity不足时,要在内存的另外一个地方重新申请一块大的内存空间,将vector之前的元素搬移过来,如果这个类定义了移动构造函数,则只需要进行移动拷贝,如果每一定义移动构造函数,则需要再调用copy构造函数重新在新位置构造该对象。
参考[1] https://blog.youkuaiyun.com/nie_quanxin/article/details/81187468
/*
结论:vector添加元素在空间不够的时候需要重新分配,此时对于原来已有的元素会调用对象类的move constructor,而如果对象类没有定义移动构造,则会 使用copy constructor。所以给类添加移动构造函数可以在很多时候提高效率,因为没有它只能用拷贝构造来替代,而编译器又不会自动合成一个。
*/
3.请求打印完进程的状态如何变化?
进程三状态:挂起、就绪、运行
3.请求打印完进程的状态如何变化?
进程三状态:挂起、就绪、运行
4.堆排序、插入排序、Shell排序、快速排序中,哪一个是稳定的排序算法?
5.STL中的queue、stack、priority_queue内部实现是什么?
是以vector、deque还是list、map当做内部容器的!
priority_queue优先队列、底层用堆来实现、
typedef priority_queue<_Ty, _Container, _Pr> _Myt;
//下面两种优先队列的定义是等价的
priority_queue<int> q;
priority_queue<int,vector<int>,less<int> >;//后面有一个空格
其中第二个参数( vector ),是来承载底层数据结构堆的容器,第三个参数( less ),则是一个比较类,less 表示数字大的优先级高,而 greater 表示数字小的优先级高。
参考:[1] https://blog.youkuaiyun.com/pzhu_cg_csdn/article/details/79166858
6.x86平台下,采用_cdcel方式,以下程序输出:
void Func(int a, int* p)
{
printf("%p,%p,%p", &a, &p, p);//%p 表示输出的结果是 指针
/*
格式控制符“%p”中的p是pointer(指针)的缩写。
指针的值是语言实现(编译程序)相关的,但几乎所有实现中,
指针的值都是一个表示地址空间中某个存储器单元的整数。
printf函数族中对于%p一般以十六进制整数方式输出指针的值。
*/
/*
007DFC8C,007DFC90,007DFD64
就a与p的地址是紧挨着的!
*/
}
int _tmain(int argc, _TCHAR* argv[])
{
int a = 0, b = 0;
Func(a, &b);
system("pause");
return 0;
}
7.TCP的断开,time_wait发生在哪一端?
A.客户端 B.服务端 C.主动断开端 D.被动断开端
8.N个结点的哈夫曼树有几个叶子结点?(N+1)/2个叶子结点
哈夫曼树没有度为1的结点,即n1=0;
N=n0+n1+n2;
n2=n0+1;
9.死锁的四个必要条件是?
10.关于进程线程:
系统运行时同时为线程和进程分配内存吗?
11.
a.成员函数不可以同时修饰为static和const
b.纯虚函数可以有函数体吗?
c.static函数不可以调用非static函数?
12.C++四个转型:_cast
a.static_cast对于下行转换是安全的吗?
b.关于转型的合法性,dynamic_cast是在运行期,static_cast是在编译期?
c.类的层次结构中要有虚函数才能使用dynamic_cast?
13.关于数据库的索引:
唯一索引可以确保每一行数据的唯一性?
14.下面程序输出什么?
涉及到C++的继承体现中对象实例化时构造函数的调用顺序、
虚继承、多重继承
class A{
public:
A(){
cout << "A";
}
};
class B{
public:
B(){ cout << "B"; }
};
class C:virtual public A{
public:
C(){ cout << "C"; }
};
class D :public B, public C{//gg,C中的逗号运算符的运算顺序:从右到左!!!所以先调用C的边的构造函数!,这很奇怪,如换成:class D :public C, public B 顺序也不同
public:
D(){ cout << "D"; }
};
int _tmain(int argc, _TCHAR* argv[])
{
D d;
system("pause");
return 0;
}
/*
ABCD请按任意键继续. . .
*/
编程题2:
一条由26个字母组成的字符串,经加密成数字流,加密规则:
‘A’->1
‘B’->2
...
‘Z’->26
现给定一密文,判断有多少种解密方式:
如:
“12”;有两种解密方式:AB;L
再如:
“1212”有5种解密方式:
1:1-2-1-2
2:12-12
3:1-21-2
4:12-1-2
5:1-2-12
另外插曲:
算法分析与设计之排列的字典序问题
https://blog.youkuaiyun.com/hello_tomorrow_111/article/details/78696294
面试笔试小知识点语言C++软件开发基础知识
语言、数据结构与算法、操作系统、计算机网络、数据库、