网龙笔试题及答案_第1页
网龙笔试题及答案_第2页
网龙笔试题及答案_第3页
网龙笔试题及答案_第4页
网龙笔试题及答案_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、问答五题,程序两题,选择10来题二.题口1 .堆和我的区别与联东(C/C+的走,不是就据转构的走)1 ,找区fstack;由编泽器动分配释放,存放的效的参数值,局部变量的值等。其操作方式类仞于数据结构中的找。2,堆区(heap;一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事。区别:2 .管理方式:对于找来讲,是由嫣泽器盲动管理,无需我们手工控制;对于堆来说,释放工作由程序员控制,裒%产生存溢出。3 .空间大小:堆存几乎是没有什么限制。找一般都是有一定的空间大小。4 .碎片问题:对于堆来讲,频繁的new/delete会堂成存空间的不连续,从而受成大

2、量的碎片,使程序效率降低。对于找来讲,则不会存在这个问题。5 .分配方式:堆都是动态分配的,没有的去分配的堆。找有2种分配方式:龄态分配动态分配。6 .分配效率:找的效率比较高。堆的效率比栈要低得多。见:hi.baidu./sige_online/blog/item/f06097ecb006bb3f2797918b.html2 .重栽和覆里的区别与联东重我是指不同的函数使用相同的函数名,但函数的参数个数或类型不通。调用的使用根据困数的参数来区别不同的乱数。覆盖是指跟生类中重新对象类的虚乱救重新实现。即乱数名和参数都一样,只是函数的实现体不一样。3 .什么是多重继豕,好处及缺点多重继承指的是一个

3、类别可以同时从多于一个父类继承行为与特征的功能。优点:可以使用多重继承病写非常复杂、但很紧深的代码,如C+ATL4o缺点:出现二义性、虚函数、访问权限等问题,家多产生混淆。4 .做过什么项目.遇到什么问题(不写似乎没*)next!=null)/list链表的元豪超过一个q=q-next;/q指向第二个元素p-next=q-next;/p-next指劫第三个元素deleteq;释放链表的第二个元素史间)7 .写一个程序,堆可以访问,我不可以访问。写一个程序,我可以访问,堆不可以访问。堆可以访问,找不可以访问把构造函敷设%privateclassheapprivate:he叩0coutvv”堆可以

4、访问,找不可以访问”vvendl;)heap0(;找可以访问,堆不可以访问杷new4殳为privatestructDATA(inta,charb);classstackpublic:stack()coutvv”找可以访问,堆不可以访问”vvendl;)-stack0(private:DATAdata=newDATA;8 .为一个程序,把两个字符幸,本旭来#include#include#defineN100voidmain()charaN;charbN;charc2*N;inti;cina;cinb;intlengthlJength2;length!=strlen(a);Iength2=str

5、len(b);for(i=0;ilengthl;i+)ci=ai;)for(i=lengthl;iIengthl+length2;i+)ci=bi-lengthl;)clength1+length2=0;coutcendl;)9 .4已写一个程序,与str类的土篇,add和delete还有#include#includeclassstr(public:str()Ostr(charsource)ch=newcharstHen(source)+1;初始化字符串数组$trcpy(ch,source);(*(ch+strlen($ource)+1)=0,;)friendstroperator+($tr

6、&d,str&c2);+号即add重我friendstroperator-(str&d,str&c2);-号即delete重我boolstroperator=(str&d,str&c2);=判等,重我两个字符串粕等返回true,否则返回falsechar虫ch;stroperator+(str&cl,str&c2)杷c2接到cl后returnstr(strcat(cl.ch,c2.ch);)stroperator-(str&d,str&c2)return0;)booloperator=(str&c1,str&c2)inti=0;i=strcmp(d.ch,c2.ch);比较两个申if(i=0)

7、returntrue;相等返回trueelsereturnfalse;不等返回false)10,网络的三次援手,过程在TCP/IP法议中,TCP协议提供可靠的连接服务,象用三次握手建立一个连接。第一次握手:延立连接时,2户端发送syn包(syn=j)到服务器,并我人SYN_SEND状态,等待服务器确认;第二次握手:服务器收到syn包,必须确认农户的SYN(ack=j+1;,同时己也发送一个SYN包fsyn=k),即SYN+ACK包,此时服务器战人SYN_RECV衣忠;第三次握手:农户端收到服务器的SYN+ACK包,曲服务器发送确认包ACK(ack=k+l),此包发送免华,凛户瑞科服务器进入ES

