C++经典50大面试题

所需积分/C币:44 2013-10-13 09:24:01 1.06MB PDF
收藏 收藏 72
举报

涉及到IT行业最经常问的50大C++面试题....
volatile 面试题:个指针可以是 可以,囚为指针和普通变量一样,有时也有变化程序的不可控性。常见例:子中断服务子程序修改 个指可一个的指针时,必须用 米修饰这个指针 说明:指针是一种普通的变量,从访问上没有什么不同于其他变量的特性。其保存的数值是个整型 数据,和整型变量不同的是,这个整型数据指向的是一段內存地珏 面试题:和有什么区别 请写出以下代码的打印结果,主要目的是考察和的区别。 输出结果:,。 注意:敖组名可以作数组的首地地,而足数组的指针。思考,将原式的 改为 时输出结果将是什么呢? 面试题:简述 程序编译的内存分配情况 、中内存分配方式可以分为三种 ()从静态存储区域分配: 内存在程序编译时就已经分配妊,这内存在程序的整个运行期间都存在。速度快、不容易出错, 因为有系统会善后。例如全局变量 变量等。 ()在栈上分配: 在执行函数时,函数内局部变量的存储单元都在栈上创建,函数执行结束时这些存储单元自动被释 放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。 ()从堆上分配: 即动态内存分配。程序在运行的时候用 或申请任意大小的内存,程序员自己负责在何 时用或释放内存。动态内存的生存期由程序员決定,使用非常灵活。如果在堆上分配了空间, 就有责任回收它,否则运行的程序会出现内存泄漏,另外频繁地分配和释放不同大小的堆空间将会产生 堆内碎块 程序编译时内存分为大存储区:堆区、栈区、全局区、文字常量区、程序代码区 面试题:简述 的区别 三者主要有以下不同之处: )操作对象不同, 的两个操作对象均为字符串 的操作源对象可以是多种数据类型, 目的操作对象是字符串, 的两个对象就是两个任意可操作的内存地址,并不限于何种数据类型 ()执行效率不同, 最高,次之 的效率最低 ()实现功能不同 主要实现字符串变量间的拷贝, 主要实现其他数据类型格式到字 符串的转化, 主要是内存块间的拷贝 说明 郗可以实现拷贝的功能,但是针对的对象不同,根据实际需求,来 选择合适的函数实现拷贝功能。 面试题:设置地址为的整型变量的值为 说明:这道題就是强制类型转换的典型例子,无论在什么平台地社长度和整型效据的长度是一样的, 即一个整型教据可以强制转换成地址指针类型、只要有意义即可 面试题:面向对象的三大特征 面向对象的三大特征是封装性、继承性和多态性: 封裝性:将客观事物抽象成类,每个类对自身的数据和方法实行 口继承性:广乂的继承有三种实现形式:实现继承(使用基类的属性和方法而无需额外编码的能力、可 视继承了窗体使用父窗体的外观和实现代码、接∏继承仪使用属性和方法实现滞后到了类实现 口多态性:是将父类对象设置成为和一个或更多它的子对象相等的技术。用子类对象给父类对象赋值 之后,父类对象就可以根据当前赋值给它的子对象的特性以不同的方式运作 说明:面向对象的三亼特征是实现面向对象技术的关键,每一个特征的相关技术都非常的复杂,程 序员应该多看、多练。 面试题:的空类有哪些成员函数 口缺省构造函数。 口缺省拷贝构造函数。 缺省析构函数 缺省赋值运算符 缺省取址运算符。 口缺省取址运算符 注意:有些书上只是简单的介绍了前四个函数。没有提及后面这两个西数。但后面这两个函数也是 空类的默认函数。另外需要注意的是,只有当实际使用这些函数的时候,编译器才会去定义它们。 面试题:谈谈你对拷贝构造函数和赋值运算符的认识 拷贝构造函数和赋值运算符重载有以下两个不同之处: )拷贝构造函数生成新的类对象,而赋值运算符不能。 ()由于考叭构造函数是直接构造一个新的类对象,所以在初始化这个对象之前不用检验源对象 是否和新建对象相同。而赋值运篁符则需要这个操作,另外赋值运篁算中如果原来的对象中有内存分配贾 先把内存释放掉 注意:档有类中有指针类型的成员变量时,一定要重写拷贝构造函数和赋值运算符,不要使用默认 面试题:用设计一个不能被继承的类 注意:构造函数是继承实现的关键,每次子类对象构造时,首先调用的是父类的构造函数,然后才 是自己的。 面试题:访问基类的私有虚函数 与出以下程序的输出结果: 输出结果 注意:本题主要考察了而试者对虚函数的理程度。一个对虚函数不了解的人很难正硝的做出本题。 在学习面向对象的多态性时一定要深刻理解虛函数表的工作原理 面试题:简述类成员函数的重写、重载和隐藏的区别 ()重写和重载主要有以下几点不同。 口范围的区别:被重写的和重写的函数在两个类中,而重载和被重载的函数在同一个类中 口参数的区别:被重写函数和重写函数的参数列表一定相同,而被重载函数和重载函数的参数列表 定不同。 的区别;重写的基类中被重写的函数必须要有修饰,而重载函数和被重载函数可以被 修饰,也可以没有。 ()隐藏和重写、重载有以下几点不同 口与重载的范围不同:和重写一样,隐藏函数和被隐藏函数不在同一个类咔 口参数的区別:隐藏函数和被隐藏的函数的参数列表可以相同,也可不同,但是函数名肯定要相同 当参瀲不相同肽,无论基类中的参教是否被。修饷,基类的函数都是被隐嶽,而不是被重写 说明:虽然重载和覆盖都是实现多态的基础,但是两者实现的技术完全不相同,达到的目的也是完 全不同的,覆盖是动态态绑定的多态,而重载是静态绑定的多态。 面试题:简述多态实现的原理 编译器发现一个类中有虚函数,便会立即为此类生成虚函数表。虚函数表的各表项为指向对 应虛函数的指针。编译器还会在此类中隐含插入一个指针对。编译器米说,它插在类的第一个位 置上)指向虛函数表。调用此关的构造函数时,在类的构造函数中,编译器会隐含执行与的 关联代码,将指山对应的,将类与此类的联系了起米。另外在调用类的构造函数时 指向基础类的指针此吋已经变成指向具体的类的指针,这样依靠此指针即可得到正确的,。 如此才能真正与函数体进行连接,这就是动态联编,实现多态的基本原理 注意:一定要区分虛函数,纯虚函数、虚拟继承的关系和区别。牢记虚函数实现原理,因为多态 面试的重要考点之一,而虚函数是实现多态的基础。 面试题:链表和数组有什么区别 数组和链表有以下几点不同 ()存储形式:数组是一块迕续的空间,声明时就要确定长度。链表是一块可不连续的动态空间, 长度可变,每个结点要保存相邻结点指针 )数据査找:数组的线性査找速度快,查找操作直接使用偏移地址。链表需要按顺序检索结点, 效率低。 )数据插入或朋除:链表可以快速插入和删除结点,而数组则可能需要大量数据移动。 )越界问顾;链表不存在越界问题,数组有越界问题。 说明:在选择数组或链表数据结构时,冮定要捃实际需要进行选择。欻组便于查询,链表便于插 入删除。数组节省空间但是长度固定,链表虽然变长但是占了更多的存储空间。 面试题:怎样把一个单链表反序 ()反转一个链表。循环算法。∠ 判断链表是否为空,为空即退出 保存头结点的下个结点 保存头结点 头结点的指针指空,转换后变尾结点 循环直到 为空 实现如图 图所示 返回头指针 ()反转一个链表。递归算法。 记录上次翻转后的链表 将当前结点插入到翻转后链表的开头 递归处理剩余的链表 说明:循环算法就是图 图的栘动过程,比较好理解和想到。递归算法的设计虽有一点难 度,但是理解了循环算法,再设计递归算法就简单多了。 面试题:简述队列和栈的异同 队列和栈都是线性存储结构,但是两者的插入和删除数据的操作不同,队列是“先进先出”,栈是 “后进先出”。 注意:区别栈区和堆区。堆区的存取是“顺序随意”,而栈区是“后进先出”。栈由编译器自动分 配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。堆一般由程序员 分配轻放,若程序员不释放,程序结束时可能由回收。分配方式类似于锤表 它与本题中的堆和栈是两回事。堆栈只是一种数据结构,而堆区和栈区是程序的不同内存存储区域。 面试题:能否用两个栈实现一个队列的功能 结点结构体: 创建空栈 申请新结点 初始化新结点 栈的插入函数 检验栈 申请新结点 初始化新结点 插入新结点 出栈函数 检验栈 节点出栈 双栈实现队列的入队函数 创建空栈 出栈入 新结点入栈 出栈入 说明:用两个栈能够实现一个队列的功能,那用两个队列能否实现一个队列的功能呢?结果是否定 的,因为栈是先进后出,将两个栈连在一起,就是先进先出。而队列是现允进先出,无论多少个连在 起都是先进先出,而无法实现先进后出 面试题:计算一颗二叉树的深度 深度的计算函数 判断当前结点是否为叶子结点

