vc++笔试面试题

上传人:xzh****18 文档编号:42064166 上传时间:2018-05-31 格式:PDF 页数:32 大小:745.45KB
返回 下载 相关 举报
vc++笔试面试题_第1页
第1页 / 共32页
vc++笔试面试题_第2页
第2页 / 共32页
vc++笔试面试题_第3页
第3页 / 共32页
vc++笔试面试题_第4页
第4页 / 共32页
vc++笔试面试题_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《vc++笔试面试题》由会员分享,可在线阅读,更多相关《vc++笔试面试题(32页珍藏版)》请在金锄头文库上搜索。

1、VC/C+的面试题的面试题 关键词关键词: VC C+ 面试题 http:/ 1、 估计一下广州有多少理发师, 如果允许, 你还需要那些调研工作?并给出你的推导过程。你认为你的 估算结果可信吗? 2、看过那些软件方面的书籍 3、什么是软件,软件开发包括那些步骤,并说出你对这些步骤的理解 4、OSI 网络结构的七层模型分别是什么,并说出你认为划分为 7 层的理由。 5、软件过程中了解、使用过版本控制或建模工具吗?对你工作有什么帮助? 6、软件过程中你都写过什么文档?分别是什么目的及其对你的帮助? 7、我们知道,C+将内存划分为三个逻辑区域:堆、栈和静态存储,请说出它们的区别及你的理解。 8、字符

2、串 A 是由 n 个小写英文字母(a z)构成的,定义为 char An。你能用更少的空间表示这个字符串吗?请写出从 char An到你的新的储存格式的转换函数。(请用 C/C+编程,不允许上机操作) 12、对现在的 Stack(栈)数据结构进行改进,加一个 min()功能,使之能在常数,即 O(1),时间内给出栈中的最小值。可对 push()和 pop()函数进行修改,但要求其时间复杂度都只能是 O(1)。 9、C+构造函数为什么不能是虚函数? 10、C+中 virtual 与 inline 的含义分别是什么?虚函数的特点;内联函数的特点;一个函数能否即是虚函数又是内联函数? 12、请列出实

3、现 C+代码你认为需要注意的一些问题。 11、你在原来的项目中有没有遇到什么困难,又是如何解决的? 1 dll,lib 处理实现 .lib 文件中包含什么? dll 在内存中被多个函数共享,有几个拷贝? 2 template,template 等编译的时候作为几个类 3 struct ,class 的区别,联系 4 MAcro,inline 区别,实现.编译运行时 5 进程与线程区别 6 hdc-cdc 区别联系 7 model dialog,modeless dialog,从创建到销毁全过程具体描述 8 各个线程 new 的内存,别的线程是否可以使用? 9 RUNTIME_CLASS, is

4、 what? http:/ 1. 堆和栈的区别? 栈区(stack)- 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 堆区 (heap) - 一般由程序员分配释放, 若程序员不释放, 程序结束时可能由 OS 回收 。 2. 虚函数的本质和实现机制? 虚函数的本质就是通过基类访问派生类定义的函数。 虚函数只能借助于指针或者引用来达到多态的效果。 3. C+中传递函数参数的方式及他们的优缺点? 4. static 关键字的作用? 5. 引用和指针的区别? 6. 函数重载和覆盖的区别? 7. 深拷贝和浅拷贝的区别? 8. 数组 a43的内存结构?并指出

5、a23和 a32在内存中的位置? 9. 包含和私有继承的区别? 10. 实现一个操作栈的模板 (empty, push, pop, ) , 并实现错误处理 (对空栈的 pop) 11. ANSI 和 Unicode 的区别?并指出 C RunTime Library 和 Win32 API 对他们的支持。 12. 线程同步的四种方式的机制。 13. 虚拟内存。 14. DLL 的实现机制和 DLL 的输出方式。 15. D3D 的顶点着色。 16. 几种数据结构在游戏中的支持。 17. 游戏引擎 服务器程序员笔试题 C+ 1.简述堆和栈的区别。 2.简述虚函数的本质和实现机制。 3.列举 C+

6、中向函数传递参数的各种方式,并比较它们之间的区别和优缺点。 4.static 关键字有几种用途?请简述每种用途。 5.简述引用和指针的异同。 6.简述函数重载(overloading)和覆盖(overriding)的区别。 7.什么是深拷贝?什么是浅拷贝? 8.请画出二维数组 char a43的内存结构图,并指出 a32和 a23在内存中的位置。 9.简述包含和私有继承的异同。 10.用模板实现一个通用的栈,要求实现 empty, size, push, pop, top 五个成员函数,并用异常机制来报告错误(比如在一个大小为 0 的栈上执行 pop 操作)。 标准库 11.用 string

7、类编写一个程序,它从标准输入接收一行输入,然后统计出其中单词的个数,单词的分隔符只有逗号、点号和空格三种。 12.简述 STL 的容器 container、迭代器 iterator、算法 algorithm 和函数器 functor 的作用以及它们之间的关系,举例说明。 13.下面的代码存在什么问题,如何修正? list list1; for (int i = 0; i 接口继承以及纯虚函数)构成了功能复用的两种方式。 3. 多态:是将父对象设臵成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许允许将子类类型

