中兴笔试Word格式.docx

上传人:b****5 文档编号:8514295 上传时间:2023-05-11 格式:DOCX 页数:24 大小:31.17KB
下载 相关 举报
中兴笔试Word格式.docx_第1页
第1页 / 共24页
中兴笔试Word格式.docx_第2页
第2页 / 共24页
中兴笔试Word格式.docx_第3页
第3页 / 共24页
中兴笔试Word格式.docx_第4页
第4页 / 共24页
中兴笔试Word格式.docx_第5页
第5页 / 共24页
中兴笔试Word格式.docx_第6页
第6页 / 共24页
中兴笔试Word格式.docx_第7页
第7页 / 共24页
中兴笔试Word格式.docx_第8页
第8页 / 共24页
中兴笔试Word格式.docx_第9页
第9页 / 共24页
中兴笔试Word格式.docx_第10页
第10页 / 共24页
中兴笔试Word格式.docx_第11页
第11页 / 共24页
中兴笔试Word格式.docx_第12页
第12页 / 共24页
中兴笔试Word格式.docx_第13页
第13页 / 共24页
中兴笔试Word格式.docx_第14页
第14页 / 共24页
中兴笔试Word格式.docx_第15页
第15页 / 共24页
中兴笔试Word格式.docx_第16页
第16页 / 共24页
中兴笔试Word格式.docx_第17页
第17页 / 共24页
中兴笔试Word格式.docx_第18页
第18页 / 共24页
中兴笔试Word格式.docx_第19页
第19页 / 共24页
中兴笔试Word格式.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

中兴笔试Word格式.docx

《中兴笔试Word格式.docx》由会员分享,可在线阅读,更多相关《中兴笔试Word格式.docx(24页珍藏版)》请在冰点文库上搜索。

中兴笔试Word格式.docx

现在常用的进程间的通信方式有:

信号,信号量,消息队列,共享内存。

信号和信号量是不同的,他们都可用来实现同步和互斥,但前者是使用信号处理器来进行的,后者是使用P,V操作来实现的。

消息队列是比较高级的一种进程间通信方法,因为它真的可以在进程间传送message,一个消息队列可以被多个进程共享(如linux下的IPC),如果一个进程的消息太多,一个消息队列放不下,也可以用多于一个消息队列。

共享消息队列的进程所发送的消息除了message本身还有一个标志,这个标志可以指明该消息是哪个进程或者哪类进程接受。

每一个共享消息队列的进程针对这个队列也有自己的标志,可以用来声明自己的身份。

3在网络编程中设计并发服务器,使用多进程与多线程有什么区别?

用多进程时每个进程有自己的地址空间,线程则共享地址空间。

所有其他区别都是由此而来:

1速度:

线程产生速度快,线程间通信快,切换快,因为它们在同一个地址空间内。

2:

资源利用率:

线程的资源利用率比较好。

(2)实时录制音频出现差错的原因,如何改进。

(3)static的作用:

首先static的最主要功能是隐藏,其次因为static变量存放在静态存储区,所以它具备持久性和默认值0。

详细:

隐藏,当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。

static的第二个作用是保持变量内容的持久。

存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。

共有两种变量存储在静态存储区:

全局变量和static变量,只不过和全局变量比起来,static可以控制变量的可见范围,说到底static还是用来隐藏的。

static的第三个作用是默认初始化为0。

其实全局变量也具备这一属性,因为全局变量也存储在静态数据区。

在静态数据区,内存中所有的字节默认值都是0x00,某些时候这一特点可以减少程序员的工作量。

(4)死锁防止和死锁预防的区别。

是计算机系统中多道程序并发执行时,两个或两个以上的进程由于竞争资源而造成的一种互相等待的现象(僵局),如无外力作用,这些进程将永远不能再向前推进。

产生死锁的四个必要条件:

⑴互斥条件:

进程访问的是临界资源,那个资源一次只能被一个进程所使用。

⑵不剥夺条件:

一个资源仅能被占有它的进程所释放,而不能被其他进程剥夺。

⑶部分分配:

(请求和保持条件)一个进程在请求新的资源的同时,保持对某些资源的占有。

⑷环路等待条件:

存在一个进程的环路链,链中每一个进程占用有着某个或某些资源,又在等待链中的另一个进程占有的资源。

根据生产死锁的四个必要条件,只要使用其中之一不能成立,死锁就不会出现。

但必要条件1是由设备的固有特性所决定的,不仅不能改变,相反还应加以保证,因此实际上只有三种方法。

避免死锁与预防死锁的区别在于,预防死锁是设法至少破坏产生死锁的必要条件之一,严格地防止死锁的出现。

