中兴笔试经验分享

进修社 人气:2.01W

中兴笔试经验分享(一)

中兴笔试经验分享

公共题:

1、数据库中 XXX 和XXX操作可恢复数据库。undo redo 吧?

2、数据库的核心是XX。

3、头文件中<> 和“”的区别?

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

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

4、

C++

都记不太清了,过去快2个星期了!

大约4个选择题,一个6分。数组的操作,在内存中的分配(注意下标从0开始),大题:

1、18分的题:

char *GetMemory(void)

{

char p[] = "hello world";

return p;

}

void Test(void)

{

char *str = NULL;

str = GetMemory();

printf(str);

}

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

答:可能是乱码。

因为GetMemory 返回的是指向“栈内存”

的指针,该指针的地址不是 NULL,但其原

现的内容已经被清除,新内容不可知。

还有一个比较简单,不写了。

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

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

仔细看看林锐的《高质量程序指南》基本不会有大问题。可惜啊,大意了...鄙视中

1.对数据库的一张表进行操作,同时要对另一张表进行操作,如何实现??

答案:将操作多个表的操作放入到事务中进行处理

建立连接的过程?(3-way shake)

答案: 在TCP/IP协议中,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状态,完成三次握手。

是什么协议,处于哪一层?

答案:Internet控制报文协议,处于网络层(IP层)

4.触发器怎么工作的?

答案:触发器主要是通过事件进行触发而被执行的,当对某一表进行诸如UPDATE、 INSERT、 DELETE 这些操作时,数据库就会自动执行触发器所定义的SQL 语句,从而确保对数据的处理必须符合由这些SQL 语句所定义的规则。

ock建立连接的主要实现步骤?

答案:服务器端:socker()建立套接字,绑定(bind)并监听(listen),用accept()等待客户端连接。客户端:socker()建立套接字,连接(connect)服务器,连接上后使用send()和recv(),在套接字上写读数据,直至数据交换完毕,closesocket()关闭套接字。

服务器端:accept()发现有客户端连接,建立一个新的套接字,自身重新开始等待连接。该新产生的套接字使用send()和recv()写读数据,直至数据交换完毕,closesocket()关闭套接字。

6.动态连接库的两种方式?

答案:调用一个DLL中的函数有两种方法:

1.载入时动态链接(load-time dynamic linking),模块非常明确调用某个导出函数,使得他们就像本地函数一样。这需要链接时链接那些函数所在DLL的导入库,导入库向系统提供了载入DLL时所需的信息及DLL函数定位。

2.运行时动态链接(run-time dynamic linking),运行时可以通过LoadLibrary或LoadLibraryEx函数载入DLL。DLL载入后,模块可以通过调用GetProcAddress获取DLL函数的出口地址,然后就可以通过返回的函数指针调用DLL函数了。如此即可避免导入库文件了。

组播有那些好处?

答案:Internet上产生的许多新的应用,特别是高带宽的多媒体应用,带来了带宽的急剧消耗和网络拥挤问题。组播是一种允许一个或多个发送者(组播源)发送单一的数据包到多个接收者(一次的,同时的)的网络技术。组播可以大大的节省网络带宽,因为无论有多少个目标地址,在整个网络的任何一条链路上只传送单一的数据包。所以说组播技术的核心就是针对如何节约网络资源的前提下保证服务质量。

2006年3月21日于华侨大学洪祖杭大楼,笔试分三部分,公共部分(都做),C++部分和JAVA部分选做。考试时间1小时!蜗牛自己打字好累啊!供涯友分享。

公共部分(50分)

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

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

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

A CLEAR TABLE B DROP TABLE

C DELETE TABLE D REMOVE TABLE

3:ATM采用的线路复用方式为( )(3分)

A 频分多路复用

B 同步时分多路复用

C 异步时分多路复用

D 独占信道

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

A操作

B 对应的数据

C 定义

D 限制

5:什么是虚拟设备?为什么在操作系统中引入虚拟设备?(10分)

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

7:什么是分布式数据库?(12分)

C++部分(50分)

1:设有“int w[3][4];”,pw是与数组名w等价的数组指针,则pw的初始化语句为________________(3分)

