软件测试面试-编程(电子书)

发布时间 2023-05-09 17:15:38作者: 灵笑若然

C++是面向过程也面向对象的语言,具有 预处理器、预处理器指令和宏、模板、对象、封装、继承、多态的特性。

1、C++程序的内存通常如何分配?

解答:

  • 全局数据区:通常存储全局变量、静态数据和常量
  • 代码区:所有类成员函数和非成员函数代码
  • 栈区:执行函数时分配的局部变量、函数参数、返回数据及返回地址等都是在栈区上创建的
  • 堆区:从堆区上分配的内存是在程序运行时由程序员申请的内存,在程序结时由程序员负责释放

2、请谈一下你对C++单元测试框架CppUnit的认识?

解答:CppUnit是C++单元测试框架,是个开源项目,最初版本移植自Junit,其主要功能就是对单元测试进行管理,并可以进行自动化测试。

CppUnit特点就是:

  • XML形式输出结果,可以获取附加数据以便于调试程序;
  • 类似编译器文本输出,并于IDE集成
  • 帮助宏更有利于测试套件的定义,并提供分层测试
  • 测试注册以减少重新编译的需要
  • 测试插件可以更快的编译测试
  • 可以保护封装测试的执行
  • 可支持Mfc和QT测试运行。

3、请分别详细解释C++中成员函数的重载、覆盖和隐藏的区别和联系。

解答:

重载:相同的范围;函数名相同;参数不同;virtual关键字可有可无。

覆盖:不同的范围,函数名相同;参数相同;基类函数必须有virtual关键字。

隐藏:指派生类函数屏蔽了与其同名的基类函数,如果派生类的函数和基类函数同名但参数不同,不论有没有virtual关键字,基类函数被隐藏;

如果派生类的函数和基类函数同名且参数相同,但基类函数没有virtual关键字,基类函数被隐藏。

4、谈谈对C++语言虚函数的认识,并解释纯虚函数的用途。

解答:虚函数首先是一种成员函数,可以被该类的派生类中被重新定义并被赋予另外一种处理功能。虚函数允许派生类取代基类所提供的实现,是动态确定的。

纯虚函数是一个抽象类,是不能被实例化的,用来规范派生类的行为,实际上也就是所谓的“接口”。

5、static全局变量与普通全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?

解答:static全局变量是静态存储方式,普通全局变量也是静态存储方式,主要区别就是static全局变量限制了其作用域,只在定义该变量的源文件内有效,在其他源文件不能使用。static全局变量只能初始化一次,以防止在其他文件单元中被引用。将普通局部变量改为static局部变量就是改变了存储方式,即改变了它的生存期,static局部变量只能初始化一次,下一次依据上一次的结果值。?static函数与普通函数作用域不同,?static函数只在当前源文件使用,在当前源文件说明和定义,?static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝。


 

C是面向过程的结构化语言,具有 高效、灵活、功能丰富、表达力强、移植性、兼容性、普遍性、基础性的特性。

1、使用bsearch()函数在包含300万个元素的数组中查找一个元素,最多需要进行多次比较?

解答:21。公式:log2(3000000)=21

2、如果使用下标超出了数组声明的界限,将发生什么情况?

解答:程序通过编译,甚至能够运行,但结果是不可预测,这会造成内存溢出问题。


Java是面向对象的语言。具有 面试对象技术、健壮性、多线程、安全性、分布式计算、跨平台、可移植性、动态性、高性能、解释执行、applet等一系列特点。

Java实现机制: