1. 迭代器失效可能是什么原因导致的?

STL的容器,STL中的容器包括 序列式容器,关联式容器。但是在使用某些容器的时候会出现迭代器失效的问题 。

通常 数组, 链表, 树结构 会出现迭代器失效。 vector   list,map(set,mulitimap, mulitiset)。

vector迭代器失效 。

失效现象:

在调用erase函数进行删除某一个元素或者迭代器的时候,当前位置及以后位置的迭代器会失效。

失效原因 :

在删除某一迭代器或者元素的时候,会将后面的元素向前移动,导致这个元素以后的迭代器都没有指向正确的位置,并且最后一个迭代器指向的空间内容无效。 

解决方法: 
为erase设置一个返回值,返回当前结点的下一个位置的迭代器,即iterator it =erase(pos)。

失效现象 
在调用erase函数进行删除某一个结点时,导致这个结点的迭代器失效。 
失效原因 
在将结点删除以后,没有改变当前迭代器的指向。 
解决方法 
第一种: 
为erase函数设置一个返回值,返回当前结点的下一个结点的迭代器,即 iterator it = erase (pos)。

2. 了解设计模式,单例模式 和 简单工程模式:

单例模式要求:

成员函数  Get实力对象的接口创建对象。

构造函数  拷贝构造函数  函数重载  都私有化。 可能要考虑加锁。

3.命令行了解 

cpu占有率的命令 top 。

4.进程 和 线程的概念。  

线程(thread) 是操作系统能够进行运算调度的最小单位。

线程同步   进程同步。

进程:程序跑起来就是进程。

5.内核空间 和 用户空间。

kernel  和  usr 空间 0到3g 用户空间 3g 到 4g 内核空间 。

当进程运行在内核空间时就处于内核态,而进程运行在用户空间时则处于用户态。

是没有内核空间、用户空间以及内核态、用户态这些概念的。可以认为所有的代码都是运行在内核态的,因而用户编写的应用程序代码可以很容易的让操作系统崩溃掉。

Linux 来说,通过区分内核空间和用户空间的设计,隔离了操作系统代码(操作系统的代码要比应用程序的代码健壮很多)与应用程序代码。

即便是单个应用程序出现错误也不会影响到操作系统的稳定性,这样其它的程序还可以正常的运行(Linux 可是个多任务系统啊!)。

系统调用   中断  定时器中断