D、std::vector
解答:A。auto_ptr不能被放置在容器中,因为auto_ptr仅提供delete,而非delete[],需注意其不要用来指向数组或指针。
2,完整的编译过程分为是:预处理,编译,汇编等,如下关于编译阶段的编译优化的说法中不正确的是()
A)死代码删除指的是编译过程直接抛弃掉被注释的代码;
B)函数内联可以避免函数调用中压栈和退栈的开销
C)For循环的循环控制变量通常很适合调度到寄存器访问
D)强度削弱是指执行时间较短的指令等价的替代执行时间较长的指令
解答:A。源代码删除是删除死代码,死代码是指永远不会执行到的代码,不是注释,如:if(0){...},其中,大括号中的代码是永远不会被执行的,可称之为死代码,需删除。其余选项正确。
3,简述C++和Java的区别:
(1)Java运行在虚拟机上;
(2)C++支持无符号运算,可以定义指针,Java不支持无符号运算,不能定义指针。
(3)Java有垃圾回收机制,C++没有;
(4)Java中,参数传递总是采用按值传递(参数是对象时,传递的是对象的引用),在C++中,参数传递有按值传递,指针传递,引用传递;
(5)C++允许运算符重载,而Java不允许;
(6)C++支持多重继承,Java只允许单继承。
4,软件模块架构设计应尽量遵循高内聚低耦合的设计原则,下面哪个模块设计的耦合度最高?
A. 一个模块访问另一个模块,彼此之间通过简单的数据参数访问获取。
B.一个模块直接访问另一个模块的内部数据。
C. 一组模块都访问一个公共数据环境(如全局数据结构,NAS,共享内存等等)
D. 一个模块通过传送开关、标识、名字等控制信息选择另一个模块的功能
解答:内聚就是一个模块内各个元素彼此结合的紧密程度,高内聚就是一个模块内各个元素彼此结合的紧密程度高。所谓高内聚是指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。耦合:一个软件结构内不同模块之间互连程度的度量(耦合性也叫块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差,模块间耦合的高低取决于模块间接口的复杂性,调用的方式以及传递的信息。)
对于低耦合,粗浅的理解是:一个完整的系统,模块与模块之间,尽可能的使其独立存在。也就是说,让每个模块,尽可能的独立完成某个特定的子功能。模块与模块之间的接口,尽量的少而简单。如果某两个模块间的关系比较复杂的话,最好首先考虑进一步的模块划分。
对于以上的四个选项,其耦合度由低到高排名:A->D->C->B
5,常使用硬件可靠性的定量度量方法来度量软件的可靠性和可用性,常用的度量软件的可靠性的两个指标是:MTTF和MTBF。其详细含义为:
(1)MTTF(Mean Time To Failure):平均失效时间。定义为随机变量出错时间等的期望值。
(2)MTBF(Mean Time Between Failure):平均无故障时间,是衡量一个产品,尤其是电器产品的可靠性指标。单位为“小时”。