公司应聘面试笔试题汇总.docVIP

  • 12
  • 0
  • 约10.49万字
  • 约 208页
  • 2017-11-26 发布于江西
  • 举报
公司应聘面试笔试题汇总

C++ 1. 简述堆和栈的区别。 c++程序的内存格局通常分为4个区: 1)全局数据区(data area):用来存放全局变量,静态数据,常量 2)代码区(code area):用来存放成员函数,其他函数代码 3)栈区(stack)(又称局部变量区):用来存放局部变量,函数参数,返回数据和返回地址 4)堆区(heap area):该区是自由存储区 2. 简述虚函数的本质和实现机制。 虚函数是在基类中冠以关键字virtual的成员函数,它提供了一种接口。虚函数可以在一个或多个 派生类中被重定义 3. 列举C++中向函数传递参数的各种方式,并比较它们之间的区别和优缺点。 分为:1)按值传递(将实参的值直接复制到参数的存储单元中,函数体对这些存储单元进行读写操作。函数结束后,分配给参数的存储单元被释放,因此函数体对这些参数的任何修改都不会影响实参本 身), 2) 按地址传递:[1] 指针参数传递(将函数的形参定义为指针,在函数调用时传递的是实参的地址,函数体就可以根据该地址对实参的本身进行操作,从而改变实参的值), [2] 引用参数传递(由于引用只是某个变量或对象的别名,函数被调用时,系统不会复制实参,而是将形参绑定在实参上,直接对实参进行操作), [3] 数组参数传递(向函数传递的是第一个元素的地址,即数组的首地址) 4. static关键字有几种用途?请简述每种用途。 根据存储方式的不同,可以将局部变量分为:自动变量(auto),寄存器变量(register),局部静态变量(static)。auto通常省略,寄存器变量的访问的速度比较快,通常用于频繁使用的变量。 static的用途:1)实现多个对象之间的数据共享 。使用静态数据成员还不会破坏隐藏的原则,即保证了安全性。 2)可以节省内存。因为它是所有对象所公有的,因此,对多个对象来说,静态数据成员只存储一处,供所有对象共用。 5. 简述引用和指针的异同。 6. 简述函数重载(overloading)和覆盖(overriding)的区别。 在同一可访问区内被声名的几个具有不同参数列的(参数的类型、个数、顺序不同)同名函数,程序会根据不同的参数列来确定具体调用哪个函数,这种机制叫重载,重载不关心函数的返回值类型。 覆盖是指派生类中存在重新定义的函数,其函数名、参数列、返回值类型必须同父类中的相对应被覆盖的函数严格一致,覆盖函数和被覆盖函数只有函数体(花括号中的部分)不同,当派生类对象调用子类中该同名函数时会自动调用子类中的覆盖版本,而不是父类中的被覆盖函数版本,这种机制就叫做覆盖。 7. 什么是深拷贝?什么是浅拷贝? 用一个对象的内容初始化另一个同类对象,也称为缺省的按成员拷贝,不是对整个类对象的按位拷贝。这种拷贝称为浅拷贝。 8. 请画出二维数组char a[4][3]的内存结构图,并指出a[3][2]和a[2][3]在内存中的位置。 9. 简述包含和私有继承的异同。 10. 用模板实现一个通用的栈,要求实现empty, size, push, pop, top五个成员函数,并用异常机制来报告错误(比如在一个大小为0的栈上执行pop操作)。 #includeiostream.h #includestring using namespace std templateclass T class stack { public: int size; T *base; T *top; empty() {} size() {} Push() {} pop() {} top() {} private: int st[100]; } main() 标准库 11. 用string类编写一个程序,它从标准输入接收一行输入,然后统计出其中单词的个数,单词的分隔符只有逗号、点号和空格三种。 12. 简述STL的容器container、迭代器iterator、算法algorithm和函数器functor的作用以及它们之间的关系,举例说明。 13. 下面的代码存在什么问题,如何修正? listint list1; for (int i = 0; i 8; i ++) { list

文档评论(0)

1亿VIP精品文档

相关文档