IT面试笔试题全集C篇史上最全Rain系列

上传人:仙*** 文档编号:68470408 上传时间:2022-04-02 格式:DOC 页数:276 大小:483KB
收藏 版权申诉 举报 下载
IT面试笔试题全集C篇史上最全Rain系列_第1页
第1页 / 共276页
IT面试笔试题全集C篇史上最全Rain系列_第2页
第2页 / 共276页
IT面试笔试题全集C篇史上最全Rain系列_第3页
第3页 / 共276页
资源描述:

《IT面试笔试题全集C篇史上最全Rain系列》由会员分享,可在线阅读,更多相关《IT面试笔试题全集C篇史上最全Rain系列(276页珍藏版)》请在装配图网上搜索。

1、IT面试笔试题全集_史上最全_C+篇_Rain系列南京TQ公司面试题_追雨制作 1、 简单描述包和dll异同答:DLL(动态链接库)是经过编译的代码模块,它和可执行文件共同工作,为应用程序提供功能。程序包是用于C+Builder应用程序、IDE或是二者同时使用的特殊DLL。有两种程序包:运行时程序包和设计时程序包。运行时程序包提供程序执行时的功能,设计时程序包扩展了IDE的功能。何时使用程序包和DLL对于大多数C+Builder应用程序,程序包提供了更大的灵活性,也比DLL更容易创建。然而,在几种情况下,DLL比程序包更适合工程的需要: 程序代码模块从非C+Builder应用程序调用。 要扩充

2、Web服务器的功能。 要创建给第三方开发人员使用的代码模块。 工程是OLE容器。2、 简述parent和owner的区别答:Parent属性是指构件的包容器,构件只能在此范围内显示和移动。举例子如下:(1)在Form1的窗体上,放一个Panel1,并将Panel1拉大,(2)在Panel1上放一Button1;(3)在Form1上放一Button2。现在如果移动Panel1,则Button1随着Panel1移动,这是因为Button1的Parent是Panel1。现在将Button2移到Panel1上,再次移动Panel1,Button2并不跟着移动,这是因为Button2的Parent是Fo

3、rm1。除在窗体设计中,应注意构件的Parent是谁外,在动态创建构件时,也应指出构件的Parent,如在上例中继续操作:1)Procedure Tform1.Button2click(Sender:Tobjet);2)Var3) Button:Tbutton;4) Begin5) Button:Tbutton.cerate(self);6) Button.parent=panel1;7) Button.lleft=0;8) Button.top=0;9) Button.caption:=#8217;OK#8217;10) End;当按Button2时,将在Panel1上创建一个Button,

4、而如果把第6句改为Button.parent:=self;按Button2时,将在Form1上创建一个Button了。如果将第6句删除,按Button2时,什么都不会发生,这是因为创建方法无法知道应在哪里显示构件。Owner属性是指构件的所有者,它负责构件的创建和释放。如在上例中,系统默认窗体上所有构件的所有者是窗体,而窗体的所有者是Application。顺便指出,create方法应带有表示构件所有者的参数,如在上例中,构件所有者是窗体,即self。Parent属性和Owner属性是运行阶段的属性,只能在运行阶段,通过代码设置。3、 简述delphi是如何封装windows消息机制答:Del

5、phi的消息处理流程TApplication.OnMessage只在应用程序的消息队列接收到一个消息时才被触发。一般应用程序接收到的消息是与窗口管理有关的消息(例如WM_PAINT和WM_SIZE),或由PostMessage()、PostAppMessage()或BroadcastSystemMessage()等API函数发送出的消息。但是,由于Windows或SendMessage()有可能会绕过消息队列直接将消息发送给窗口过程。当发生这种情况时,TApplication.OnMessage就不会被触发。VCL的消息系统:VCL定义了消息分发系统,该系统将所有的Windows消息传给相应的

6、对象,由各对象的消息分发系统进行处理。VCL对象用于接受消息的方法叫做MainWndProc()。通过MainWndPorc()可以对消息进行任何的处理。不过,一般情况下很少直接调用MainWndProc()来处理消息,除非不想让消息通过VCL的消息系统分发。从MainWndProc()反回后,消息被传递给对象的WndProc()的方法,这就是该对象的窗体过程,然后进入VCL的分发机构。分发机构使用Disptch()方法把消息分发给一个消息句柄。消息到达该消息的处理句柄(Handler)后,经过该句柄的处理,这个消息处理过程就结束了。事件MainWndProcWndProc-Dispatch-

7、Handle4、 简单介绍一下delphi模式下三层开发答:Remote Data Module服务器数据库Query组件DataSetProvider组件客户端应用程序DCOM组件ClientDataSet组件它不通过DataSetProvider组件来传递数据,而是通过Remote Data Module服务器所提供的Interface来进行数据的传递。这样就使得应用程序完全与数据库服务器没有任何关系,对整个系统的升级与维护都带来极大的好处。对于集合数据,由于Interface的返回值可以是OLEVarient类型,因此我们可以创建ClientDataSet来进行集合数据的传递。5、 谈一

8、谈你对vcl framework的理解答:VCL Framework实现了Windows消息机制的完美封装。Dispatch分发消息分为两种情形:1.消息被dispatch在虚拟方发表中找到并调用;2.如果找不到的话,就调用TObject的defaultHandle虚拟方法,当然也可以改写这个默认调用方法,因为它声明的时候是Virtual的。6、 简单谈一下你对delphi接口机制的理解答:1) 不接口的引用计数管理接口指针总是被初始化为 nil接口指针赋值为对象接口指针赋值为接口指针接口引用计数使用规则小结2) 接口对象的编译器实现接口对象的内存空间接口跳转表对象内存空间中接口跳转指针的初始

9、化3) implements 的实现以接口成员变量实现 implements以对象成员变量实现 implements7、 ASP的几大内置对象。答:内置对象:Session,Server,Response,Request,ObjectContent,Application8、 谈谈你以前所做项目对文件和图片的上传和显示所用的方法。答:上传控件9、 谈你对ASP的理解。答:不会,没理解10、 web开发客户端程序和服务器端程序的区别答:只需要开发服务器端啊,客户端只要有个浏览器就行了 C/C+笔试题_追雨制作 C/C+:1C与C+的异同,优劣;2C,C+,VC,BC,TC的区别;3C+中ycat

10、ch关键字的用法与优点;4枚举的用法,以及它与宏的区别;5const的用法,以及声明const变量与宏的区别;const的用法有四种:区别:const常量有数据类型, 而宏常量没有数据类型。编译器可以对前者进行类型安全检查,而对后者只能进行字符替换,没有类型安全检查。而且字符替换可能会带来料想不到的边界效应。有些集成化工具可以对const常量进行调试, 但不能对宏量进行调试。6C+中引用与指针的区别;答:1 引用实际上是所引用的对象或变量的别名,而指针是包含所指向对象或变量的地址的变量。2 引用在定义时必须初始化,而指针在定义时不初始化。3 不可以有努NULL的引用,而可以有指向NULL的指针

11、。4 引用在初始化后不可以改变引用关系,而指针可以随时指向其他对象(非const指针)。7C+中virtual与inline的含义分别是什么?答:在基类成员函数的声明前加上virtual关键字,意味着将该成员函数声明为虚函数。inline与函数的定义体放在一起,使该函数称为内联。inline是一种用于实现的关键字,而不是用于声明的关键字。虚函数的特点;如果希望派生类能够重新定义基类的方法,则在基类中将该方法定义为虚方法,这样可以启用动态联编。内联函数的特点;使用内联函数的目的是为了提高函数的运行效率。内联函数体的代码不能过长,因为内联函数省去调用函数的时间是以代码膨胀为代价的。内联函数不能包含

12、循环语句,因为执行循环语句要比调用函数的开销大。一个函数能否即是虚函数又是内联函数?8以下关键字的含义与用法:extern,extern “C”,static,explicit,register,#undef,#ifndef9什么是函数重载与覆盖?为什么C不支持函数重载?为什么C+能支持函数重载?10VC中,编译工具条内的Debug与Release选项是什么含义?11编写my_memcpy函数,实现与库函数memcpy类似的功能,不能使用任何库函数;void* mymemcpy(void* pvTo, const char* pvFrom, size_t size)assert(dest !=

