中興軟創筆試前的一些準備

【練習1】

1、try{

a+=4;
return 1;
}catch(Exception e){
e.printStackTrace();
return -1;
}finally{
return 0;
}


執行結果:返回finally 中的 0


2、truncat table 刪除表中所有的記錄
答:
a.DELETE
 ?DML語言
 ?可以回退
 ?可以有條件的刪除


     DELETE FROM 表名
   WHERE 條件


b.TRUNCATE TABLE
 ?DDL語言
 ?無法回退
 ?默認所有的表內容都刪除
 ?刪除速度比delete快。


   TRUNCATE TABLE 表名


drop>truncate>delete


3、視圖中的select可以存在order by、group by
4、創建只讀視圖:with read only
5、to_data('05-20-2009 11:56:56','MM-DD-YYYY HH24:MI:SS')
6、修改列類型,修改列值
update sala set salary = +90000


7、爲什麼使用多線程?
答:線程是爲了能同步完成多項任務,而不是爲了提高運行效率,是爲了提高資源使用率來提高系統的效率,線程是在同一時間需要完成多項任務的時候實現的。
線程的好處:
使用線程可以把佔據長時間的程序中的任務放到後臺中去處理
a、用戶界面可以更加吸引人,這樣比如用戶點擊了一個按鈕去觸發某些事件的處理,可以彈出一個進度條來顯示處理進度
b、程序的運行速度可能加快
c、在一些等待的任務實現上如用戶輸入、文件讀寫和網絡收發數據等,線程就比較有用了。在這種情況下可以釋放一些珍貴的資源如內存佔用等
線程的缺點:爭用條件、死鎖、活動鎖、資源耗盡。
8、協議
OSI網絡的七層模型:應用層、表示層、會話層、傳輸層、網絡層、數據鏈路層、物理層
ppp(公私合作關係):數據鏈路層
ICMP(Internet控制信息協議):網絡層

HTTP:應用層

【練習2】

1、char *GetMemory(void)
{
char p[]="hello world";
return p;
}
void Test(void)
{
char *str =NULL;
str = GetMemory();
printf(str);
}
請問Test運行結果?
答:可能是亂碼。因爲GetMemory返回的是指向“棧內存”的指針,該指針的地址不是NULL,但其原先的內存已經被清除,新內容不可知。


2、析構函數什麼時候運行,實現什麼功能?
構造涵數->初始化->對象生成的時候調用
析構函數->清理->對象生命週期結束時調用
3、全局變量與局部變量的區別
全局變量和局部變量的區別主要在於生存週期不同,全局變量在整個程序生成期間可見,局部變量在自己的作用域內可見。全局變量的內存分配是靜態的,位於PE文件在數據區,在main()前由C、C++運行期函數初始化,如果沒有初值,會被初始化爲0。局部變量的內存分配是動態的,位於線程堆棧中。如果沒有初始化的,初值視當前內存內的值而定。


3、對數據庫的一張表進行操作,同時要對另一張表進行操作,如何實現?
答案:將操作多個表的操作放入到事務中進行處理。


4、TCP/IP建立連接的過程?
答案:在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狀態,完成三次握手。


5、ICMP是什麼協議?處於哪一層?
答案:Internet控制報文協議,處於網絡層(IP層)。


6、觸發器怎麼工作的?
答案:觸發器主要是通過事件進行觸發而被執行的,當對某一表進行諸如UODATE、INSERT、DELETE這些操作時,數據庫就會自動執行觸發器所定義的SQL語句,從而確保對數據的處理必須符合由這些SQL語句所定義的規則。


7、winsock建立連接的主要實現步驟?
答案:服務器端:socket()建立套接字,綁定(bind)並監聽(listen),用accept()等待客戶端連接。
客戶端:socket()建立套接字,連接(connet)服務器,連接上後使用send()和recv(),在套接字上讀寫數據,直至數據交換完畢,close socket()關閉套接字。
服務端:accept()發現有客戶端連接,建立一個新的套接字,自身重新開始等待連接,該新2產生的套接字使用send()和recv()寫讀數據,直至數據交換完畢,close socket()關閉套接字。


8、動態鏈接庫的兩種方式?
a、載入時動態鏈接(load-time dynameic lining),模塊非常明確調用某個導出函數,使得他們呢就像本地函數一樣。這需要鏈接時鏈接那些函數所在DLL的導入庫,導入庫向系統提供了載入DLL時所需的信息及DLL函數定位。
b、運行時動態鏈接(run-time dynamic linking),運行時可以通過LoadLinbrary或LoadLibraryEx函數載入DLL。DLL載入後,模塊可以通過調用GetProAddress獲取DLL函數的出口地址,然後就可以通過返回的函數指針調用DLL函數了。如此即可避免導入庫文件了。


