中興筆試經驗分享(一)
公共題:
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&&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&&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個已排序列元素,採用二分法查 似乎不難,可我還沒找到。