8、的指针赋值给父类类型的指针。将子类类型的指针赋值给父类类型的指针。 18. 重载重载(overload)和重写重写(overried,有的书也叫做“覆盖”)的区别? 常考的题目。从定义上来说: 重载重载:是指允许存在多个同名函数同名函数,而这些函数的参数表不同参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。 重写重写:是指子类重新定义复类虚函数的方法。 从实现原理上来说: 重载重载:编译器根据函数不同的参数表,对同名函数的名称做修饰,然后这些同名函数就成了不同的函数(至少对于编译器来说是这样的)。如,有两个同名函数:function func(p:integer):integ

9、er;和 function func(p:string):integer;。那么编译器做过修饰后的函数名称可能是这样的:int_func、str_func。对于这两个函数的调用,在编译器间就已经确定了,是静态静态的。也就是说,它们的地址在编译期就绑定了(早绑定),它们的地址在编译期就绑定了(早绑定),因此,重重载和多态无关载和多态无关! 重写:和多态真正相关。当子类重新定义了父类的虚函数后,父类指针根据赋给它的不同的子类指针,动态的调用动态的调用属于子类的该函数,这样的函数调用在编译期间是无法确定的数调用在编译期间是无法确定的(调用的子类的虚函数的地址无法给出) 。 因此, 这样的函数地址是在

10、运行期绑定的 (晚绑定) 。这样的函数地址是在运行期绑定的 (晚绑定) 。 19. 多态的作用? 主要是两个: 1. 隐藏实现细节, 使得代码能够模块化; 扩展代码模块, 实现代码重用; 2. 接口重用:为了类在继承和派生的时候,保证使用家族中任一类的实例的某一属性时的正确,保证使用家族中任一类的实例的某一属性时的正确调用调用。 20. Ado 与 A 的相同与不同? 除了“能够让应用程序处理存储于 DBMS 中的数据“这一基本相似点外,两者没有太多共同之处。但是 Ado 使用 OLE DB 接口并基于微软的 COM 技术,而 ADO.NET 拥有自己的 ADO.NET 接口并且基于微软的.N

11、ET 体系架构。众所周知.NET 体系不同于 COM 体系,ADO.NET 接口也就完全不同于 ADO 和 OLE DB 接口,这也就是说 ADO.NET 和 ADO 是两种数据访问方式。ADO.net 提供对 XML 的支持。 21. New delete 与 malloc free 的联系与区别? 答案:都是在堆(heap)上进行动态的内存操作。用 malloc 函数需要指定内存分配的字节数并且不能初始化对象,new 会自动调用对象的构造函数。delete 会调用对象的 destructor,而 free 不会调用对象的 destructor. 22. #define DOUBLE(x)

12、x+x ,i = 5*DOUBLE(5); i 是多少? 答案:i 为 30。 23. 有哪几种情况只能用 intialization list 而不能用 assignment? 答案:当类中含有 const、reference 成员变量;基类的构造函数都需要初始化表。 24. C+是不是类型安全的? 答案: 不是。 两个不同类型的指针之间可以强制转换 (用 reinterpret cast)。 C#是类型安全的。 25. main 函数执行以前,还会执行什么代码? 答案:全局对象的构造函数会在 main 函数之前执行。 26. 描述内存分配方式以及它们的区别? 1) 从静态存储区域分配从静态

13、存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,全局变量,static static 变量变量。 2) 在栈上创建在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内臵于处理器的指令集。 3) 从堆上分配从堆上分配, 亦称动态内存分配亦称动态内存分配。 程序在运行的时候用 malloc 或 new 申请任意多少的内存,程序员自己负责在何时用 free 或 delete 释放内存。动态内存的生存期由程序员决定,使用非常灵活,但问题也最多。

14、 27.struct 和 class 的区别 答案:struct 的成员默认是公有的,而类的成员默认是私有的。struct 和 class 在其他方面是功能相当的。 从感情上讲, 大多数的开发者感到类和结构有很大的差别。 感觉上结构仅仅象一堆缺乏封装和功能的开放的内存位,而类就象活的并且可靠的社会成员,它有智能服务,有牢固的封装屏障和一个良好定义的接口。 既然大多数人都这么认为, 那么只有在你的类有很少的方法并且有公有数据(这种事情在良好设计的系统中是存在的!)时,你也许应该使用 struct 关键字,否则,你应该使用 class 关键字。 28.当一个类 A 中没有生命任何成员变量与成员函数

15、,这时 sizeof(A)的值是多少, 如果不是零,请解释一下编译器为什么没有让它为零。(Autodesk) 答案:肯定不是零。举个反例,如果是零的话,声明一个 class A10对象数组,而每一个对象占用的空间是零,这时就没办法区分 A0,A1了。 29. 在 8086 汇编下,逻辑地址和物理地址是怎样转换的?(Intel) 答案:通用寄存器给出的地址,是段内偏移地址,相应段寄存器地址*10H+通用寄存器内地址,就得到了真正要访问的地址。 30. 比较 C+中的 4 种类型转换方式? 请参考:http:/ dynamic_cast 和 reinterpret_cast 的区别和应用。 C/C+ C/C+ 笔试、面试题目大汇总31-40 bioeconomy 发表于 2006-3-22 17:49:00 31.分别写出 BOOL,int,float,指针类型的变量 a 与“零”的比较语句。 答案: BOOL : if ( !a ) or if(a) int : if ( a = 0) float : const EXPRESSION EXP = 0.000

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 试题/考题 > 高中试题/考题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号