避免死锁,它是在进程请求分配资源时,采用银行家算法等防止系统进入不安全状态。

第四部分编两个小程序:

(1)用指针实现输入偶数输出1+1/2+1/4+1/6+....+1/n;

输入奇数,输出1+1/3+1/5+1/7+....+1/n;

(2)用汇编实现冒泡排序

一直到快一点才做完啊,真的很伤脑筋啊

 中兴笔试题目2007

公共题:

1、数据库中XXX和XXX操作可恢复数据库。

undoredo吧?

更新日志前undo更新日志后redo可以回复数据库。

2、数据库的核心是XX。

数据库管理系统/书上是数据库

3、头文件中<

>

和“”的区别?

<

是编译器从标准库路径开始寻找“”是从用户路径开始寻找

4、定义一个宏,输入两个参数,输出积。

#defineMutil(a,b)((a)*(b))

  1、18分的题:

  char*GetMemory(void)

  {charp[]="

helloworld"

;

  returnp;

 }

  voidTest(void)

  { char*str=NULL;

  str=GetMemory();

  printf(str);

 }请问运行Test函数会有什么样的结果?

  答:

可能是乱码。

因为GetMemory返回的是指向“栈内存” 的指针,该指针的地址不是NULL,但其原先的内容已经被清除,新内容不可知。

2、析构函数什么时候运行,实现什么功能?

析构函数是在类生命周期结束的时候由系统自动调用。

如一个对象的作用域结束的时,或者是一个对象使用new动态构造时,在使用delete释放它时,delete会调用它。

功能是释放一个对象的存储空间。

析构函数没有返回值,没有参数,不能重载。

7、全局变量和局部变量的区别。

全局变量:

全局变量是在所有函数体的外部定义的,程序的所在部分(甚至其它文件中的代码)都可以使用。

全局变量不受作用域的影响,问题可以使用的(也就是说,全局变量的生命期一直到程序的结束)。

如果在一个文件中使用extern关键字来声明另一个文件中存在的全局变量,那么这个文件可以使用这个数据。

局部变量:

局部变量出现在一个作用域内,它们是局限于一个函数的。

局部变量经常被称为自动变量,因为它们在进入作用域时自动生成,离开作用域时自动消失。

关键字auto可以显式地说明这个问题,但是局部变量默认为auto,所以没有必要声明为auto。

1:

作业调度程序从处于(D)状态的队列中选择适当的作业的作业投入运行。

(3分)

  A运行B提交C完成D后备

  2:

SQL语言中,删除一个表的命令是(B)(3分)

  ACLEARTABLEBDROPTABLE CDELETETABLE  3:

ATM采用的线路复用方式为(C)(3分) A频分多路复用B同步时分多路复用C异步时分多路复用D独占信道ATM:

AsynchronousTransferMode异步传输方式。

  4:

数据库中只存放视图的(C)(3分)

  A操作 B对应的数据 C定义 D限制

5:

什么是虚拟设备?

为什么在操作系统中引入虚拟设备?

(10分)

答:

虚拟设备技术是指把每次仅允许一个进程使用的物理设备,改造为能同时供多个进程共享的虚拟设备的技术,或者说将一个物理设备变换为多个对应的逻辑设备。

6:

TCP为何采用三次握手来建立连接,若采用二次握手可以吗,请说明原因?

(16分)

TCP对话通过三次握手来初始化。

三次握手的目的是使数据段的发送和接收同步;

告诉其它主机其一次可接收的数据量,并建立虚连接。

TCP要提供可靠的服务。

 三次握手的简单过程:

第一次握手:

建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:

服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:

客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

采用二次握手可以不?

不可以。

二次握手不可行,因为:

如果由于网络不稳定,虽然客户端以前发送的连接请求以到达服务方,但服务方的同意连接的应答未能到达客户端。

则客户方要重新发送连接请求,若采用二次握手,服务方收到重传的请求连接后,会以为是新的请求,就会发送同意连接报文,并新开进程提供服务,这样会造成服务方资源的无谓浪费。

7:

什么是分布式数据库?

(12分)

分布式数据库系统通常使用较小的计算机系统,每台计算机可单独放在一个地方,每台计算机中都有DBMS的一份完整拷贝副本,并具有自己局部的数据库,位于不同地点的许多计算机通过网络互相连接,共同组成一个完整的、全局的大型数据库。

这种组织数据库的方法克服了物理中心数据库组织的弱点。

首先,降低了数据传送代价,因为大多数的对数据库的访问操作都是针对局部数据库的,而不是对其他位置的数据库访问;

