2017年8月8日

1.tcp和udp的区别?tcp

a.tcp是面向链接的,udp是无链接的函数

b.每一条tcp仅支持一对一通讯,udp支持1对一、1对多、多对1和多对多的通讯指针

c.tcp提供可靠交付的服务,udp使用尽最大努力交付对象

d.tcp面向字节流,udp面向报文继承

e.tcp有拥塞控制,udp没有拥塞控制队列

f.tcp首部开销最少20个字节,udp首部开销只有8个字节进程

2.指针和引用的区别?内存

a.指针能够有const,引用不能够有const消息队列

b.指针能够为空,引用不能够为空模板

c.sizeof引用的大小为引用所指变量的大小,sizeof指针的大小为指针所属类型的大小

d.指针的值能够改变,引用的值能够改变

e.指针能够有多级,引用只能是一级

3.进程间通讯的方式?最高效的是哪一种方式?

a.管道

b.消息队列

c.共享内存

d.套接字

其中共享内存最高效,共享内存是一个进程映射一段能够被其余进程所访问的内存 也就是说 一个进程建立,多个进程访问。

4.有名管道和无名管道的区别?

无名管道只能在具备亲缘关系的进程间使用(进程的亲缘关系是指父子进程关系)

有名管道容许无亲缘关系进程间的通讯

5.C++多态是如何实现的?虚函数表存放在什么地方?

多态能够经过 虚函数、覆盖、抽象类、模板。虚表指针存储在对象的内存空间,因此虚函数表也应该存储在对象的内存空间。(虚函数表里有虚表指针)

6.tcp在传输的过程当中是如何保证可靠链接的?

超时重传,发送端在发送数据后为每个数据包保留一个记录,同时发送端发送数据包是启动一个计时器,当计时器过时时仍未收到该数据包的确认,发送端将从新发送该数据包。发送方只有收到数据包的确认消息后,才清除该数据包记录。

7.list和vector的区别?

a.vector是连续存储的,list是离散存储的

b.list是双向的,vector是单向的

8.智能指针?

 

9.C++11的新特色?

a.支持long  long类型

b.能够对 vector,struct等等进行列表初始化 vector<int> a= {1,2,3,4,5,6};

c.推出了nullptr 空指针

d.using 类型别名:和关键字typedef的做用同样用来声明一个类型的别名

10.STL迭代器失效的解决办法?(不经过改代码的方式)

11.vector当空间不够存放数据时,而后会申请一篇更大的空间,把原来的数据拷贝过去。

 12.构造函数和析构函数能够为虚函数吗?构造函数和析构函数里面会调用虚函数吗?

构造函数不能声明为虚函数,由于虚函数对应一个虚表指针,这个虚表指针是存储在对象的内存空间的,若是构造函数是虚的,就须要经过虚表指针来调用,但是对象的内存空间还不存在,也就是说虚表指针不存在。

析构函数能够声明为虚函数,并且有时必须声明为虚函数,在类的继承中,若是有基类指针指向派生类,delete基类指针的时候,若是析构函数不是虚函数,会直接析构掉基类,派生类的析构函数不会被执行,直接后果是内存泄漏。

在构造函数中能够调用虚函数,可是最好不要这样作,由于在调用构造函数时,这时候类里面的变量可能还未被初始化,虚函数这时候可能会访问内存中未知的区域。

在析构函数里面能够调用虚函数,但最好不要这样作,由于调用析构的时候类里面的变量可能已经被析构了,虚函数这时可能会访问内存中未知的区域,比较容易出错。

13.类的私有成员是这个类的  is仍是has

14类的保护成员的做用?

相关文章
相关标签/搜索