9、IP組播有哪些好處?
答案:Internet上產生的許多新的應用,特別是高帶寬的多媒體應用,帶來了帶寬的集聚消耗和網絡擁擠問題。組播是一種允許一個或多個發送者(組播源)發送單一的數據包到多個接收者(一次的,同時的)的網絡技術。組播可以大大的節省網絡帶寬,因爲無論有多少個目標地址,在整個網絡的任何一條鏈路上只傳送單一的數據包。所以說組播技術的核心就是針對如何節約網絡資源的前提下保證服務質量。

【練習3】

1、const和#define的區別?
答:define只是用來做文本替換, define 常量的生命週期止於編譯期,它存在於程序的代碼段,在實際程序中它只是一個常數,一個命令中的參數並沒有實際的存在;
const 常量存在於程序的數據段,並在堆棧中分配了空間。 const 常量在程序中確確實實的存在並可以被調用、傳遞。const常量有數據類型,而宏常量沒有數據類型。編譯器可以對const常量進行類型安全檢查。


2、#include<filename.h>和include “finename.h”有什麼區別?
答:#include<filename.h>系統檢索頭文件時 會先從系統文件裏開始找,再找其他地方。用於系統文件較快。
#include"filename.h"系統檢索頭文件時先從程序所處目錄開始查找。用於自定義文件較快。


3、編寫一個宏,輸入2個參數,輸出結果爲兩個參數的乘積。
#define Count(x,y) (x)*(y)


4、char str[] = "Hello" ,計算sizeof(str)的數值
答:sizeof(str) = 6


5、寫出float x與“零值”比較的if語句。
if((x>-0.000001)&&(x<0.000001))


6、寫出char *p與"零值"比較的if語句
if(p==NULL)


7、寫一個函數,判定運行環境(16位以上字長)是little-endian還是big-endian?
答:
int p = 0x12345678;
char *ptr;
ptr = (char *)&p;
printf("ptr=0x%x\n",*ptr);


8、結構體和聯合體的主要區別?
答:結構體是多個數據的集合,可以保存多個數據
而聯合union只保存一個數據,但是可以按照不同類型來讀取。
比如你的聯合裏面有一個int和一個float,你第一次寫進int,然後第二次寫進float,那麼int就不可用了(或者說讀出來已經不是你存的int值了),因爲這個union所在的內存區域值已經是第二次寫進的float了。
結構體變量所佔內存長度是各成員佔的內存長度的總和。
共同體變量所佔內存長度是各最長的成員佔的內存長度。


9、操作系統的主要組成部分?
答:內核、驅動程序、外圍、接口庫


10、操作系統中進程調度策略有哪幾種?
1,SCHED_OTHER 分時調度策略,
2,SCHED_FIFO實時調度策略,先到先服務
3,SCHED_RR實時調度策略,時間片輪轉


11、進程間主要通訊方式?
答:共享內存、消息隊列、管道、信號、信號量、內存映射、socket


12、寫出進程的主要狀態?
答:等待、就緒、運行。


13、Internet採用哪種網絡協議?該協議的主要層次結構?
答:TCP/IP協議。網絡接口層、網絡層、傳輸層、應用層。


14、以太網物理地址和IP地址採用什麼協議?
答:ARP和RARP


15、IP地址的編碼分爲哪兩部分?
答:主機號和網絡號


16、寫出以太網數據幀格式?
答:前導碼(7字節)、幀起始定界符(1字節)、目的MAC地址(6字節)、源MAC地址(6字節)、類型/長度(2字節)、數據(46~1500字節)、幀校驗序列(4字節)


17、8031和8051的主要區別?
答:8031片內無ROM,必須擴展,而8051內部有。


18、分析一下程序的執行結果
#include <iostream.h>
class bass
{
public:
base(){cout<<"constructing base class"<<endl;}
~base(){cout<<"destructing base class"<<endl;}
};
class subs:public base
{
public:
subs(){cout<<"constructing sub class"<<endl;}
~subs(){cout<<"destructing sub class"<<endl;}
};
void main()
{
subs s;
}


答:
constructing base class
constructing sub class
destructing sub class
destructing base class


19、指出下面程序的錯誤
#define SIZE 5
struct String
{
char *pData;
};
void main()
{
char acValue1[SIZE] = {'H','E','L','L','O'};
char acValue2[SIZE] = {'W','O','R','L','D'};


struct  String a,b,c;
a.pData=(char *)malloc(SIZE*sizeof(char));
memcpy(a.pData,acValue1,SIZE);
b.pData = (char *)malloc(SIZE*sizeof(char));
memcpy(b.pData,acValue2,SIZE);
b=a;
free(a.pData);
c= b;
}
答:將a free掉後,b,c指向空


