<script type="text/javascript"> </script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script> name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-0384259630004389&dt=1207487456187&lmt=1160650322&format=728x90_as&output=html&correlator=1207487455765&url=http%3A%2F%2Fwww.pghome.net%2Fart%2Fart_177.html&ad_type=text_image&ref=http%3A%2F%2Fwww.google.cn%2Fsearch%3Fhl%3Dzh-CN%26q%3DCDC%25E5%25AF%25B9%25E8%25B1%25A1%25E8%2583%25BD%25E5%2590%25A6%25E5%25AE%259A%25E4%25B9%2589%25E4%25B8%25BA%25E4%25B8%2580%25E4%25B8%25AA%25E6%2588%2590%25E5%2591%2598%25E5%258F%2598%25E9%2587%258F%26meta%3D%26aq%3Df&frm=0&cc=99&ga_vid=443210069.1207487456&ga_sid=1207487456&ga_hid=1523102858&flash=9.0.115.0&u_h=600&u_w=800&u_ah=572&u_aw=800&u_cd=32&u_tz=480&u_his=2&u_java=true" frameborder="0" width="728" scrolling="no" height="90" allowtransparency="allowtransparency"> |
1、估计一下广州有多少理发师,如果允许,你还需要那些调研工作?并给出你的推导过程。你认为你的 估算结果可信吗? 2、看过那些软件方面的书籍 3、什么是软件,软件开发包括那些步骤,并说出你对这些步骤的理解 4、OSI网络结构的七层模型分别是什么,并说出你认为划分为7层的理由。 5、软件过程中了解、使用过版本控制或建模工具吗?对你工作有什么帮助? 6、软件过程中你都写过什么文档?分别是什么目的及其对你的帮助? 7、我们知道,C++将内存划分为三个逻辑区域:堆、栈和静态存储,请说出它们的区别及你的理解。 8、字符串A是由n个小写英文字母(a ~ z)构成的,定义为char A[n]。你能用更少的空间表示这个字符串吗?请写出从char A[n]到你的新的储存格式的转换函数。(请用C/C++编程,不允许上机操作) 12、对现在的Stack(栈)数据结构进行改进,加一个min()功能,使之能在常数,即O(1),时间内给出栈中的最小值。可对push()和pop()函数进行修改,但要求其时间复杂度都只能是O(1)。 9、C++构造函数为什么不能是虚函数? 10、C++中virtual与inline的含义分别是什么?虚函数的特点;内联函数的特点;一个函数能否即是虚函数又是内联函数? 12、请列出实现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 what?? http://www.sinoprise.com/simple/index.php?t32.html 1. 堆和栈的区别? 栈区(stack)- 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 堆区(heap) - 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。 2. 虚函数的本质和实现机制? 虚函数的本质就是通过基类访问派生类定义的函数。虚函数只能借助于指针或者引用来达到多态的效果。 3. C++中传递函数参数的方式及他们的优缺点? 4. static关键字的作用? 5. 引用和指针的区别? 6. 函数重载和覆盖的区别? 7. 深拷贝和浅拷贝的区别? 8. 数组a[4][3]的内存结构?并指出a[2][3]和a[3][2]在内存中的位置? 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++中向函数传递参数的各种方式,并比较它们之间的区别和优缺点。 4.static关键字有几种用途?请简述每种用途。 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操作)。 标准库 11.用string类编写一个程序,它从标准输入接收一行输入,然后统计出其中单词的个数,单词的分隔符只有逗号、点号和空格三种。 12.简述STL的容器container、迭代器iterator、算法algorithm和函数器functor的作用以及它们之间的关系,举例说明。 13.下面的代码存在什么问题,如何修正? list list1; for (int i = 0; i < 8; i ++) { list1.push_back(i); } for (list::iterator it = list1.begin(); it != list1.end(); ++it) { if (*it % 2 == 0) { list1.erase(it); } } Win32 14.比较ANSI和Unicode的区别,并说明C Runtime Library和Win32 API如何支持二者。 15.简述线程同步的四种机制。 16.简述虚拟内存机制,并描述在win95和winnt下内存空间的结构。 17.简述DLL的实现机制以及输出DLL中函数的两种方法。 网络 18.简述TCP和UDP之间的区别。 19.简述Winsock的六种主要IO处理模式。 20.描述一个你以前实现过的服务器的结构图,并分析其中可能存在的瓶颈。 16. 关联、聚合(Aggregation)以及组合(Composition)的区别? 涉及到UML中的一些概念:关联是表示两个类的一般性联系,比如“学生”和“老师”就是一种关联关系;聚合表示has-a的关系,是一种相对松散的关系,聚合类不需要对被聚合类负责,如下图所示,用空的菱形表示聚合关系: 从实现的角度讲,聚合可以表示为: class A {...} class B { A* a; .....} 而组合表示contains-a的关系,关联性强于聚合:组合类与被组合类有相同的生命周期,组合类要对被组合类负责,采用实心的菱形表示组合关系: 实现的形式是: class A{...} class B{ A a; ...} 参考文章:http://www.cnitblog.com/Lily/archive/2006/02/23/6860.html http://www.vckbase.com/document/viewdoc/?id=422 17.面向对象的三个基本特征,并简单叙述之? 1. 封装:将客观事物抽象成类,每个类对自身的数据和方法实行protection(private, protected,public) 2. 继承:广义的继承有三种实现形式:实现继承(指使用基类的属性和方法而无需额外编码的能力)、可视继承(子窗体使用父窗体的外观和实现代码)、接口继承(仅使用属性和方法,实现滞后到子类实现)。前两种(类继承)和后一种(对象组合=>接口继承以及纯虚函数)构成了功能复用的两种方式。 3. 多态:是将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。 18. 重载(overload)和重写(overried,有的书也叫做“覆盖”)的区别? 常考的题目。从定义上来说: 重载:是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。 重写:是指子类重新定义复类虚函数的方法。 从实现原理上来说: 重载:编译器根据函数不同的参数表,对同名函数的名称做修饰,然后这些同名函数就成了不同的函数(至少对于编译器来说是这样的)。如,有两个同名函数:function func(p:integer):integer;和function func(p:string):integer;。那么编译器做过修饰后的函数名称可能是这样的:int_func、str_func。对于这两个函数的调用,在编译器间就已经确定了,是静态的。也就是说,它们的地址在编译期就绑定了(早绑定),因此,重载和多态无关! 重写:和多态真正相关。当子类重新定义了父类的虚函数后,父类指针根据赋给它的不同的子类指针,动态的调用属于子类的该函数,这样的函数调用在编译期间是无法确定的(调用的子类的虚函数的地址无法给出)。因此,这样的函数地址是在运行期绑定的(晚绑定)。 19. 多态的作用? 主要是两个:1. 隐藏实现细节,使得代码能够模块化;扩展代码模块,实现代码重用;2. 接口重用:为了类在继承和派生的时候,保证使用家族中任一类的实例的某一属性时的正确调用。 20. Ado与Ado.net的相同与不同? 除了“能够让应用程序处理存储于DBMS 中的数据“这一基本相似点外,两者没有太多共同之处。但是Ado使用OLE DB 接口并基于微软的COM 技术,而ADO.NET 拥有自己的ADO.NET 接口并且基于微软的.NET 体系架构。众所周知.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) 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) 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static 变量。 2) 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集。 3) 从堆上分配,亦称动态内存分配。程序在运行的时候用malloc 或new 申请任意多少的内存,程序员自己负责在何时用free 或delete 释放内存。动态内存的生存期由程序员决定,使用非常灵活,但问题也最多。 27.struct 和 class 的区别 答案:struct 的成员默认是公有的,而类的成员默认是私有的。struct 和 class 在其他方面是功能相当的。 从感情上讲,大多数的开发者感到类和结构有很大的差别。感觉上结构仅仅象一堆缺乏封装和功能的开放的内存位,而类就象活的并且可靠的社会成员,它有智能服务,有牢固的封装屏障和一个良好定义的接口。既然大多数人都这么认为,那么只有在你的类有很少的方法并且有公有数据(这种事情在良好设计的系统中是存在的!)时,你也许应该使用 struct 关键字,否则,你应该使用 class 关键字。 28.当一个类A 中没有生命任何成员变量与成员函数,这时sizeof(A)的值是多少,如果不是零,请解释一下编译器为什么没有让它为零。(Autodesk) 答案:肯定不是零。举个反例,如果是零的话,声明一个class A[10]对象数组,而每一个对象占用的空间是零,这时就没办法区分A[0],A[1]…了。 29. 在8086 汇编下,逻辑地址和物理地址是怎样转换的?(Intel) 答案:通用寄存器给出的地址,是段内偏移地址,相应段寄存器地址*10H+通用寄存器内地址,就得到了真正要访问的地址。 30. 比较C++中的4种类型转换方式? |