黑马程序员技术交流社区

标题: 100家IT名企面试题系列之c/c++面试宝典 [打印本页]

作者: 播妞    时间: 2017-9-21 14:51
标题: 100家IT名企面试题系列之c/c++面试宝典
1.newdeletemallocfree关系
delete会调用对象的析构函数,new对应free只会释放内存,new调用构造函数。mallocfreeC++/C语言的标准库函数,new/deleteC++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以及一个能完成清理与释放内存工作的运算符delete。注意new/delete不是库函数。
2.deletedelete []区别
delete只会调用一次析构函数,而delete[]会调用每一个成员的析构函数。在More Effective  C++中有更为详细的解释:“当delete操作符用于数组时,它为每个数组元素调用析构函数,然后调用operatordelete来释放内存。”deleteNew配套,delete []new []配套
  MemTest*mTest1=newMemTest[10];
  MemTest*mTest2=newMemTest;
  int*pInt1=newint[10];
  int*pInt2=newint;
  delete[]pInt1;  //-1-
  delete[]pInt2;  //-2-
  delete[]mTest1;//-3-
  delete[]mTest2;//-4-
  -4-处报错。
这就说明:对于内建简单数据类型,deletedelete[]功能是相同的。对于自定义的复杂数据类型,deletedelete[]不能互用。delete[]删除一个数组,delete删除一个指针简单来说,用new分配的内存用delete删除用new[]分配的内存用delete[]删除delete[]会调用数组元素的析构函数。内部数据类型没有析构函数,所以问题不大。如果你在用delete时没用括号,delete就会认为指向的是单个对象,否则,它就会认为指向的是一个数组。
3.C C++ JAVA共同点,不同之处?4.继承优缺点。
类继承是在编译时刻静态定义的,且可直接使用,类继承可以较方便地改变父类的实现。但是类继承也有一些不足之处。首先,因为继承在编译时刻就定义了,所以无法在运行时刻改变从父类继承的实现。更糟的是,父类通常至少定义了子类的部分行为,父类的任何改变都可能影响子类的行为。如果继承下来的实现不适合解决新的问题,则父类必须重写或被其他更适合的类替换。这种依赖关系限制了灵活性并最终限制了复用性。
(待补充)

5.C++有哪些性质(面向对象特点)
封装,继承和多态。
在面向对象程序设计语言中,封装是利用可重用成分构造软件系统的特性,它不仅支持系统的可重用性,而且还有利于提高系统的可扩充性;消息传递可以实现发送一个通用的消息而调用不同的方法;封装是实现信息隐蔽的一种技术,其目的是使类的定义和实现分离。
6.子类析构时要调用父类的析构函数吗?
析构函数调用的次序是先派生类的析构后基类的析构,也就是说在基类的的析构调用的时候,派生类的信息已经全部销毁了定义一个对象时先调用基类的构造函数、然后调用派生类的构造函数;析构的时候恰好相反:先调用派生类的析构函数、然后调用基类的析构函数JAVA无析构函数深拷贝和浅拷贝
7.多态,虚函数,纯虚函数
8.求下面函数的返回值(微软)
int func(x)
{
    int countx = 0;
    while(x)
    {
          countx ++;
          x = x&(x-1);
     }
    return countx;
}  
假定x = 9999。 答案:8
思路:将x转化为2进制,看含有的1的个数。
9.什么是引用?申明和使用引用要注意哪些问题?
答:引用就是某个目标变量的别名”(alias),对应用的操作与对变量直接操作效果完全相同。申明一个引用的时候,切记要对其进行初始化。引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,不能再把该引用名作为其他变量名的别名。声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。不能建立数组的引用。
10.引用作为函数参数有哪些特点?
1)传递引用给函数与传递指针的效果是一样的。这时,被调函数的形参就成为原来主调函数中的实参变量或对象的一个别名来使用,所以在被调函数中对形参变量的操作就是对其相应的目标对象(在主调函数中)的操作。
2)使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作;而使用一般变量传递函数的参数,当发生函数调用时,需要给形参分配存储单元,形参变量是实参变量的副本;如果传递的是对象,还将调用拷贝构造函数。因此,当参数传递的数据较大时,用引用比用一般变量传递参数的效率和所占空间都好。
3)使用指针作为函数的参数虽然也能达到与使用引用的效果,但是,在被调函数中同样要给形参分配存储单元,且需要重复使用"*指针变量名"的形式进行运算,这很容易产生错误且程序的阅读性较差;另一方面,在主调函数的调用点处,必须用变量的地址作为实参。而引用更容易使用,更清晰。
11.在什么时候需要使用常引用 
如果既要利用引用提高程序的效率,又要保护传递给函数的数据不在函数中被改变,就应使用常引用。常引用声明方式:const 类型标识符 &引用名=目标变量名;
1
int a ;
const int &ra=a;
ra=1; //错误
a=1; //正确
2
string foo( );
void bar(string & s);
那么下面的表达式将是非法的:
bar(foo( ));
bar("hello world");
原因在于foo( )"hello world"串都会产生一个临时对象,而在C++中,这些临时对象都是const类型的。因此上面的表达式就是试图将一个const类型的对象转换为非const类型,这是非法的。引用型参数应该在能被定义为const的情况下,尽量定义为const
除此之外,关于面试宝典还有123道题,查看全部宝典,回帖下载附件即可

