2017年8月8日

1.tcp和udp的区别?

a.tcp是面向连接的,udp是无连接的

b.每一条tcp仅支持一对一通信,udp支持1对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类的保护成员的作用?

 

posted @ 2017-08-08 12:41  china_sdd  阅读(132)  评论(0编辑  收藏  举报