知识点小题目20180903

2018年9月2日21点13分

 

  1. AVL树的插入过程(AVL树出现不平衡情况时调整的规则,待补充)
  2. 下面程序输出什么?
#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.csdn.net/nie_quanxin/article/details/81187468

/*

结论:vector添加元素在空间不够的时候需要重新分配,此时对于原来已有的元素会调用对象类的move constructor,而如果对象类没有定义移动构造,则会 使用copy constructor。所以给类添加移动构造函数可以在很多时候提高效率,因为没有它只能用拷贝构造来替代,而编译器又不会自动合成一个。

*/

3.请求打印完进程的状态如何变化?

扫描二维码关注公众号,回复: 3116838 查看本文章

进程三状态:挂起、就绪、运行

 

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.csdn.net/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.csdn.net/hello_tomorrow_111/article/details/78696294

 


面试笔试小知识点语言C++软件开发基础知识

语言、数据结构与算法、操作系统、计算机网络、数据库、

 

 

猜你喜欢

转载自blog.csdn.net/m0_37357063/article/details/82350497
今日推荐