百度笔试
?? 第一部分選擇題:有幾道網絡相關的題目,巨簡單,比如第一題是TCP、RIP、IP、FTP中哪個協議是傳輸層的......。有一道linux的chown使用題目。其他的全是數據結構的題目!什么鏈,表,碼的,不知所云~~~唉,我可以沒有學過數據結構的人吶!真殘忍!這一部分迅速猜完!
??? 第二部分簡答題:
??? 1、在linux中如何編譯C程序,使之成為可執行文件?如何調試?
答案:1)檢查程序中.h文件所在的目錄,將其加入系統PATH中;
?????????2)執行C編譯:#gcc [源文件名] -o [目標文件名]
??????????? 執行C++編譯:#g++ [源文件名] -o [目標文件名]
???????? 3)改變目標文件為可執行文件:#chmod +x [目標文件名]
???????? 4)如需將多個可執行文件連續執行,可生成批處理文件:
???????????? #vi [批處理文件名]
???????????? 可執行文件1
???????????? 可執行文件2
???????????? .........
???????????? 最后將該批處理文件屬性該位可執行。
??? 調試:在編譯時使用-g參數,就可以使用gdb進行調試。
??? 2、寫出內存分配和釋放的函數,并指出區別。
答案:
????? C語言的標準內存分配函數:malloc,calloc,realloc,free等。
????? malloc與calloc的區別為1塊與n塊的區別:
??????? malloc調用形式為(類型*)malloc(size):在內存的動態存儲區中分配一塊長度為“size”字節的連續區域,返回該區域的首地址。
?????? calloc調用形式為(類型*)calloc(n,size):在內存的動態存儲區中分配n塊長度為“size”字節的連續區域,返回首地址。
?????? realloc調用形式為(類型*)realloc(*ptr,size):將ptr內存大小增大到size。
?????? free的調用形式為free(void*ptr):釋放ptr所指向的一塊內存空間。
??? C++中為new/delete函數。
??? 3、寫出socket函數,并指出其功能。
?????? socket():建立socket通信描述符;
?????? bind():將套接字和機器上的一定的端口關聯;
????? connect():連接到遠程主機;
????? listen():使套接字做好連接的準備,規定等待服務請求隊列的長度;
????? accept():接受連接,一旦有客戶端發出連接,accept返回客戶地址信息和一個新的sock;
?? 有了這個新的sock,雙方就可以開始收發數據:
????? send()和recv():用于流式套接字或者數據套接字的通訊;
????? sendto()和recvfrom():用于無連接的數據報套接字;
????? close():關閉套接字;
????? shutdown():選擇性的關閉套接字,可以只允許某一方向的通訊關閉;
????? getpeername():返回流式套接字時對端peer信息;
????? gethostname():返回程序所運行的機器的主機名字;
????? gethostbyname():返回本機IP;
?? 第三部分編程題:
??? 1、從文件中讀取字符串數據,反序顯示并大小寫轉換。
??? 2、給定26字母表以及對應的密碼表,編程實現加密及解密功能。
? 第四部分思考題(正是傳說中的字典糾錯題):
???? 用戶在輸入英文單詞時經常出錯,現對其進行就錯。給定一個正確的英文詞典,考慮糾錯實現。1)指出思路。2)流程、算法難易程度及可能的改進策略。
一道算法題目答案
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);這一句是必需的,也是容易忽略的.如省掉這一句,則在某些情況下,會引起不希望的后果,雖然在大多數情況下沒有影響.請思考:設S='place', T='ace', V='face',則省掉i+=Strlen(V);運行時會出現什么結果? (無限遞歸face)
?
?
?
實現?
把中所有的刪掉?
?
把字符串中所有子串換成這個沒給函數原型?
?
搜索引擎的日志要記錄所有查詢串有一千萬條查詢不重復的不超過三百萬?
要統計最熱門的條查詢串內存字符串長?
主要解決思路具體用詞和原題不大一樣?
算法及其復雜度分析?
?
有字典設計一個英文拼寫糾正算法思想算法及復雜度改進?
?
等一些字符串的集合?
要求把交集不為空的集合并起來如上例會得到?
思想算法及復雜度改進轉載于:https://www.cnblogs.com/eastcowboy/archive/2009/08/18/1549308.html
總結
- 上一篇: 常用VS 快捷键盘
- 下一篇: EntitySpaces2009的开发文