其次,系统的可靠性提高了很多,因为当网络出现故障时,仍然允许对局部数据库的操作,而且一个位置的故障不影响其他位置的处理工作,只有当访问出现故障位置的数据时,在某种程度上才受影响;

第三,便于系统的扩充,增加一个新的局部数据库,或在某个位置扩充一台适当的小型计算机,都很容易实现。

然而有些功能要付出更高的代价。

例如,为了调配在几个位置上的活动,事务管理的性能比在中心数据库时花费更高,而且甚至抵消许多其他的优点。

分布式数据库系统主要特点:

·

多数处理就地完成;

各地的计算机由数据通信网络相联系。

克服了中心数据库的弱点:

降低了数据传输代价;

提高了系统的可靠性,局部系统发生故障,其他部分还可继续工作;

各个数据库的位置是透明的,方便系统的扩充;

为了协调整个系统的事务活动,事务管理的性能花费高;

数据分片

类型:

(1)水平分片:

按一定的条件把全局关系的所有元组划分成若干不相交的子集,每个子集为关系的一个片段。

(2)垂直分片:

把一个全局关系的属性集分成若干子集,并在这些子集上作投影运算,每个投影称为垂直分片。

(3)导出分片:

又称为导出水平分片,即水平分片的条件不是本关系属性的条件,而是其他关系属性的条件。

(4)混合分片:

以上三种方法的混合。

可以先水平分片再垂直分片,或先垂直分片再水平分片,或其他形式,但他们的结果是不相同的。

条件:

(1)完备性条件:

必须把全局关系的所有数据映射到片段中,决不允许有属于全局关系的数据却不属于它的任何一个片段。

(2)可重构条件:

必须保证能够由同一个全局关系的各个片段来重建该全局关系。

对于水平分片可用并操作重构全局关系;

对于垂直分片可用联接操作重构全局关系。

(3)不相交条件:

要求一个全局关系被分割后所得的各个数据片段互不重叠(对垂直分片的主键除外)。

数据分配方式

(1)集中式:

所有数据片段都安排在同一个场地上。

(2)分割式:

所有数据只有一份,它被分割成若干逻辑片段,每个逻辑片段被指派在一个特定的场地上。

(4)全复制式:

数据在每个场地重复存储。

也就是每个场地上都有一个完整的数据副本。

(5)混合式:

这是一种介乎于分割式和全复制式之间的分配方式。

  C++部分(50分)

 1:

设有“intw[3][4];

”,p是与数组名w等价的数组指针,则pw的初始化语句为int**p=w;

或者int (*p)[4]=w;

 2:

要使引用pr代表变量“char*p”,则pr的初始化语句为char*&

pr=p(3分)

 3:

“零值”可以是0,,FALSE或者“空指针”。

例如int变量n与“零值”比较的if语句为:

if(n==0),则BOLLflag与“零值”比较的if语句为if(!

a);

floatx与“零值”比较的if语句为:

constfloatm=;

