您好,欢迎访问三七文档
1、下面的程序是否有错误,如果有错,请说明原因。char*constpszHelp=“hello”;pszHelp[0]=‘a’;因为pszHelp指向一个常量字符串,所以根本不允许修改字符串内容。除非使用一个字符数组。2、const用法:constchar*pp是一字符串指针,该指针指向的内容是常量,指针指向的内容不能被修改charconst*p同上char*constpp是一字符串指针,该指针是常量指针,指针不能被修改3、什么是抽象类包含抽象函数的类是抽象类,满足virtualfun()=0;的语法的函数是抽象函数。主要用于提供接口,如同Java中的Interface。4、什么时候需要使用虚拟析构函数一般情况下类的析构函数都定义成虚函数,主要是考虑在使用基类指针操作派生类对象时保证类的析构顺序。5、请指出下面代码存在的潜在问题classCC{int*m_pCount;public:voidclear(){if(m_pCount)deletem_pCount;}CC(){m_pCount=newint;}~CC(){clear();}}主要存在的问题是clear函数在deletem_pCount;后并没有置指针为空(m_pCount=NULL),这样当第二次调用clear时,会出现问题。6、如何定义禁止实例化的纯抽象基类这个问题很奇怪,抽象类本身就不能被实例化,在程序编译时就会提示出错。7、在进行私有继承时,如何修改基类成员的存取权限定义一个指向该基类的友元函数,就可以绕过私有继承操作基类成员。8、如何定义一个指向类的成员函数的指针void(CC::*bfpClear)()=&CC::clear;9、类A派生类B和C,类D从类B、C派生,如何将一个类A的指针指向一个类D的指针直接使用即可,主要是考察运行时多态的概念。本题和题4要一起考虑。10、请说出程序运行的结果classA{public:virtualvoidfunc(){cout“Iaminbase”endl;};}classB:publicA{public:virtualvoidfunc(){cout“Iaminderived”endl;}}voidmain(){B*bb=newB;bb-func();A*aa=(A*)bb;aa-func();….}IaminderivedIaminderived主要考察虚函数的使用11、分析下面代码,指出问题int*func(){inti=0;return&i;}返回的是一个局部简单类型变量地址,程序可能会出错,而且返回的指针不能采用delete进行删除。classCObject;CObject*funobj(){CObjectobj;….return&obj;}返回的是一个局部CObject类型变量地址,程序会出错,而且返回的指针不能采用delete进行删除。CStringfunobj(){CStringstrTemp=_T(“temp”);returnstrTemp;}不会出错,返回的CString会调用CString的拷贝构造函数返回。12、Debug版本中经常使用ASSERT进行断言,在Release版本中有一个起同样作用的函数,请说明。VERIFY,而且要注意ASSERT中的语句在Release版本中会忽略。1、标准建模语言UML的重要内容可以由哪五类图(共9种图形)来定义,并简要说明这些图所描述的对象。2、什么是虚拟函数、虚拟继承?3、你在使用面向对象程序设计语言(例如C++,Java等)和可重用的对象类库上有何经验?实际效果如何?有什么优缺点?4、引用和指针之间有什么区别?5、什么是函数重载?6、C++与其它传统编程语言相比有何特点?7、简要说明如何绘制UML活动图。8、为什么有些类成员函数在类声明中定义而有一些则不是呢?9、对象分析和设计的阶段有哪些?10、为什么要费力地生成抽象数据类型――为什么不把它设为非抽象的数据类型和避免创建这种类型的对象呢?11、什么是多态性?多态性是如何实现的?12、查错:下面这段代码有什么错误?classShape(){public:Shape();virtual~Shape();virtualShape(constShape&);}13、查错:下面的代码有什么错?intmain(){intSomeVariable=5;count”SomeVariable:”SomeVariable”\n;”int*pVar=&SomeVariable;pVar=9;count”SomeVariable:”*pVar”\n”;return0;}14、查错:下面的程序有什么错误?并修改。#includeiostream.hint*FuncOne();intmain(){int*pint=FuncOne;cout”thevalueofpIntbackinmainis:”*pintend1;return0;}int*FuncOne(){int*pint=newint(5);count”thevalueofpIntinFuncOneis:”*pintend1;returnpint;}1、下面的程序是否有错误,如果有错,请说明原因。structA1{inti;};A1a1;a1.i=0;没有错误classA1{inti;};A1a1;a1.i=0;有错误,未显示权限定义符缺省为private。2、下面程序是否有错,有错,请说明原因。:charszTest[]=“hello”;char*constpsz=szTest;psz[0]=‘b’;没有错误,psz指向的字符串指针是常量,指针不能被修改,但指针指向的内容可以修改3、在继承层次上,构造函数和析构函数的调用顺序如何?构造函数:先基类,后派生类析构函数:先派生类,后基类4、如果一个包容器中包含指向对象的指针,当从包容器中删除某个指针时,会析构该指针指向的对象吗?包容器并不关心存放对象的类型,所以从包容器中删除成员时,仅仅只是从容器中释放该成员占有的空间。如果该成员是一个指向某个对象的指针,由用户保证指针指向对象的内存释放。5、如何阻止构造函数的自动转换首先要理解什么是构造函数的自动转换。比如有classA{….};classB{B(A&){…};};func(B){};main(){Aa;Func(a);}在调用Func(a)时,会自动调用B(A&)构造函数,保证传给Func的参数是B类型。应该采用explicit关键字来防止构造函数的自动转换。6、类的成员函数作为回调函数有什么要求?必须是静态成员函数。7、分析代码,给出i,j,k的结果。inti=0,j=0;k=0;if(++i||j++||++k){}主要是注意前置操作符和后置操作符的区别,还要考虑或操作在条件判断中的实现(如果一个为真,则不进行后续判断)。i=1,j=0,k=01.STL类模板标准库中容器和算法这部分一般称为标准模板库2.为什么定义虚的析构函数?避免内存问题,当你可能通过基类指针删除派生类对象时。必须保证基类析构函数为虚函数。3.项目管理怎么进行?制定软件项目计划;软件项目跟踪及监控。软件项目计划(SoftwareProjectPlanning)的目的是为了完成软件工程和管理软件项目所制定的计划,其内容包括估计待完成的工作,建立必要的约定和完成工作的计划。软件项目跟踪和控制(SoftwareProjectTrackingandOversighting)的目的是对实际进展建立足够的可视性,使管理着能够在软件项目的执行明显偏离软件计划时采取有效措施。其内容包括将实际的完成情况及结果和已文档化的估计、约定和计划进行对照,并且基于实际的完成情况和结果调整这些计划4.单元测试如何进行?单元测试主要编写驱动函数和桩函数,测试的目标是完成语句覆盖和路径覆盖。驱动函数用于调用被测函数,传递测试参数给被测函数。桩函数用于模拟被测函数调用的底层函数,需要对被测函数传来的各种可能参数进行正确的响应。5.VSS的三个核心操作是什么?Checkin、checkout、getlatestversion。6.USECASE图画到哪一级?一般要提供用例图、行为图和交互图及各角色定义。7.在评审过程中应该做哪些工作?以文档评审为例文档评审电子流基本流程:文档负责人创建文档评审电子流,指定评审专家和评审负责人-QA经理确认通过,通知文档作者-文档作者提交文档-评审专家提出评审意见-文档作者修改文档再次提交评审-评审专家会签通过(可能需要召开评审会议)-秘书进行文档归档8.提交配置管理前做哪些工作?已经得到QA及配置管理委员会的确认。如果提交的是源代码,确认包括需求、详细设计等一系列文档都已做了相应的修改以及确认。9.概要设计文档如果到编码时发现问题怎么处理?先提交问题报告单,经过软件经理审核,然后确认修改设计方案,修改代码,测试通过后,提交到配置库,同时更新相关的概要设计文档和详细设计文档。10.工作计划怎么制定?根据项目总体计划落实到每个具体人员身上,按照月度和周来制度工作计划。11.Rose的应用情况Rose作为一种建模语言工具可以应用于软件的需求分析、概要设计、详细设计和测试阶段。12.软件开发模式包括哪些?公司的主要开发模式包括面向对象、面向过程的开发模式,无论哪种方式都体现模块组装的思想。13.设计的主要目标是什么?逐步消化、细化需求,用程序的逻辑来表达文字性的描述。14.设计包含哪些方面?概要设计、详细设计、接口设计。15.测试在设计阶段有没有活动要做?在设计阶段要确定集成测试计划和单元测试计划。16.合作性质项目和传统项目方式有什么区别?传统项目主要根据公司自己的开发流程进行项目管理,合作性项目则需要接纳,有时甚至是按照合作方的开发模式进行项目管理,这主要由项目性质和项目需求决定的。17.在项目启动时,如何制定项目计划?如果是有规定交付日期的项目,就必须根据交付日期限定、项目需求、项目组成员的素质(体现在代码生产率)来确定项目计划。在项目计划的基础上可以作出月、周计划,计划执行时根据实际情况在不影响开发进度的前提下调整计划。18.项目管理计划分为哪些类别?粗的方面包括项目开发计划、质量计划、配置计划、测试计划。19.计划的制定过程中,需要由哪些人参与?项目经理、开发经理、质量经理和配置经理均要参与项目计划的制定。20.月度计划由哪些人参与?主要过程是什么?什么时候启动月度计划,如何确定?月度计划由项目经理、各小组负责人、质量经理、配置经理参与,主要是根据上月工作完成情况和项目总体计划来确定本月度计划。一般是在工作月的最后3天启动,目的是给大家一个熟悉和工作安排的考虑。21.怎样对计划进行跟踪?每周对计划完成情况进行审核和评估,及时进行反馈和调整。22.CASE管理在开发过程中的应用情况23.JAVA的缺陷有哪些?代码运行效率低。24.CMMⅡ的主要KPA包括哪些?包括6个关键过程域:软件配置管理、软件质量保证、软件子合同管理、软件项目跟踪和监督、软件项目策划、需求管理。25.需求管理方面需要QA做哪些工作?需求管理(RequirementManagement)的目的是在客户和将处理客户需求的软件项目之间建立对客户需求的共同理解。需求管理包括和客户一起建立和维护有关软件项目需求的协议,该协议称作“分配给软件的系统需求”,“客户”可解释为系统工程组、销售组、另一个内部组织,或者一个外部客户,“协议”既包括技术需求,又包括非技术需求(如交付日期),该协议形成估计,策划和跟踪整个软件生命周期内项目活动的基础。将系统需求分配给软件、硬件和其它系统组成部分(如人力等)的工作可能由软件工程组以外的组(如系统工程组)完成,软件工程组可能对此分配无法直接控制,在项目约束范围内,软件工程可采取适当的步骤以确保软件的需求已有相对应的定位,并且实现文档化并处于受控状态26.需求跟踪方面做哪些工作?可以跟踪到哪一步?谁来负责?27.在需
本文标题:C++面试题归纳
链接地址:https://www.777doc.com/doc-2904418 .html