青岛澳科一面 软件研发岗(c/c++)
在牛客网应该是澳科第一个面经,学校周边的企业,待遇的话在青岛算是中上,加上提供两年住宿,感觉还是不错的,尝试了外卖、自动驾驶、快递、短视频、游戏这些行业,大厂冲不动了,不知道算不算妥协了(唉,我好菜),
一、自我介绍,主要说一下简历中没有,你想展示的内容
二、介绍一下项目,你主要负责什么,有没有独自完成的项目
三、考研的情况,不继续考了吗?
四、c++面向对象的特性并解释一下?
封装:隐藏实现细节,使得代码模块化、
继承:可以实现现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展、
多态:允许将子类类型指针赋值给父类类型的指针
五、虚函数是什么?有什么作用?
用virtual关键字申明的函数叫做虚函数,是允许被其子类重新定义的成员函数。
在一个派生类中,当一个指向基类成员函数的指针指向一个虚函数,并且通过指向对象的指针或引用访问这个虚函数时候将发生多态性。
多态用虚函数来实现,
六、c、c++申请内存用什么,有什么区别?详细解释一下
1、malloc free是库函数而不是运算符,不在编译器控制范围内,不能够自动调用构造函数和析构函数,new在为对象申请内存空间时,可以自动调用构造函数,同时也可以完成对象的初始化,同理,delete也可以自动调用析构函数,而malloc只是为变量分配了内存,所以在使用时必须指定大小,同理free也只是释放变量。
2、new返回的是指定类型的指针,并且可以自动计算申请内存的大小。而malloc需要我们计算申请内存的大小,并且在返回的是void*类型,然后再强行转换为实际类型的指针。
int *p=new int;
3、c++允许重载new/delete操作符,malloc、free不能重载
4、new内存分配失败时,会抛出bac_alloc异常。malloc分配内存失败时返回NULL
5、new操作符从自由存储区上为对象动态分配内存空间,而malloc函数从堆上动态分配内存。
6、new、delete是c++中的操作符,而malloc和free是标准库函数。