找工作这么多天了,贴一下常见基础题吧,谁找工作了还可以复习下。答案有的是缺少很多,想看全百度之谷歌之...
1.进程与线程的区别:
很长重点写了:一个程序必须有一个进程,一个进程要有一个线程。
进程在运行时有独立的内存单元,而线程则是共享内存单元,所以一个线程死掉这个进程就会死掉,但是一个进程死掉程序无所谓。所以多进程程序比多线程要 稳定。
2.c++函数传递参数的方式:
1.直接传递、引用、指针。
他们的优缺点:
1.按值传递,在传递的时候实参被复制了一份,然后在函数体内使用。如果修改函数体内的拷贝,而实参是没有改变的。
2.引用是别名,所以效率别指针快,也比指针安全。(优先使用引用而不使用指针)
3.按值传递和引用传递在传参过程中,都执行强类型检查,而指针传递的类型比较弱,如果参数被声明为void*基本上没有类型检查,只要是指针编译器就认为是合法的,所以这会造成BUG。
4.指针可以干引用的活,而且还可以传递空指针,特别函数特别应用。但是指针用起来本身就很麻烦,如非需要还是不用。
*3.什么是深拷贝和浅拷贝
深拷贝:拷贝了对象的资源,在新对象中又建立了一个新的字段把资源放进去,如果修改其一,另一个不会改变。
浅拷贝:没有拷贝对象资源,它们共享资源,如果改变其一另一个也会随之改变。
4.面向对象的三个基本特征
1)封装:将客观事物封装成类,并且赋予private,public,protected.三种模式
2)继承:三种继承模式:私有、公有、保护
3)多态:
实现方法有:虚函数、抽象类、重载、覆盖、模板
虚函数:被virtual修饰的成员函数就是虚函数啦,但是这个函数不能是static静态成员函数。如果基类的某个函数是虚函数的话,那么子类也是虚函数了,不管 有没有virtual关键字。
关键点就是用指向基类的指针或是引用,操作对象。(基类名*指针名=&派生类对象)c++的灵魂慢慢悟...
抽象类:含有纯虚函数的类称为抽象类,它不能生成对象,抽象类只能作为基类。
为什么不能生成对象?看百度的解释:动物可以作为一个类派生出老虎、孔雀、狮子等子类,但是本身不能成对象(真心佩服这句解释)
virtual <类型><函数名>(<参数表>)=0;
重载:函数名相同但是定义却不相同,可能参数个数不同或是参数类型不同,这个是要在同一个类中才能实现。
这个编译器会自动判定用哪个函数
覆盖:在基类与子类中总有那么多事- -!
子类与基类的函数名和参数都相同,但是基类必须要有virtual关键字。如果基类的函数前没有virtual关键字,则是隐藏了哦。这个跟覆盖不一样了!
模板:暂无
5.new delete与malloc free的区别:
都是在堆上进行动态分配内存和释放内存。
不同点:new会调用对象的构造函数,delete会调用析构函数。说白了New与delete专为c++而存在,玩的就是对象。
mallooc与free是c语言的函数,而deldete和new则是c++的运算符。
malloc分配空间的大小时候需要指定空间大小,而new是自动计算的。
注意:释放完内存将指针设置为NULL
6.内存的分配方式:
1.静态存储区:内存在程序编译的时候就已经分配好了,在程序的整个运行期间都存在。全局变量,static变量等
2.栈区分配:函数的局部变量和返回值在此创建,执行结束后被自动释放。
3.堆区分配:也就是动态分配,new/malloc分配的,由自己决定释放。但一不小心内存泄露,如果有内存泄露的错误,先找这部分原因。
4.文字常量区:常量和字符串就是放在这里的,程序结束后由系统释放
5.程序代码区:存放函数体的二进制代码
*7.int、float、bool、指针类型的变量与“零”的比较值
int:if(a==0)
float:const EXPRESSION EXP=0.000001
if(a<EXP&&a>-EXP)
bool:if(!a) or if(a)
指针类型:if(a!=NULL) or if(a==NULL)
*8.const与static的比较:
static有两大作用:控制存储方式和控制可见性与链接类型
一:由于函数在栈上分配的空间在函数结束后会释放掉,所以statc修饰变量,将变量存储到静态存储区而不是栈上,这样就可以再次调用了。虽然有全局变 量,但是会破坏变量的访问范围。
二:针对类的成员来讲,类的静态成员函数只能访问类的静态数据和静态成员函数,因为它没有了this指针。静态成员变量只属于整个类所有,有独立的存储区
const修饰变量,表示只读不能修改。int const a和const int a 是没有区别的
const修饰函数,表示这是一个本地函数不能被模块外的函数调用。
const修饰函数,返回值不能修改。
来源:https://www.cnblogs.com/zylc/archive/2012/11/12/2766798.html