1.介绍STL ,详细说明stl如何实现vector?
stl 他是与容器,算法,迭代器组成。优点:1.方便的对数据进行一系列的操作:排序,搜索,插入,添加,删除等。 2. 调试程序方便和安全 3.跨平台。
vector实质上就是一个动态数组,会根据数据的增加而扩展其空间大小。
2.多态和继承的关系及区别: 多态的基础是继承,没有继承,就没有多态。
3.指针引用? 引用具有指针的效率,又具有变量使用的方便性和直观性。引用必须初始化,不能为空,一经初始化就不再改变。
4.几种传值方式?1.不同值传递 (复制对象)不会改变原始数据,但大数据向会消耗内存和时间 2.指针传递(地址的传递)能改变原始对象。快速 4.引用传递:使用方式同值,但是效果确是指针效果。c++推荐我们使用引用来代替掉指针的传递。值的传递,我们可以使用const & .来完成。
5.设计模式理念:设计模式更多考虑的是拓展和重用性。
6.设计模式:是解决某个特定的面向对象软件问题的特定方法。同类的问题,我们使用这以种设计模式来解决:而不必再次设计解决方案。
设计模式与框架的区别: 1. 设计模式针对面向对象问题解决,而框架针对特定业务解决。 2. 设计模式更抽象,框架则已经可以用代码表示了。3.框架中可以包含多个设计模式。 框架是半成品。我们通过框架可以提高效率,减少重复而又单调的工作。
7.c和c++的结构区别: c中的结构:仅仅是数据的集合。 c++中的结构:具有类的特性。 c中的结构变量前面需要加上struct修饰。 而c++中不需要。
8.构造函数不能为虚函数:因为现有父类再有子类,对象都没有出来,何来的方法调用呢。 析构可以是虚函数,也可以是纯虚函数。
9.多态:1.函数重载2.模版使用3虚函数 , 子类与父类的继承关系怎么说? 子继承了父的大部分资源。只有构造,析构,拷贝构造,operator= 4大函数不能够继承,还加上一个友元函数。不能继承。
10.为什么要进入抽象基类和纯虚函数? 目的是为了实现一种接口效果。 达到更好的表示客观世界。
1.介绍一下模版:他就是体现了一种通用和泛化的编程思想。 7大容器:vector list deque map set multimap multiset stack queque qro....queue.
2.mvc: model view contrler 模型层(具体的类实体),视图层(用户的操作层面),控制层(业务逻辑的处理代码层) dao层。
3.举例几个进程同步的例子?!! 215
4.进程死锁:就是多个进程自己手里都具有资源,都想要别的进程的进程。相互索取,永远达不到释放资源的条件。就死锁罗
5。。。。。。。。。215题开始是进程的知识点了,我要多多看看啊。
6.类的静态成员和非静态成员的区别: 1.静态成员只有一个,所有该类对象所共享。可以通过类名直接调用获取 2. 非静态成员,每个对象都有自己的副本。通过对象.操作符
7.数组与链表的区别:数组固定大小,顺序存储, 链表大小可变,而且随机存储。比较灵活。但管理起来比数组费事。
8.内存分配: 1. 静态存储区(全局区:bbs段(一个初始化为0的一段内存空间)):全局变量和static变量.程序运行期间都存在 2.栈区:局部变量。函数结束后自动释放 3.堆区:具有全局性。程序使用malloc new free delete的时候开辟和释放空间,使用灵活,但是问题也多,需要我们管理,手工分配空间手工释放空间。
9.多态的作用:1.隐藏实现细节 2.接口的重用,给外界统一的接口。
10.new delete malloc free 的区别: new delete 会调用构造和destructor , 而malloc不会初始化对象 free 不会调用对象的destructor。
11.static作用:1. 限制变量的作用域 2.设置变量的存储域。
12.堆栈溢出一般是什么原因导致的: 1. 无条件的递归导致而成 2.大数据结构的使用导致堆栈空间的不够用。3.没有回收垃圾资源,导致内存泄漏最后耗尽内存。
13.int (*s[10])(int) 这是个函数指针数组: 每个指针指向一个int func(int ppp) 的函数。
14.extern "C"是连接申明 :被extern "C" 修饰的变量和函数是按照C语音方式编译和连接的。
这东西,可以把用C语言写的代码加入到c++项目中,这样就可以懒得写代码罗。嘻嘻
15.strcpy机制:把从src地址开始且含有NULL结束符的字符串赋值到以dest开始的地址空间 ,如果没有结束符,那么copy的字符数不确定。
16.把指针当作参数传给一个形参是指针的函数,即使在函数内部给该指针malloc了东东,也没有给实参malloc,所以要注意这个陷阱哦。因为指针赋值给指针相当于值赋值。除非值地址赋值给指针还差不多。
17. strcpy的实现:
char * strcpy(char * strDest, const char * strStc){
assert( (strDest != NULL ) && ( strStc != NULL) );
char *adress=strDest;
while( ( *strDest++ =* strStc++ ) != '\0');
return address;
}
18.strlen的实现:
int strlen(const char * str){
assert( strt != NULL );
int len;
while( (*str++) != '\0' ){ len++; }
return len;
}