...展开详情
试读 26P C++经典50大面试题
立即下载 低至0.43元/次 身份认证VIP会员低至7折
    一个资源只可评论一次,评论内容不能少于5个字
    xuxu209 恩!仔细看了下,还是有参考意义的
    2017-02-10
    回复
    Solomon_love 基础复习的资料
    2016-11-16
    回复
    随风流逝的CC 解析非常清楚,受益颇多。
    2016-08-18
    回复
    bsl0819 当时面试帮了不少忙.很有学习意义,感谢
    2016-07-25
    回复
    benjiamen 不错, 谢谢分享,
    2016-04-01
    回复
    lqcstyle 不错,可以对自己进行下考核
    2015-11-09
    回复
    scausun 很好的东西,谢谢分享
    2015-10-16
    回复
    yao_pengbo 不错,找工作必备。。。。
    2015-09-14
    回复
    123汽水 b不错哦,值得参考
    2015-03-12
    回复
    hit_zjb 已经看过好几遍,没有特别有序,不过还是值得一学
    2015-01-05
    回复
    关注 私信 TA的资源
    上传资源赚积分,得勋章
    最新推荐
    C++经典50大面试题 44积分/C币 立即下载
    1/26
    C++经典50大面试题第1页
    C++经典50大面试题第2页
    C++经典50大面试题第3页
    C++经典50大面试题第4页
    C++经典50大面试题第5页
    C++经典50大面试题第6页
    C++经典50大面试题第7页
    C++经典50大面试题第8页

    试读已结束,剩余18页未读...

    44积分/C币 立即下载 >