第一部分選擇題:有幾道網(wǎng)絡(luò )相關(guān)的題目,巨簡(jiǎn)單,比如第一題是TCP、RIP、IP、FTP中哪個(gè)協(xié)議是傳輸層的......。有一道linux的chown使用題目。其他的全是數據結構的題目!什么鏈,表,碼的,不知所云~~~唉,我可以沒(méi)有學(xué)過(guò)數據結構的人吶!真殘忍!這一部分迅速猜完!
第二部分簡(jiǎn)答題:
1、在linux中如何編譯C程序,使之成為可執行文件?如何調試?
答案:1)檢查程序中.h文件所在的目錄,將其加入系統PATH中;
2)執行C編譯:#gcc [源文件名] -o [目標文件名]
執行C++編譯:#g++ [源文件名] -o [目標文件名]
3)改變目標文件為可執行文件:#chmod +x [目標文件名]
4)如需將多個(gè)可執行文件連續執行,可生成批處理文件:
#vi [批處理文件名]
可執行文件1
可執行文件2
.........
最后將該批處理文件屬性該位可執行。
調試:在編譯時(shí)使用-g參數,就可以使用gdb進(jìn)行調試。
2、寫(xiě)出內存分配和釋放的函數,并指出區別。
答案:
C語(yǔ)言的標準內存分配函數:malloc,calloc,realloc,free等。
malloc與calloc的區別為1塊與n塊的區別:
malloc調用形式為(類(lèi)型*)malloc(size):在內存的動(dòng)態(tài)存儲區中分配一塊長(cháng)度為“size”字節的連續區域,返回該區域的首地址。
calloc調用形式為(類(lèi)型*)calloc(n,size):在內存的動(dòng)態(tài)存儲區中分配n塊長(cháng)度為“size”字節的連續區域,返回首地址。
realloc調用形式為(類(lèi)型*)realloc(*ptr,size):將ptr內存大小增大到size。
free的調用形式為free(void*ptr):釋放ptr所指向的一塊內存空間。
C++中為new/delete函數。
3、寫(xiě)出socket函數,并指出其功能。
socket():建立socket通信描述符;
bind():將套接字和機器上的一定的端口關(guān)聯(lián);
connect():連接到遠程主機;
listen():使套接字做好連接的準備,規定等待服務(wù)請求隊列的長(cháng)度;
accept():接受連接,一旦有客戶(hù)端發(fā)出連接,accept返回客戶(hù)地址信息和一個(gè)新的sock;
有了這個(gè)新的sock,雙方就可以開(kāi)始收發(fā)數據:
send()和recv():用于流式套接字或者數據套接字的通訊;
sendto()和recvfrom():用于無(wú)連接的數據報套接字;
close():關(guān)閉套接字;
shutdown():選擇性的關(guān)閉套接字,可以只允許某一方向的通訊關(guān)閉;
getpeername():返回流式套接字時(shí)對端peer信息;
gethostname():返回程序所運行的機器的主機名字;
gethostbyname():返回本機IP;
第三部分編程題:
1、從文件中讀取字符串數據,反序顯示并大小寫(xiě)轉換。
2、給定26字母表以及對應的密碼表,編程實(shí)現加密及解密功能。
第四部分思考題(正是傳說(shuō)中的字典糾錯題):
用戶(hù)在輸入英文單詞時(shí)經(jīng)常出錯,現對其進(jìn)行就錯。給定一個(gè)正確的英文詞典,考慮糾錯實(shí)現。1)指出思路。2)流程、算法難易程度及可能的改進(jìn)策略。
一道算法題目答案
int Replace(Stringtype &S,Stringtype T,Stringtype V);//將串S中所有子串T替換為V,并返回置換次數
{
for(n=0,i=1;i〈=Strlen(S)-Strlen(T)+1;i++) //注意i的取值范圍
if(!StrCompare(SubString(S,i,Strlen(T)),T)) //找到了與T匹配的子串
{ //分別把T的前面和后面部分保存為head和tail
StrAssign(head,SubString(S,1,i-1));
StrAssign(tail,SubString(S,i+Strlen(T),Strlen(S)-i-Strlen(T)+1));
StrAssign(S,Concat(head,V));
StrAssign(S,Concat(S,tail)); //把head,V,tail連接為新串
i+=Strlen(V); //當前指針跳到插入串以后
n++;
}//if
return n;
}//Replace
分析:i+=Strlen(V);這一句是必需的,也是容易忽略的.如省掉這一句,則在某些情況下,會(huì )引起不希望的后果,雖然在大多數情況下沒(méi)有影響.請思考:設S=‘place‘, T=‘a(chǎn)ce‘, V=‘face‘,則省掉i+=Strlen(V);運行時(shí)會(huì )出現什么結果? (無(wú)限遞歸face)
百度2005年的筆試題
1.實(shí)現 void delete_char(char * str, char ch);
把str中所有的ch刪掉
2.把字符串S中所有A子串換成B,這個(gè)沒(méi)給函數原型
3.搜索引擎的日志要記錄所有查詢(xún)串,有一千萬(wàn)條查詢(xún),不重復的不超過(guò)三百萬(wàn)
要統計最熱門(mén)的10條查詢(xún)串. 內存<1G. 字符串長(cháng) 0-255
(1) 主要解決思路 //具體用詞和原題不大一樣
(2) 算法及其復雜度分析
4.有字典,設計一個(gè)英文拼寫(xiě)糾正算法 (1) 思想 (2) 算法及復雜度 (3) 改進(jìn)
5. { aaa, bb, ccc, dd }, { bbb, ff }, { gg } 等一些字符串的集合
要求把交集不為空的集合并起來(lái),如上例會(huì )得到 { aaa, bb, ccc, dd, ff }, {gg}
(1) 思想 (2) 算法及復雜度 (3) 改進(jìn)
聯(lián)系客服