每一道题都是老师们的精心整理,走心的回帖走心的学习哈




作者: JSCao    时间: 2017-9-22 23:40
不错好好学
作者: XuHabbo    时间: 2017-9-25 21:30

哇,总结的的这么多学习了
作者: sai_tang    时间: 2017-9-28 10:25
很给力,学习

作者: longskyer    时间: 2017-9-29 17:26
百度云链接有吗
作者: 543117322    时间: 2017-9-30 01:03
很给力,学习
作者: Yin灬Yan    时间: 2017-10-2 00:17
我来占层楼啊   
作者: 小小的我    时间: 2017-10-4 15:26
谢谢!看一下面试题。
作者: 随遇而安666    时间: 2017-10-5 00:50
应该很棒++++++++++++++++++++++
作者: a345421673    时间: 2017-10-6 08:47
谢谢分享,正好需要用到
作者: 枝间    时间: 2017-10-6 20:20
谢谢分享!!!
作者: zaq    时间: 2017-10-7 16:34
6666666666
作者: Ruin    时间: 2017-10-8 16:03
100家IT名企面试题系列之c/c++面试宝典
作者: Lego丶    时间: 2017-10-10 20:18
给力666666666666666
作者: Lego丶    时间: 2017-10-10 20:19

作者: Lego丶    时间: 2017-10-10 20:19
{:8_468:}{:8_468:}{:8_468:}
作者: Lego丶    时间: 2017-10-10 20:25
{:8_468:}{:8_468:}{:8_468:}
作者: a314958499    时间: 2017-10-10 21:06
不错的资料
作者: 天道轮回    时间: 2017-10-11 11:18
很有用哈
作者: 加。。油    时间: 2017-10-12 11:12
谢谢分享
作者: longskyer    时间: 2017-10-13 16:27
66666666666666666666666666666
作者: longskyer    时间: 2017-10-13 16:28
谢谢分享
作者: longskyer    时间: 2017-10-13 16:52
不错的资料
作者: longskyer    时间: 2017-10-13 16:56
双击666

作者: 新新凯    时间: 2017-10-14 09:26
好好学习,天天向上
作者: Allen_    时间: 2017-10-16 10:17
谢谢分享////
作者: yinman    时间: 2017-10-17 20:07
6666666666666666666666
作者: a940605a    时间: 2017-10-23 10:41
整理得很全,学习
作者: justdone32    时间: 2017-10-29 20:02
感谢分享
作者: 幼儿源    时间: 2017-10-31 12:47

哇,总结的的这么多学习了
作者: lnn    时间: 2017-11-2 13:19
=====================
作者: cekongsb    时间: 2017-11-2 14:08
好好学习天天向上
作者: 巴士    时间: 2017-11-5 07:03
学习学习心得,学习顶贴,谢谢分享

作者: 圊晨OvO    时间: 2017-11-11 03:35
66666666666666666666
作者: Jack小白    时间: 2017-11-15 10:46
谢谢谢谢
作者: hua    时间: 2017-12-18 02:50
好好学习天天向上
作者: 剑客    时间: 2017-12-21 21:54
,,,,,,,,,,,
作者: 下午茶924    时间: 2017-12-25 21:27
谢谢,学习了66666666666
作者: tianshanlaike66    时间: 2017-12-26 15:08
我喜欢谢谢哈
作者: zzp8148    时间: 2017-12-26 20:15
很需要,很急很关键
作者: Melon_Skin    时间: 2017-12-31 08:57
感谢分享!!!!!!!!!!
作者: lm914361    时间: 2018-1-1 16:43
很给力.fffffffffffff
作者: L超    时间: 2018-1-6 18:50
谢谢楼主

作者: 906439620    时间: 2018-1-6 21:07
谢谢你,分諿给我们