13、 NULL) amp;amp; (src != NULL);byte* psTo = (byte*)pvTo;byte* psFrom = (byte*)pvFrom;while (size 0)*psTo+ = *psFrom+;return pvTo;12编写my_scpy函数,实现与库函数scpy类似的功能,不能使用任何库函数;答:char* my_scpy(char* sdest, const char* ssrc)assert(sdest != NULL) amp;amp; (ssrc != NULL)char* address = sdest;while(*sdest+ = *ss

14、rc+) != NULL)return address;13编写gbk_slen函数,计算含有汉字的字符串的长度,汉字作为一个字符处理;已知:汉字编码为双字节,其中首字节0,尾字节在063以外;(如果一个字节是-128127)14函数assert的用法?答:断言assert是仅在debug版本起作用的宏,用于检查“不应该“发生的情况。程序员可以把assert看成一个在任何系统状态下都可以安全使用的无害测试手段。15为什么在头文件的最前面都会看到这样的代码:#ifndef _STDIO_H_#define _STDIO_H_16为什么数组名作为参数,会改变数组的内容,而其它类型如int却不会改变

15、变量的值?答:当数组名作为参数时,传递的实际上是地址。而其他类型如int作为参数时,由于函数参数值实质上是实参的一份拷贝,被调函数内部对形参的改变并不影响实参的值。1实现双向链表删除一个节点P,在节点P后插入一个节点,写出这两个函数。2写一个函数,将其中的t都转换成4个空格。3Windows程序的入口是哪里?写出Windows消息机制的流程。4如何定义和实现一个类的成员函数为回调函数?5C+里面是不是所有的动作都是main()引起的?如果不是,请举例。6C+里面如何声明const void f(void)函数为C程序中的库函数?7下列哪两个是等同的int b;A const int* a =

16、amp;b;B const* int a = amp;b;C const int* const a = amp;b;D int const* const a = amp;b;8内联函数在编译时是否做参数类型检查?void g(base amp; b)b.play;void main()son s;g(s);return;3、WinMainwhile( (bRet = GetMessage( amp;msg, NULL, 0, 0 ) != 0)if (bRet = -1)/ handle the error and possibly exitelseTranslateMessage(amp;m

17、sg);DispatchMessage(amp;msg);MSRA Interview Written Exam(December 2003,Time:2.5 Hours)1写出下列算法的时间复杂度。(1)冒泡排序;(2)选择排序;(3)插入排序;(4)快速排序;(5)堆排序;(6)归并排序;2写出下列程序在X86上的运行结果。suct mybitfieldsunsigned short a : 4;unsigned short b : 5;unsigned short c : 7;testvoid main(void)int i;test.a=2;test.b=3;test.c=0;i=*(

18、short *)amp;test);printf(%dn,i);3写出下列程序的运行结果。unsigned int i=3;couti * -1;4写出下列程序所有可能的运行结果。int a;int b;int c;void F1()b=a*2;a=b;void F2()c=a+1;a=c;main()a=5;/Start F1,F2 in parallelF1(); F2();printf(a=%dn,a); C+算法面试题_追雨制作 算法:1什么是NPC,NP-Hard?2起泡排序的时间复杂度是多少?说出至少一个比它更快的算法;排序的极限时间复杂度是多少?3有一个链表,如何判断它是一个循环

19、链表?如果链表是单向的呢?如果出现循环的点可能在任意位置呢?如果缓存空间是有限的,比如是一个常数呢?如果只能使用2个缓存呢?4有一个文件,保存了若干个整数,如何以平均的概率随机得到其中的一个整数?如果整数的个数是未知的呢?如果整数是以字符串形式存放,如:(即如何得到随机的一个字符串)123-456如果只允许便历文件一次呢?5用两组数据,都在内存中,对它们排序分别需要1和2分钟;那么使用两个线程一起排序,大概需要多少时间? 上海贝尔的面试题43分即可进入复试_追雨制作 一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分)提示:这里“零值”可以是0, 0.0 ,