2:要使引用pr代表变量“char *p”,则pr的初始化语句为__________________(3分)

3:“零值”可以是0,0.0,FALSE或者“空指针”。例如int变量n与“零值”比较的if语句为:if(n==0),则BOLL flag与“零值”比较的if语句为______________;float x与“零值”比较的if语句为:______________。(6分)

4:社有如下语句:(3分)

Int x;

()

*px=0;

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

A int *px; B int const *px=&x;

C int const px=&x; D const int *px=&x;

5:设viod f1(int *m,long&n);int a;long b;则以下调用合法的是( )(3分)

A f1(a,b) B f1(&a,b)

C f1(a,&b) D f1(&a,&b)

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

Int main()

{int a,b,c,d;

a=0;

b=1;

c=2;

d=3;

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

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

Template

Void WE(Type a[],Type b[],int n){

for(int i=0;i

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

给出如下结构

Struct node

{steuct *next;

};

Typedef stuct node Node;

JAVA部分(50分)

1:判断下列对的是哪个( )(3分)

A short s1=1;s1=s1+1

B short s1=1;s1+=1

C short s1=1;s1=s1-1

D short s1=1;s1=s1*1

2:main方法是Java Application程序执行的入口点,关于main方法的方法头以下哪项是合法的( )(3分)

A public static void main ()

B public static void main (String args)

C public static int main (String []arg)

D public void main (String args)

3:设float x=1,y=2,z=3,则表达式y+=z--/++x的值是( )(3分)

A 3.5 B 3

C 4 D 5

4:d(11.5)=_______

d(-11.5)=_______(4分)

5:假设x=10,y=20,z=30;计算下列表达式的值(6分)

A x<10||x>10__________

B !(x

C z-y==x&&(y-z)!=x_____________

6:方法重建Overload和方法的重写Overriding的区别。Overload的'方法是否可以改变返回值的类型?(10分)

7:谈谈HashMap和Hashtable的区别(6分)

8:构造一个类来描述屏幕上的一个点,该类的构成包括点x和y两个坐标,以及一些对点进行的操作,包括:取得点的坐标值,对点的坐标进行赋值,编写应用程序生成该类的对象并对其进行操作。(15分)

是中兴第一轮的笔试题,5个小程序,自己的C++没学好

1、 分数统计(15)

要求:

(1)输入某班级学生的姓名、分数;

(2)对(1)的分数进行降幂排列并输出;

(3)具有输入输出界面。

2、 打字程序(15)

要求:

(1)随即产生一字符串,每次产生的字符串内容、长度都不同;

(2)根据(1)的结果,输入字符串,判断输入是否正确,输出正确率;

(3)具有输入输出界面。

3、 文本编辑器(15)

要求:

(1)编辑文本;

(2)保存、打开指定位置的文本文件;

(3)具有输入输出界面。

4、 加密(15)

要求:

(1)输入任意一段明文M,以及密钥K;

(2)根据一下公式将其转换为密文C。

Ci = mi + K ,其中i = 0,1,……n-1 , K 为密钥;

(3)具有输入输出界面。

5、进制转换器(15)

要求:

(1)可输入二进制、八进制、十进制、十六进制数;

(2)将已输入的数转换成其余进制的数;

(3)具有输入输出界面。

中兴笔试经验分享(二)

排序及查找方法

#include

#include

#define N 11

/*用监视哨查找*/

int search(int array[],int n,int k)

{int i;

i=n-1;

array[0]=k;

while(array!=k) i--;

return(i);

}

/*折半查找法*/

int halfsearch(int array[],int n,int k)

{int i,j,mid;

i=1;j=n;

while(i<=j)

{mid=(i+j)/2;

if(k==array[mid]) return(mid);

else if(k

else i=mid+1;

}

return(0);

}

/*冒泡排序法*/

void mpsort(int array[])

{int i,j,a;

a=0;

for(i=1;i

for(j=i+1;j

if(array>array[j])

{a=array;

array=array[j];

array[j]=a;}

}

/*直接插入排序*/

void insertsort(int array[])

{int i,j;

for(i=2;i

{array[0]=array;

j=i-1;

while(array[0]

{array[j+1]=array[j--];

array[j+1]=array[0];

}

}

}

/*建立*/

void creat(int array[])

{int i;

printf("enter the array:n");

for(i=1;i

scanf("%d",&array);

}

/*显示*/

void print(int array[])

{int i;

printf("The numbers after sort is:n");

for(i=1;i

printf("%d ",array);

printf("n");

}

main()

{int a[11],i,x,chang;

/*printf("enter the arrayn");

for(i=1;i<11;i++)

scanf("%d",&a);*/

aga:

printf("nchang:1: use watching method findingn 2:use half method findingn 3: use directness intsert method sortn 4:use bubble up method sortn 5:exitn");

scanf("%d",&chang);

switch (chang)

{case 1:

{creat(a);

printf("Please int the search number:n");

scanf("%d",&x);

printf("The number station is:%dn",search(a,N,x));

goto aga;

}

case 2:

{ creat(a);

insertsort(a);

print(a);

printf("Please int the search number:n");

scanf("%d",&x);

printf("The number station is:%dn",halfsearch(a,N,x));

goto aga;

}

case 3:

{creat(a);

insertsort(a);

print(a);

goto aga;

}

case 4:

{creat(a);

mpsort(a);

print(a);

goto aga;

}

case 5:{ printf("exit!n");break;}

default:{printf("Error!n"); goto aga;}

}

}

二、线性链表的存储实现

struct LNODE{

ElemType data;

struct LNODE *next;

};

typedef struct LNODE LNode;

typedef struct LNODE * LinkList;

1初始化操作

Status Init_L(LinkList L){

if (L=(LinkList *)malloc(sizeof(LNode)))

{L->next=NULL;return 1;}

else return 0;

}

2插入操作

Status ListInsert_L(LinkList &L,int i,ElemType e){

p=L,j=0;

while(p&&jnext;++j;}

if(!p||j>i-1) return ERROR;

s=(LinkList)malloc(sizeof(LNode));

s->data=e;s->next=p->next;

p->next=s;

return OK;

}//ListInsert_L

3删除操作

Status ListDelete_L(LinkList &L,int i,ElemType &e){

p=L,j=0;

while(p&&jnext;++j;}

if(!p->next||j>i-1) return ERROR;

q=p->next;p->next=q->next;

e=q->data;free(q);

return OK;

}//ListDelete_L

4取某序号元素的操作

Status GetElem_L(LinkList &L,int i,ElemType &e){

p=L->next,j=1;

while(p&&jnext;++j;}

if(!p||j>i) return ERROR;

e=p->data;

return OK;

}//GetElem_L

5归并两个单链表的算法

void MergeList_L(LinkList &La,LinkList &Lb,LinkList &Lc){

//已知单链线性表La和Lb的元素按值非递减排列

//归并后得到新的单链线性表Lc,元素也按值非递减排列

pa=La->next;pb=Lb->next;

Lc=pc=La;

while(pa&&pb){

if(pa->data<=pb->data){

pc->next=pa;pc=pa;pa=pa->next;

}else{pc->next=pb;pc=pb;pb=pb->next;}

}

pc->next=pa?pa:pb;

free(Lb);

}//MergeList_L

头指针与头结点的区别:

头指针只相当于结点的指针域,头结点即整个线性链表的第一个结点,它的数据域可以放数据元素,也可以放线性表的长度等附加信息,也可以不存储任何信息。

第一部分 数据结构和算法

1. 假设执行语句S的时间为O(1),则执行下列程序短的时间为()

for(i=1;i<=n;i++)

for(j=I;j<=n;j++)

S;

A. O(n) B. O(n2) C. O(n*i) D. O(n+1)

2. 二位数组A[10…20,5…10]采用行序为主序方式存储,每个数据元素占4个存储单元,且A[10][5]的存储地址是1000,则A[18][9]的地址是()

A. 1208 B. 1212 C. 1368 D. 1364

3. 设栈最大长度为3,入栈序列为1,2,3,4,5,6,则不可能得出栈序列是() A. 1,2,3,4,5,6 B. 2,1,3,4,5,6 C. 3,4,2,1,5,6 D. 4,3,2,1,5,6 4. 设有98个已排序列元素,采用二分法查

似乎不难,可我还没找到。