if((x>

=m&

&

x<

=m)。

(6分)

4:

社有如下语句:

  Intx;

  ()

  *px=0;

  则选择以下哪条语句可将x值置为0。

  Aint*px;

Bintconst*px=&

x;

  Cintconstpx=&

Dconstint*px=&

正确答案:

int*constpx=&

x;

(B)

设viodf1(int*m,long&

n);

inta;

longb;

则以下调用合法的是(B)(3分)

  Af1(a,b)Bf1(&

a,b)

  Cf1(a,&

b)Df1(&

a,&

b)

请写出如下代码的运行结果(6分)

  Intmain(){inta,b,c,d;

a=0;

 b=1;

c=2;

d=3;

printf(“%d”,a+++b+c+++d++);

}

6运算后a=1b=1c=3d=4;

写出下面函数的功能(12分)

  Template<

classType>

U3<

F

  VoidWE(Typea[],Typeb[],intn){Y

  for(inti=0;

i<

n;

i++)b[n-i-1]=a;

}!

定义一个模板,交换两个数组的内容,且是逆序交换。

8写一段代码判断一个单向链表中是否有环。

(14分)

  给出如下结构

  Structnode

  {steuct*next;

  };

  TypedefstuctnodeNode;

设置两个游标p1,p2。

P1<

p2

#include<

structlisttype

{

 

intdata;

structlisttype*next;

};

typedefstructlisttype*list;

/*Checkthatwhetherthereisloopinthesinglylinkedlistsllornot.*/

intfind_circle(listsll)

listfast=sll;

listslow=sll;

if(NULL==fast)

{

return-1;

}

while(fast&

fast->

next)

fast=fast->

next->

next;

slow=slow->

if(fast==slow)

return1;

return0;

3、简述电路交换和分组交换的区别及优缺点。

见宝典里面的网络和通信文件夹

从csdn论坛我近半年的收集中选出10道有代表性的题目,难度基本上是逐渐加大.对数组,指针,数据结构,算法,字符串,文件操作等问题都有覆盖.主要以c语言的实现为主,也有c++的题.大家可以先做做这10道题,测试一下自己的水平.

1.下面这段代码的输出是多少(在32位机上).

char*p;

char*q[20];

char*m[20][20];

int(*n)[10];

structMyStruct

{

chardda;

doubledda1;

inttype;

};

MyStructk;

printf("

%d%d%d%d"

sizeof(p),sizeof(q),sizeof(m),sizeof(n),sizeof(k));

答案:

4,80,1600,4,24我觉得最后一题应该是16

(1)chara[2][2][3]={{{1,6,3},{5,4,15}},{{3,5,33},{23,12,7}}};

for(inti=0;

12;

i++)

printf("

%d"

a[0][0][i]);

在空格处填上合适的语句,顺序打印出a中的数字

(2)char**p,a[16][8];

问:

p=a是否会导致程序在以后出现问题?

为什么?

没有问题,只是使用时要小心,p是指向指针的指针。

A是数组的首地址也是指针。

3.用递归方式,非递归方式写函数将一个字符串反转.

函数原型如下:

char*reverse(char*str);

非递归方式:

char*reverse(char*str)

if(str!

=NULL)

intlength=strlen(str);

for(inti=0;

length/2;

++i)

chartemp=str[i];

str[i]=str[length-1-i];

str[length-1-i]=temp;

}}

%s\n"

str);

递归方式:

搞不定

if(str==NULL||strlen(str)==1)

returnstr;

inti;

if(i==1)

str[i]='

\0'

returnstr[i];

函数和memcpy函数有什么区别?

它们各自使用时应该注意什么问题?

strcpy函数:

拷贝字符串,遇到‘\0’结束,删去’\0’并结束拷贝。

memcpy函数:

拷贝任何数据。

并不是所有的数据都以NULL结束,所以要给其指定拷贝数据的长度。

5.写一个函数将一个链表逆序.

答:

typedefstructnode{

structnode*next;

}node;

node*reverse(node*head)

{node*p1,*p2,*p2;

if(head!

=NULL||head->

next!

{p1=head;

P2=p1->

While(p2){

P3=p2->

P2->

next=p1;

P1=p2;

P2=p3;

head->

next=NULL;

head=p1;

returnhead;

6一个单链表,不知道长度,写一个函数快速找到中间节点的位置.

你设两个指针一个移动速度是令一个两倍就可以了吧,第一个NULL了第2个就是中间节点了

typedefstructlinknode

inta;

structlinknode*next;

}linknode;

linknode*findmiddle(linknode*head)

linknode*fast,*low,*p;

if(head==NULL)

returnNULL;

P=head;

low=p->

fast=p->

while(!

(p=fast->

next)&

!

p->

low=low->

fast=fast->

returnlow;

7写一个函数找出一个单向链表的倒数第n个节点的指针.(把能想到的最好算法写出).

两个指针,第一个先于第二个n个位置。

LinkNodeIsLoopList(LinkNode*head,intn)

LinkNode*p1,*p2,*p3;

P1=head;

While(n-->

=0)

{我想到的办法是,从头开始一次取出把链表中的结点组成另一个链表,判断这个链表是不是循环的,第一个满足条件的头结点就是了.

比如以上面的测试数据为例:

第一次取出:

0->

1->

2->

3->

4->

5->

6->

7->

8->

(3)

第二次取出:

1->

第三次取出:

2->

以此类推.

10.判断链表是否循环;

boolIsLoopList(LinkNode*head)

LinkNode*p1=head,*p2=head;

if(head->

next==NULL)递归算法判断数组a[N]是否为一个递增数组。

递归算法:

#include<

#defineN5

intJudgment(inta[]);

intmain(){

inta[N],i,flag=1;

Enterarraydata:

"

);

for(i=0;

i<

N;

i++)

scanf("

%d"

&

a[i]);

n"

elseif(flag==0)

noincrementarray.\n"

getch();

intJudgment(inta[])

statici=0;

简述一个Linux驱动程序的主要流程与功能。

MyAnswer:

设备驱动程序是操作系统内核和机器硬件之间的接口,它为应用程序屏蔽硬件的细节,一般来说,Linux的设备驱动程序需要完成如

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2