作者: 906439620    时间: 2018-1-6 21:08
谢谢分享磦,非常感谢
作者: 906439620    时间: 2018-1-6 21:08
谢谢分享磦,非常感谢
作者: CO1123    时间: 2018-1-11 19:50
还是巴适的板DB
作者: 奋斗的小胖子    时间: 2018-1-13 10:31
这个不错哟,美女漂亮
作者: 飘渺洞天1    时间: 2018-1-16 11:21
学习学习,谢谢楼主分享
作者: Thirsome    时间: 2018-1-16 14:58
非常感谢!!!!!!!!!!!!!!
作者: x1a0miracle    时间: 2018-1-24 14:56
谢谢分享
作者: qauwang    时间: 2018-1-24 16:25
谢谢老师们!
作者: 赵信鑫    时间: 2018-1-26 19:27
xuexixia学习
作者: 嘻嘻呀    时间: 2018-1-29 23:50
我想下载呀
作者: 路上星火    时间: 2018-1-31 11:32
都是感受到根深蒂固
作者: bill254    时间: 2018-2-3 16:14
dasdasd adasdas
作者: czx    时间: 2018-2-4 22:08
6666666666666666666
作者: zkk666    时间: 2018-2-7 22:32
谢谢!!!!!!!!!!!!!!
作者: qq632032833    时间: 2018-2-7 23:44
支持黑马  学习资料收下
作者: qqwe    时间: 2018-2-8 13:25
不错 不错不错不错
作者: 菜鸟一枚3247    时间: 2018-2-8 16:43
6666666666666
作者: gjxman    时间: 2018-2-10 09:54
感谢传智博客的每一位老师
作者: nasa0610    时间: 2018-2-11 16:37
888888888888
作者: Arrow.G    时间: 2018-2-13 12:54
走心,来一个
作者: shaoyine    时间: 2018-2-15 04:13
不容易拿\呀
作者: 静静的顿河    时间: 2018-2-16 09:16
看看,,,,,,,,,,,,,,,,,
作者: yiyaya    时间: 2018-2-20 22:47
dscvdfv fdv
作者: laymond    时间: 2018-2-22 12:19
好好学习 天天向上
作者: 满血小进    时间: 2018-2-26 18:29
下载下来看看 学习一下
作者: benx    时间: 2018-2-28 13:24
不错不错
作者: TRH001    时间: 2018-2-28 15:18
正好需要,感谢分享
作者: Resist1006    时间: 2018-3-1 02:30
谢谢!!!!!!
作者: 猎户座的星云    时间: 2018-3-1 11:25
不错啊看看
作者: 西楼    时间: 2018-3-1 11:59

作者: DWJ_2015    时间: 2018-3-1 18:42
学习学习再学习
作者: 流羽……    时间: 2018-3-3 19:22
66666666666
作者: Splisssssssssss    时间: 2018-3-3 22:23
总结的很好,顶一个。
作者: 一陆狂奔    时间: 2018-3-4 14:35
哇,总结的的这么多学习了
作者: lynaladin    时间: 2018-3-4 16:16
不错,赞一个!
作者: 476494586    时间: 2018-3-6 20:30
这么多资源,支持!
作者: 一匹很黑的马    时间: 2018-3-8 17:12
下载附件
作者: 1136856840    时间: 2018-3-8 21:54
xiexielouzhu
作者: 教案设计速    时间: 2018-3-9 20:03
rgtfdgdfgfdg
作者: changccl    时间: 2018-3-9 20:05
DFSDFFFFFFFFFFFFFF
作者: 吴成    时间: 2018-3-10 09:05
黑马老学员了,会来学学新知识
作者: 吴成    时间: 2018-3-10 09:21
楼主辛苦了,很实用的东西
作者: 吴成    时间: 2018-3-10 09:21
楼主辛苦了,很实用的东西
作者: ljbzlj    时间: 2018-3-11 09:43
的点点滴滴多多多多多多多dddd
作者: 海阔天空360    时间: 2018-3-12 11:28
666666666666666666
作者: Styhgy2018    时间: 2018-3-13 11:18
走心的学习

作者: qd130850420    时间: 2018-3-16 11:19
除此之外,关于面试宝典还有123道题,查看全部宝典,回帖下载附件即可

每一道题都是老师们的精心整理,走心的回帖走心的学习哈
作者: 菜鸟666    时间: 2018-3-16 15:54
学习一下
作者: nxnxfly    时间: 2018-3-16 16:33
好 很多细节 没法通过看书直接记住
作者: itbaidu    时间: 2018-3-17 19:38
先瞧瞧 看是不是实用
作者: gabc    时间: 2018-3-18 23:35
给力                                    
作者: LCM96    时间: 2018-3-19 16:32
好好学习
作者: iamchenxin    时间: 2018-3-20 14:37
非常棒的资料
作者: ankeseng    时间: 2018-3-21 09:36
感谢感谢
作者: 菜鸟进阶    时间: 2018-3-21 15:06
爱你妞妞
作者: yuzoku    时间: 2018-3-22 16:54
看看答案  自己复习复习




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2