8、TABLISHED状杰,完成三次握手。完成三次握孑,家户端与服务器开始传送数据1L计算机掾作东统同步的几种机制,特点1Jsleep与wakeup同步机制。叱程可由于多种原因使自己叱人臊眠状态。2)信号机制。作为统一用户的诸进程之间通信的简单工具。3)管道机制。能够连接一个写战程科一个读进程,并允许他们从生产者-威秀者方式进行通信的一个共享文件。4)话息机制。允许一个战程发送访息给其他进程。5J共享存错区机制。能使若干战程共享主存中的某个区城。6)信号量集机制。信号量集有若干个信号量,对这组信号量掾作是原子性的。12 .STL的代玛从广义上耕分为三类:algorithm(算法人container

9、()和iterator(透代卓人各有的作用和之间的关东家器:是一个保存其他对象的对象,可以存放任何类型的对象,是对数据结构的一种抽象,以类模板的方式实现而成的。算法:算出作用于农器。算法定义了对家爆家遂行操作的方决,算法是对热救的一种抽象,象用乱数模板实现。迭代器是类极指骨的对象,STL算法利用它们对存储在农器中的对象序列进行遍历O迭代器提供了一种使家器与算法协同工作的机制。一个家器可以生成一对迭代器来制定一个元素条列,而算法则是对该系列叱行操作。采用这种方式,家器和算唉可以紧欢地怀作,同时还可以保椅彼此“不知情”。13 .什么是今忐?如何实现5点,有几种方法2多杰是具有表现多种形杰的能力的特

10、征,在。中是指,语言具有根据对象的类型以不同方式处理。实现方法:1)通过一个指向基类的指骨明用虚成员乱救的时候,运行时余统将能够根据指针所指的实际对象调用恰当的成员函数实现2)基于绝对0置的定0技术两个实观方法具体看dev.yesky./l89/2385189.shtml三、选择题选择题能想起来的就这些了,还有几题是多项题1 .chara=256;intb=a+1;coutbb;)structcomparerbooloperator()(inta,intb)constreturnab:):voidmain()std:vectorvec.vec2;$td:sort(vec.begin(),vec

11、.end。,compare):$td:sort(vec2.begin0.vec2.end().comparer。);)仿法敦(functor)之所以秣为仿法数,是因为这是一种利用*些类对象文抄operator。的时性,来达到模拟法教调用效果的技术。如果这里vec,vec2这两个vector的我一样,那么从执行结果而,使用回调法效compare与使用仿法数comparer是一样的。那么,我们应该用回调,还是用仿国教?很多人都说用仿法敷吧,回调法数是丑陋的,代吗不太象C+风格。但其实问题的本质不是在代吗风格上,仿防致与回调法致各有利弊,不能一概而论。仿法教(functor)的优A我的建汉是,如果可

12、以用仿法致实现,那色你应该用仿法效,而不要用回调。原因在于:仿法教可以不带疲逮地传是上下文参效。而回调技术通布使用一个额外的void参数传是。这也是多敷人认为回明技术丑陋的原因。更好的性能。仿法教技术可以技得更好的性能,这点直见来讲比较睢以理解。你可能说,回调函敷中期为inline了,怎Q会性能比仿困数差?我们这里来分析下。我们假设祟个法敷func(钿如上面的std:sort)调用中传遂了一个回调的数(如上面的compare;,那么可以分为两种情况:func是麻法效,并且比较简单,func调用版终极展开了,那么其中对回调法教的叫用也成为一普通防致明用1而不是通过防救扑针的网接明用人并JL如果这

13、个回调函效如果简单,那么也可铭同时板展开。在这种精形下,回明法数与仿法数性能相同。func是非联晶效,或者比较复杂而无法展开(例如上面的$td:sortF我们知道它是快速排序,於戴西丹存在遂归而无法展开人此对回调法数作为一个法致折针传入,其代塔亦无决泉开。而仿法敷网不同。虽然func本身复杂不能展开,但是func.羽致中对仿法教的调用是螭泽器螭泽期网就可以碗走并进行inline展开的。因此在这种侍形下,仿函数比之于回调法效,有着更好的性能。并且,这种性能优务有时是一种无可比拟的优务(对于std::5ort就是如此,西为元去比较的次致非市巨大,是否可以进行球展开导改了一种台明效应八仿法教(fun

14、ctor)不能做的?话又说回来了,仿函数并不能先金取代回调函数所有的应用场合。例如,我在std:AutoFreeAlloc中使用了回调的数,而不是仿的效,这是因为AutoFreeAlloc要家纳异质的析构法数,而不是只支持条一种类的析构。透和模板template)不能处理在同一个我器中文挣异质类型,是一个治理。养数对象的好处:1 .它重莪了乱救明用操作符,可以以普通乱救明用的语法明用。2 .它跟生于标准的binary_function基类,允许其他部分的STL实现询问函数对象焉译期问题。3 .这个的教没有数据成员,没有虚法效,没有显示声明的构造的救和析构函数,且对operator()的实现是联

15、的。调用一个成员函数时陟及三个步骤:1. 焉牛春杳找函数的名字。2. 从可用候选者中选择最佳匹配乱救;3. 检杳是否具有访问该n配乱救的权限。访问修饰件可以用于表达和执行高级约束技术,指明一个类可以次怎样使用。这些技术中录常见的一种是不接受对象的复制操纵,这是通过将其复制操作声明为private同时不为之提供定义而做到的。构造困数被声明为更保护的,是为了允许派生类的构造函数使用它们,同时阻止创立独立的对象。指明对象不应该被分配到堆上的方式之一,是将其对存分配定义务不合法,例如:protected:voidoperatornew(size_tjreturn0;当蚁励而非阻止使用堆分配时只需将析构函数声明为private即可。当对象的名字需开其使用作用战时,任何一个声明自动或伸态对象的变武都将会导玫一个隐式的析构函数调用。Placementnew是乱数operatornew的一个版本,它并不实际分配任何存储区,仅仅返回一个指右已经分配好无间的指针,所以不要对其叱行delete操纵作。但是确实钊造了对象,凝免使用delete操作符,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论