腾讯

一、 C++和Java的区别  ?
1.C++使用指针,Java没有指针;2.c++支持多重继承,ava不支持多重继承;3,C++ 申请内存空间后,需要手动释放,而Java有垃圾自动回收机制。
4.Java不支持操作符重载。操作符重载被认为是c++的突出特征等。
二、C++构造函数或者析构函数调用虚函数有什么问题?
      父类先于子类被构造,当父类中的构造函数被调用时,子类还没有形成,此时子类对于编译器来说是不存在的,所以调用的仍是父类本身的虚函数。这样不能达到多态的效果,所以在构造函数中定义虚函数并没有意义。
三、进程间如何通讯?
      无名管道(pipe),有名管道(FIFO),信号,信号量,消息队列,内存共享,套接字。
四、Linux初期没有多线程如何处理并发?
       记得在哪里见过,使用轻量级进程。
五、进程和线程的区别 ?
     进程:是程序运行的实例,是系统进行资源分配和调度的一个独立单位,它包括独立的地址空间,资源。
     线程:可以看成是轻量级的进程,是CPU调度和分派的基本单位。一个进程可以包含多个线程。

区别:

1.调度 :从上面的定义可以线程看出一个是任务调度调度的基本单位,进程是资源分配的基本单位

2.共享地址空间,资源:进程拥有各自独立的地址空间,资源,所以共享复杂,需要用IPC,同步简单; 线程共享所属进程的资源,共享简单,但同步复杂,要通过加锁等措施。

3.占用内存,cpu: 进程占用内存多,切换复杂,CPU利用率低; 线程占用内存少,切换简单,CPU利用率高。

4.相互影响: 进程间不会相互影响; 一个线程挂掉会导致整个进程挂掉。

六、数据库五范式?
1NF(第一范式): 数据库表的每一列都是不可分割的基本数据项。 如“电话号码”这个属性 可以继续
被分割为“办公电话”、“手机号码”等属性,在第一范式的语义下不应该被作为单独的一列出现。
2NF(第二范式):必须先满足第一范式。 数据库表中的每一行必须可以被唯一的区分,即每一行中有
一个唯一标识将这行与其他行区分出来,这个唯一标识就是我们常说的主键。 在2NF的语义下,所有
非主键的字段都要依赖主键。比如在学生表中我们用学生id作为主键,那么当我们需要查询一个学生的
时候,通过他的id号应该可以唯一地定位到这个学生,会并且只会查出一行。

3NF(第三范式):必须先满足第二范式。非主键字段都与主键字段有直接依赖关系,不存在传递依赖。可以

理解为非主键字段只依赖主键字段,而不依赖其它的非主键字段。

比如员工表的字段构成为:员工id(主键),姓名,性别,年龄,所属部门,部门,部门经理姓名,部

门电话。 这里所有的非主键字段并不是直接依赖于主键“员工id”,  可以看到“部门经理姓名”和“部门电话”

这两个属性依赖于“所属部门”,而“所属部门”又依赖于主键“员工id”,这就是传递依赖,这里可将该员工表

的表结构改成:员工id(主键),姓名,性别,年龄,部门名称单独提出部门表结构为:部门名称(主键),

部门经理id  ,部门电话

4NF(第四范式):必须先满足第三范式。简单来说就是将表中的多值属性拆分出来,分别建表。

比如在用户表中有一个非主键字段“电话号码”,某一行实例的“电话号码”内容可能是手机号码,

可能是座机号码,也可能是多个内容的直接组合(如“电影”属性中填“动作,喜剧,科幻”), 这

就是多值属性。

七、 操作系统内存分配策略
。。。。。。

八、sqlite和服务器数据库的区别
            由于sqlite属于轻量级的数据库,对于处理大批量数据的性能是没有服务端数据库强的,主要运行在手机端,对内存要求很 的设 备上,所以不适合当服务器数据库。

九、快速排序 
使小于选定基准的数据在一边,大于的在另一边 而后分而治之。
*快速排序,时间复杂度O(Nlog(N)),算法不稳定 */

int partition(vector <int>  &arr, const int left, const int right)
{
	int temp = arr[left];
	while(left < right)
	{
		while(left<right && arr[right] > temp)
		{
			rigth --;
		}
		arr[left] = arr[right];
		while(left<right && arr[left] < temp)
		{
			left++;
		}
		arr[right] = arr[left];
	}
	arr[left] = temp;
	return left;
}

void QWuick_sort(vector <int>  &arr, const int left, const int right)
{
	if(left < right)
	{
		int paviot = partition(arr,left,right);
		QWuick_sort(arr,left,paviot-1);
		QWuick_sort(arr,paviot+1,right);
	}
}

十、 红黑树
http://www.cnblogs.com/wuchanming/p/4444961.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值