20、指出下面兩段程序的區別
【1】
main()
{
int loop = 1;
int arr[10];
int i=0;
while(loop<5)
{
for(;i<=10;i++)
{
arr[i]=1;
}
loop++;
}
}
【2】
main()
{
int arr[10];
int loop = 1;
int i=0;
while(loop<5)
{
for(i=0;i<=10;i++)
{
arr[i]=1;
}
loop++;
}
}
答:【2】中會給數組arr[]幅值五十次,【1】中只給數組幅值10次。


21、指出下面程序的錯誤(哈數GetValue返回unsigned char 類型的值)
#define MAXNUM 400
unsigned char ucIndex,ucInputVar,Array[MAXNUM];
for(ucIndex=0;ucIndex<=MAXNUM;ucIndex++)
{
aucArray[ucIndex]=aucArray[ucIndex]+1;
}
ucInputVar = GetValue();
for(ucIndex=0;ucIndex>(ucInputVar-1);ucIndex++)
{
aucArray[ucIndex]=aucArray[ucIndex]*2+1;
}

【練習4】

1、面向連接和非連接的服務的特點是什麼?
答:網絡提供的服務分兩種: 面向連接的服務和無連接的服務. 
對於無連接的服務(郵寄), 發送信息的計算機把數據以一定的格式封裝在幀中, 把目的地址和源地址加在信息頭上, 然後把幀交給網絡進行發送. 無連接服務是不可靠的. 
對於面向連接的服務(電話), 發送信息的源計算機必須首先與接收信息的目的計算機建立連接. 這種連接是通過三次握手(three hand shaking)的方式建立起來的. 一旦連接建立起來, 相互連接的計算機就可以進行數據交換. 與無連接服務不同, 面向連接的服務是以連接標識符來表示源地址和目的地址的. 面向連接的服務是可靠的, 當通信過程中出現問題時, 進行通信的計算機可以得到及時通知


2、預防死鎖的若干方法?
答:1、有序資源分配法
    2、銀行家算法
產生死鎖的原因主要是:
(1) 因爲系統資源不足。
(2) 進程運行推進的順序不合適。
(3) 資源分配不當等。


3、以太網數據幀格式?
答:前導碼(7字節)、幀起始定界符(1字節)、目的MAC地址(6字節)、源MAC地址(6字節)、類型/長度(2字節)、數據(46~1500字節)、幀校驗序列(4字節)


4、主鍵和唯一引索的區別?
答:主鍵不能爲空,唯一引索可以爲空,當創建主鍵或者唯一約束的時候會自動創建唯一引索


5、中斷裝置的主要職能?
【1】檢查是否有中斷事件發生;
【2】若有中斷髮生,保護好被中斷進程的斷點及現場信息,以便進程在適當時候能恢復執行;
【3】啓動操作系統的中斷處理程序。


6、父類中定義爲public、protected、private的函數,在public、protected、private方式派生類中的訪問權限?


public方式,繼承父類後,父類中的public,protected內的變量和成員函數對子類一樣效果。
protected:繼承後,父類中的public類型自動降爲子類protectd類型
private繼承後,父類中的public,protected自動降爲子類中的private類型。


7、8&3=0


8、已經初始化了一個數組Data,問怎麼用Sizeof()求出數組的元素個數?
答:Sizeof(Data)/sizeof(數組數據類型)


9、銷燬一個子類的對象時,先調用子類的析構函數,在調用父類的析構函數


5、軟件實踐中不提倡使用(i++)+(++i)......的原因是?



【實際筆試】

現在回想當時的筆試也比較模糊了,我記得中興軟創主要考試的分爲兩大部分:

第一部分是:考數據庫的。一些比較基礎的考覈。包含表的創建、增、刪、改、查。如果你有認真學一下數據庫的話,基本上這個部分隨便考你都是可以通過的。

第二部分是C/C++的基礎了。我大概只記得後面的一道是:不調用庫函數實現整形與字符串的轉換。

【二面】

二面試,我是在福大那邊參加的。一個是女的,應該是HR、一個是他們的技術負責人。面試過程比較順利。人資問了很多問題,我基本上都回答過了。然後是他的技術問題。問的第一個是關於單鏈表的查找倒數第M個元素;第二個是雙鏈表的逆序。

【三面】

是他們的老總的面試。進入這邊面試,讓我感覺很奇怪。可能是老闆吧!就是不一樣,室內很黑,老闆電燈開都不想開,很是奇怪。這個面試老闆談內容也不是技術的事情。問了一下問題。你興趣愛好?平時讀什麼書目?等等

【寄望】

以上是我的一些總結,希望對閱讀者有些幫助。
















































































































































































發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章