20、 FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为:if ( n = 0 )if ( n != 0 )以此类推。请写出 BOOL flag 与“零值”比较的 if 语句:请写出 float x 与“零值”比较的 if 语句:请写出 char *p 与“零值”比较的 if 语句:二、以下为Windows NT下的32位C+程序,请计算sizeof的值(10分)char s = “Hello” ;char *p = s ;int n = 10;请计算sizeof (s ) =sizeof ( p ) =sizeof ( n ) =void Func ( char s

21、100)请计算sizeof( s ) =void *p = malloc( 100 );请计算sizeof ( p ) =、简答题(25分)1、头文件中的 ifndef/define/endif 干什么用?2、i nclude 和 i nclude “filename.h” 有什么区别?3、const 有什么用途?(请至少说明两种)4、在C+ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?5、请简述以下两个for循环的优缺点/ 第一个for (i=0; iN; i+)if (condition)DoSomething();elseDoOtherthing();/ 第

22、二个if (condition)for (i=0; iN; i+)DoSomething();elsefor (i=0; iN; i+)DoOtherthing();优点:N次中,每次都要对condition进行判断缺点: 优点:一次判断condition后,对something或Otherthing执行N次缺点:四、有关内存的思考题(20分)void GetMemory(char *p)p = (char *)malloc(100);void Test(void)char *s = NULL;GetMemory(s);scpy(s, #8220;hello world);printf(s);

23、请问运行Test函数会有什么样的结果?char *GetMemory(void)char p = #8220;hello world;return p;void Test(void)char *s = NULL;s = GetMemory();printf(s);请问运行Test函数会有什么样的结果?Void GetMemory2(char *p, int num)*p = (char *)malloc(num);void Test(void)char *s = NULL;GetMemory(amp;s, 100);scpy(s, #8220;hello);printf(s);请问运行Test

24、函数会有什么样的结果?void Test(void)char *s = (char *) malloc(100);scpy(s, “hello”);free(s);if(s != NULL)scpy(s, “world”);printf(s);请问运行Test函数会有什么样的结果?五、编写scpy函数(10分)已知scpy函数的原型是char *scpy(char *sDest, const char *sSrc);其中sDest是目的字符串,sSrc是源字符串。(1)不调用C+/C的字符串库函数,请编写函数 scpychar *scpy(char *sDest,const char *sSr

25、c)int n=0;while(sSrcn!=NULL)n+:*srtDest=new charn;for(int i=0;i= EPSINON) amp;amp; (x =”或“=”此类形式。如下是错误的写法,不得分。if (x = 0.0)if (x != 0.0)请写出 char *p 与“零值”比较的 if 语句。(3分)标准答案:if (p = NULL)if (p != NULL)如下写法均属不良风格,不得分。if (p = 0)if (p != 0)if (p)if (!)二、以下为Windows NT下的32位C+程序,请计算sizeof的值(10分)char s = “Hel

26、lo” ;char *p = s ;int n = 10;请计算sizeof (s ) = 6 (2分)sizeof ( p ) = 4 (2分)sizeof ( n ) = 4 (2分)void Func ( char s100)请计算sizeof( s ) = 4 (2分)void *p = malloc( 100 );请计算sizeof ( p ) = 4 (2分)三、简答题(25分)1、头文件中的 ifndef/define/endif 干什么用?(5分)答:防止该头文件被重复引用。2、i nclude 和 i nclude “filename.h” 有什么区别?(5分)答:对于i n

27、clude ,编译器从标准库路径开始搜索 filename.h对于i nclude “filename.h” ,编译器从用户的工作路径开始搜索 filename.h3、const 有什么用途?(请至少说明两种)(5分)答:(1)可以定义 const 常量(2)const可以修饰函数的参数、返回值,甚至函数的定义体。被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。4、在C+ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”? (5分)答:C+语言支持函数重载,C语言不支持函数重载。函数被C+编译后在库中的名字与C语言的不同。假设某个函数的原型为:

28、 void foo(int x, int y);该函数被C编译器编译后在库中的名字为_foo,而C+编译器则会产生像_foo_int_int之类的名字。C+提供了C连接交换指定符号extern“C”来解决名字匹配问题。5、请简述以下两个for循环的优缺点(5分)for (i=0; iN; i+)if (condition)DoSomething();elseDoOtherthing();if (condition)for (i=0; iN; i+)DoSomething();elsefor (i=0; iN; i+)DoOtherthing();优点:程序简洁缺点:多执行了N-1次逻辑判断,并

29、且打断了循环“流水线”作业,使得编译器不能对循环进行优化处理,降低了效率。优点:循环的效率高缺点:程序不简洁四、有关内存的思考题(每小题5分,共20分)void GetMemory(char *p)p = (char *)malloc(100);void Test(void)char *s = NULL;GetMemory(s);scpy(s, #8220;hello world);printf(s);请问运行Test函数会有什么样的结果?答:程序崩溃。因为GetMemory并不能传递动态内存,Test函数中的 s一直都是 NULL。scpy(s, #8220;hello world);将使程

30、序崩溃。char *GetMemory(void)char p = #8220;hello world;return p;void Test(void)char *s = NULL;s = GetMemory();printf(s);请问运行Test函数会有什么样的结果?答:可能是乱码。因为GetMemory返回的是指向“栈内存”的指针,该指针的地址不是 NULL,但其原现的内容已经被清除,新内容不可知。void GetMemory2(char *p, int num)*p = (char *)malloc(num);void Test(void)char *s = NULL;GetMemor

31、y(amp;s, 100);scpy(s, #8220;hello);printf(s);请问运行Test函数会有什么样的结果?答:(1)能够输出hello(2)内存泄漏void Test(void)char *s = (char *) malloc(100);scpy(s, “hello”);free(s);if(s != NULL)scpy(s, “world”);printf(s);请问运行Test函数会有什么样的结果?答:篡改动态内存区的内容,后果难以预料,非常危险。因为free(s);之后,s成为野指针,if(s != NULL)语句不起作用。27 费波那其数列,1,1,2,3,5编

32、写程序求第十项。可以用递归,也可以用其他方法,但要说明你选择的理由。-i nclude i nclude int Pheponatch(int);int Pheponatch2(int);int main()printf(The 10th is %d,Pheponatch2(20);system(pause);return 0;/递归算法int Pheponatch(int N)if( N = 1 | N = 2)return 1;elsereturn Pheponatch( N -1 ) + Pheponatch( N -2 );/非递归算法int Pheponatch2(int N)int

33、 x = 1, y = 1, temp;int i = 2;while(ue)temp = y;y = x + y;x = temp;i+;if( i = N )break;return y;25完成下列程序*.*.*.*.*.*#8230;*#8230;*#8230;*#8230;*#8230;.*#8230;.*#8230;.*#8230;.*#8230;.*#8230;.*#8230;.*#8230;.*#8230;.*#8230;.*#8230;.*#8230;#8230;*#8230;#8230;*#8230;#8230;*#8230;#8230;*#8230;#8230;*#823

34、0;#8230;*#8230;#8230;*#8230;#8230;.*#8230;#8230;.*#8230;#8230;.*#8230;#8230;.*#8230;#8230;.*#8230;#8230;.*#8230;#8230;.*#8230;#8230;.i nclude #define N 8int main()int i;int j;int k;| | | |return 0;i nclude i nclude #define N 8int main()int i;int j;int k;for(i=N; i=1; i)for(j=0; jN-i+1; j+)cout*;for(

35、k=1; kN-i+1; k+)cout.;coutleft=NULL;/NewNode-right=NULL;i nclude i nclude typedef suct TNodeTNode* left;TNode* right;int value; TNode;TNode* root=NULL;void append(int N);int main()append(63);append(45);append(32);append(77);append(96);append(21);append(17); / Again, 数字任意给出return 0;void append(int N)

36、TNode* NewNode=(TNode *)malloc(sizeof(TNode);NewNode-value=N;NewNode-left=NULL;NewNode-right=NULL;if(root=NULL)root=NewNode;return;elseTNode* temp;temp=root;while(N=temp-value amp;amp; temp-left!=NULL) | (Nright!=NULL)while(N=temp-value amp;amp; temp-left!=NULL)temp=temp-left;while(Nright!=NULL)temp

37、=temp-right;if(N=temp-value)temp-left=NewNode;elsetemp-right=NewNode;return; C+面试题集(5)_追雨制作 62:8086是多少位的系统?在数据总线上是怎么实现的?63.怎样用最快的方法判断链表是否有环?64.c+中引用和指针有什么不同?指针加上什么限制等于引用?答:1 引用被创建的时候必须被初始化,而指针不是必需的。2 引用在创建后就不能改变引用的关系,而指针在初始化后可以随时指向其它的变量或对象。3 没有NULL引用,引用必须与合法的存储单元关联,而指针可以是NULL。65.做的项目,遇到的困难,怎样解决?69.操

38、作符重载class CMyObject:pulic CObjectPublic:CMyObject();CMyObject amp;operator=(const CMyObject amp;my);private:CSing sName;int nId:;请重载赋值操作符70.链表Suct suctListint value;suctList *pHead;Suct LinkedList *pMyList;请编写删除链表的头、尾和第n个节点的程序71.用Socket API制作一个聊天程序,通讯协议使用tcp/ip。要求有简单界面即可,支持多人聊天。72.如果有过工作经验,请说明在先前公司的

39、工作以及离职原因(如无,请说明毕业后的个人展望)*73 对于C+中类(class) 与结构(suct)的描述正确的为:A,类中的成员默认是private的,当是可以声明为public,private 和protected,结构中定义的成员默认的都是public;B,结构中不允许定义成员函数,当是类中可以定义成员函数;C,结构实例使用malloc() 动态创建,类对象使用new 操作符动态分配内存;D,结构和类对象都必须使用new 创建;E,结构中不可以定义虚函数,当是类中可以定义虚函数.F,结构不可以存在继承关系,当是类可以存在继承关系.答:A,D,F74,两个互相独立的类:ClassA 和

40、ClassB,都各自定义了非静态的公有成员函数 PublicFunc() 和非静态的私有成员函数 PrivateFunc();现在要在ClassA 中增加定义一个成员函数ClassA:AdditionalPunction(ClassA a,ClassB b);则可以在AdditionalPunction(ClassA x,ClassB y)的实现部分(函数功能体内部)出现的合法的表达是最全的是:A,x.PrivateFunc();x.PublicFunc();y.PrivateFunc();y.PublicFunc();B,x.PrivateFunc();x.PublicFunc();y.Pu

41、blicFunc();C,x.PrivateFunc();y.PrivateFunc();y.PublicFunc();D,x.PublicFunc();y.PublicFunc();答:B75,C+程序下列说法正确的有:A,对调用的虚函数和模板类都进行迟后编译.B,基类与子类中函数如果要构成虚函数,除了要求在基类中用virtual 声名,而且必须名字相同且参数类型相同返回类型相同C,重载的类成员函数都必须要:或者返回类型不同,或者参数数目不同,或者参数序列的类型不同.D,静态成员函数和内联函数不能是虚函数,友员函数和构造函数也不能是虚函数,但是析构函数可以是虚函数.答:A*76,C+中的类与

42、结构的区别?77,构造函数和析构函数是否可以被重载,为什么?答:构造函数可以被重载,析构函数不可以被重载。因为构造函数可以有多个且可以带参数,而析构函数只能有一个,且不能带参数。78,一个类的构造函数和析构函数什么时候被调用,是否需要手工调用?答:构造函数在创建类对象的时候被自动调用,析构函数在类对象生命期结束时,由系统自动调用。1 i nclude “filename.h”和i nclude 的区别?答:i nclude “filename.h”表明该文件是用户提供的头文件,查找该文件时从当前文件目录开始;i nclude 表明这个文件是一个工程或标准头文件,查找过程会检查预定义的目录。2

43、头文件的作用是什么?答:一、通过头文件来调用库功能。在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的库即可。用户只需要按照头文件中的接口声明来调用库功能,而不必关心接口怎么实现的。编译器会从库中提取相应的代码。二、头文件能加强类型安全检查。如果某个接口被实现或被使用时,其方式与头文件中的声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改错的负担。3 C+函数中值的传递方式有哪几种?答:C+函数的三种传递方式为:值传递、指针传递和引用传递。4 内存的分配方式的分配方式有几种?答:一、从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序

44、的整个运行期间都存在。例如全局变量。二、在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。三、从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存。动态内存的生存期由我们决定,使用非常灵活,但问题也最多。5 实现双向链表删除一个节点P,在节点P后插入一个节点,写出这两个函数;答:双向链表删除一个节点Ptemplate void list:delnode(int p)int k=1;

45、listnode *p,*t;p=first;while(p-next!=NULLamp;amp;k!=p)p=p-next;k+;t=p-next;cout你已经将数据项 #8220;data删除next=p-next-next;length;delete t;在节点P后插入一个节点:template bool list:insert(type t,int p)listnode *p;p=first;int k=1;while(p!=NULLamp;amp;knext;k+;if(p=NULLamp;amp;k!=p)return false;elselistnode *tp;tp=new

46、listnode;tp-data=t;tp-next=p-next;p-next=tp;length+;return ue; C+面试题集(4)_追雨制作 52. 以下代码有什么问题?STL易typedef vector IntArray;IntArray array;array.push_back( 1 );array.push_back( 2 );array.push_back( 2 );array.push_back( 3 );/ 删除array数组中所有的2for( IntArray:iterator itor=array.begin(); itor!=array.end(); +it

47、or )if( 2 = *itor ) array.erase( itor );53. 写一个函数,完成内存之间的拷贝。考虑问题是否全面答:void* mymemcpy( void *dest, const void *src, size_t count )char* pdest = static_cast( dest );const char* psrc = static_cast( src );if( pdestpsrc amp;amp; pdestpsrc+cout ) 能考虑到这种情况就行了for( size_t i=count-1; i!=-1; i )pdesti = psrci;

48、elsefor( size_t i=0; icount; +i )pdesti = psrci;return dest;int main( void )char s = #8220;0123456789#8243;mymemcpy( s+1, s+0, 9 );cout s endl;system( #8220;Pause );return 0;54 线程与进程的区别55:请你分别划划OSI的七层网络结构图,和TCP/IP的五层结构图?56:请你详细的解释一下IP协议的定义,在哪个层上面,主要有什么作用? TCP与UDP呢?IP协议是网络层的协议,它实现了Internet中自动路由的功能,即寻

49、径的功能,TCP协议是一个传输性的协议它向下屏蔽了IP协议不可靠传输的特性,向上提供一个可靠的点到点的传输,UDP提供的是一种无连接的服务,主要考虑到很多应用不需要可靠的连接,但需要快速的传输57:请问交换机和路由器分别的实现原理是什么?分别在哪个层次上面实现的?交换机用在局域网中,交换机通过纪录局域网内各节点机器的MAC地质(物理地址)就可以实现传递报文,无需看报文中的IP地质。路由器识别不同网络的方法是通过识别不同网络的网络ID号(IP地址的高端部分)进行的,所以为了保证路由成功,每个网络都必须有一个唯一的网络编号。路由器通过察看报文中IP地址,来决定路径,向那个子网(下一跳)路由,也就是

50、说交换机工作在数据链路层看MAC地址,路由器工作在网际层看IP地质但是由于现在网络设备的发展,很多设备既有交换机的功能有由路由器的功能(交换试路由器)使得两者界限越来越模糊。58:请问C+的类和C里面的suct有什么区别?59:请讲一讲析构函数和虚函数的用法和作用?60:全局变量和局部变量有什么区别?实怎么实现的?操作系统和编译器是怎么知道的?全局变量是整个程序都可访问的变量,谁都可以访问,生存期在整个程序从运行到结束(在程序结束时所占内存释放),而局部变量存在于模块(子程序,函数)中,只有所在模块可以访问,其他模块不可直接访问,模块结束(函数调用完毕),局部变量消失,所占据的内存释放。全局变量分配在全局数据段并且在程序开始运行的时候被加载. 局部变量则分配在堆栈里面。61:一些寄存器的题目,主要是寻址和内存管理等一些知识。2、交换机用在局域网中,交换机通过纪录局域网内各节点机器的MAC地质(物理地址)就可以实现传递报文,无需看报文中的IP地质。路由器识别不同网络的方法是通

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!