[綜合面試] 牛人整理分享的面試知識:作業系統、計算機網路、設計模式、Linux程式設計,資料結構總結

jimmy1357發表於2014-04-12
感謝面試群 S-北京-陳磊 的整理分享。


基礎篇:作業系統、計算機網路、設計模式


一:作業系統
1. 程式的有哪幾種狀態,狀態轉換圖,及導致轉換的事件。
2. 程式與執行緒的區別。
3. 程式通訊的幾種方式。
4. 執行緒同步幾種方式。(一定要會寫生產者、消費者問題,完全消化理解)
5. 執行緒的實現方式. (也就是使用者執行緒與核心執行緒的區別)
6. 使用者態和核心態的區別。
7. 使用者棧和核心棧的區別。
8. 記憶體池、程式池、執行緒池。(c++程式設計師必須掌握)
9. 死鎖的概念,導致死鎖的原因.
10. 導致死鎖的四個必要條件。
11. 處理死鎖的四個方式。
12. 預防死鎖的方法、避免死鎖的方法。
13. 程式排程演算法。(週轉時間 =  程式結束時間 -- 開始服務時間、帶權週轉時間=  週轉時間 /  要求服務時間)
14. Windows記憶體管理的方式(塊式、頁式、段式、段頁式).
15. 記憶體連續分配方式採用的幾種演算法及各自優劣。
16. 動態連結及靜態連結.
17. 基本分頁、請求分頁儲存管理方式。
18. 基本分段、請求分段儲存管理方式。
19. 分段分頁方式的比較各自優缺點。
20. 幾種頁面置換演算法,會算所需換頁數。(LRU用程式如何實現?)
21. 虛擬記憶體的定義及實現方式。
22. 作業系統的四個特性。
23. DMA。
24. Spooling。
25. 外存分配的幾種方式,及各種優劣。
二:計算機網路
1. 電路交換與分組交換的區別?優劣對比。
2. OSI有哪幾層,會畫出來,知道主要幾層的各自作用。
3. TCP/IP有哪幾層,會畫出來,知道所有層數的作用,會列舉各層主要的協議名稱。
4. 硬體(MAC)地址的概念及作用。
5. ARP協議的用途 及演算法、在哪一層上會使用arp ?
6. CRC冗餘校驗演算法,反碼和檢驗演算法。
7. 如何實現透明傳輸。
8. 知道各個層使用的是哪個資料交換裝置。(交換機、路由器、閘道器)
9. 路由表的內容。
10. 分組轉發演算法。
11. IP報文的格式,格式的各個欄位的含義要理解。
12.MTU的概念,啥叫路徑MTU? MTU發現機制,TraceRoute(瞭解)。
13.RIP協議的概念及演算法。
14.ICMP協議的主要功能。
15.組播和廣播的概念,IGMP的用途。(環回地址、廣播地址)
16.Ping協議的實現原理,ping 命令格式。
17. 子網劃分的概念,子網掩碼。
18. IP地址的分類,如何劃分的,及會計算各類地址支援的主機數。
19.DNS的概念,用途,DNS查詢的實現演算法。
20. TCP與UDP的概念,相互的區別及優劣。
21.UDP報文的格式,欄位的意義。
22. TCP 報文的格式,欄位的意義。
23.TCP通過哪些措施,保證傳輸可靠?
24. 三次握手,四次斷開過程。
25. TIME_WAIT狀態的概念及意義。
26.滑動視窗協議 與停止等待協議的區別。
27. TCP的流量控制和擁塞控制實現原理(會畫擁塞控制的典型圖)。
28.TCP的快速重傳與快速恢復演算法。
29.TFTP 與 FTP的區別。
30.阻塞方式和非阻塞方式,阻塞connect與非阻塞connect。(比較難,有興趣可以瞭解)
31. HTTP基本格式。(java程式設計師必須掌握)
三:設計模式
1. 各種常用模式的用途,使用方法(類圖)。
2. 單例模式的雙重檢查實現。
3. MVC模式


提高篇:WIN32、MFC與Linux


一: WIN32
1. Win32應用程式的基本型別.
2. 建立win32視窗程式的幾個步驟,及使用到的函式。
3. nmake 與 makefile。
4. 有哪些字符集? Win32對於各種字符集如何進行相容及轉換? (wchar_t、TCHAR、TEXT() )。
5. 怎麼建立一個子視窗?在哪進行設定?
6. 視窗類的分類,如何建立一個應用程式全域性視窗類。
7. Win32視窗程式執行機制與控制檯程式的執行機制有何區別?
8. Getmessage函式的作用,與Peekmessage函式的區別。
9. 傳送WM_QUIT訊息使程式終止的內部過程。
11. TranslateMessage及 DispatchMessage的作用。
12. SendMessage與PostMessage的區別。
13. Win32訊息機制獲取訊息的過程(先檢視什麼訊息?再檢視什麼訊息?)
14. 知道有哪幾類主要的訊息。(WM_CREATE, WM_DESTROY, WM_SIZE, WM_SYSCOMMAND,  WM_COMMAND,  WM_PAINT,  滑鼠訊息, 鍵盤訊息)。
15. 定時器如何使用。
16. 使用者自定義訊息如何定義。
17. 建立選單、設定選單的函式,在哪處理選單命令的訊息。
18. 加速鍵如何使用?
19. GDI繪圖物件,使用的步驟,及函式。
20. 使用點陣圖的步驟及用到的主要函式。
21. 可用於文字繪製的API函式。
22. 有模式對話方塊與無模式對話方塊的區別,建立步驟。收到的建立訊息是什麼?
23. 子控制元件和父視窗通過什麼進行通訊? 父視窗在哪裡處理子視窗傳送的訊息?
24. 有哪些常見的子控制元件?(靜態框、編輯框、按鈕、listbox、comboBox、滾動條)25. 什麼樣的控制元件支援自繪製?
26. 動態庫與靜態庫的區別。
27. Win32裡面怎樣用靜態庫? C++程式在引用c的靜態庫時,需要注意什麼?
28. Win32裡面動態庫有哪幾種匯出方式,有哪幾種匯入方式?(注意c++的匯出方式)
29. Win32裡面檔案開啟和關閉的API。
30. Windows地址空間的劃分。
31. Windows 記憶體使用的幾種方式及相應的函式(虛擬記憶體、堆記憶體、棧記憶體)。
32. Malloc內部呼叫A函式,A函式呼叫B函式。A和B分別是什麼?
33. 記憶體對映檔案的作用。主要函式。
34. 建立程式和開啟程式用什麼函式? 有什麼區別?
35. 建立執行緒用什麼函式?
36. Waitforsingleobject與Waitformultiobjects的區別。Waitforsingleobject的第二個引數為0表示什麼意思?37. 關閉執行緒和關閉程式的函式分別是什麼?
38. 執行緒區域性儲存(TLS)的意義,如何指定一個變數的TLS屬性。
39. Win32執行緒同步提供的方式,及主要函式為什麼?
40. 提供的同步措施中哪些是核心物件? 試比較互斥量和臨界區。


二:MFC
1. MFC包含哪幾類程式? 其中MFC應用程式又包含哪幾類?
2. MFC的中的大多數類都繼承自哪個類?
3. MFC主要要用到哪幾個類?及其各個類的作用。
4. MFC中有哪6類核心機制?Cobject中封裝了哪些機制?
5. 在哪個類的什麼函式中進行MFC程式初始化? 相當於main功能的函式。
6. MFC應用程式的啟動機制的實現。(幾個步驟及相關函式)
7. 視窗的建立及視窗處理函式機制的實現。(幾個步驟及相關用到函式)
8. 訊息對映機制的原理及實現。巨集。(查詢訊息處理函式的幾個步驟及其函式)
9. MFC的訊息分類。自注冊訊息用什麼函式進行註冊?訊息對映巨集是什麼?
10. MFC選單、工具欄、狀態列所用的類是什麼?
11. 怎麼定義一個檢視視窗?
12. 劃分視窗使用什麼類? 劃分視窗有哪兩類,有什麼區別?
13. 執行時類資訊 機制的巨集,及原理。CRuntimeClass的內容,isKindOf實現方法。
14. 動態建立 機制的巨集,及實現。與執行時類資訊在內容新增上的區別?
15. 訊息的派發會經過哪幾個類?一般在哪個類裡進行處理?SetActiveView的作用。
16. 單文件、多文件模板類是什麼? 儲存模板類用什麼函式?新建模板用什麼函式?
17. 單文件檢視的建立過程及所用到的相關函式。
18. MFC繪圖有哪幾類DC?各自的類名,及區別。
19. MFC有哪幾類繪圖物件?各自的類名。
20. MFC有哪幾類資料集合類?CMAP的底層實現?
21. MFC的檔案類是什麼?檔案查詢類是什麼?
22. 序列化機制 的巨集,怎麼使用? 執行>>和<<時進行的內部操作及其相應函式。
23. MFC的對話方塊的種類,各自怎麼使用?及相關函式。
24. 定義對話方塊資料交換的步驟,及使用方法,實現原理。
25. 通用對話方塊有哪些,試舉例。
26. MFC常用的通用控制元件有哪些?舉出類名。
27. MFC的動態庫有哪幾種型別?擴充套件庫一般用來做什麼?
28. MFC的執行緒有哪幾類? 相互有什麼區別?各自的建立方法是什麼?
29. VC環境下可以使用哪幾類socket? 其中MFC的socket類 有哪幾種,各自區別?類名是什麼?用什麼函式初始化MFC的socket庫。








三:Linux基本命令
1. 絕對路徑用什麼符號表示?當前目錄、上層目錄用什麼表示?主目錄用什麼表示? 切換目錄用什麼命令?
2. 怎麼檢視當前程式?怎麼執行退出?怎麼檢視當前路徑?
3. 怎麼清屏?怎麼退出當前命令?怎麼執行睡眠?怎麼檢視當前使用者id?檢視指定幫助用什麼命令?
4. Ls 命令執行什麼功能? 可以帶哪些引數,有什麼區別?
5. 建立軟連結(快捷方式),以及硬連結的命令。
6. 目錄建立用什麼命令?建立檔案用什麼命令?複製檔案用什麼命令?
7. 檔案許可權修改用什麼命令?格式是怎麼樣的?
8. 檢視檔案內容有哪些命令可以使用?
9. 隨意寫檔案命令?怎麼向螢幕輸出帶空格的字串,比如”hello  world”?
10. 終端是哪個資料夾下的哪個檔案?黑洞檔案是哪個資料夾下的哪個命令?
11. 移動檔案用哪個命令?改名用哪個命令?
12. 複製檔案用哪個命令?如果需要連同資料夾一塊複製呢?如何需要有提示功能呢?
13. 刪除檔案用哪個命令?如果需要連目錄及目錄下檔案一塊刪除呢?刪除空資料夾用什麼命令?
14. Linux下命令有哪幾種可使用的萬用字元?分別代表什麼含義?
15. 用什麼命令對一個檔案的內容進行統計?(行號、單詞數、位元組數)
16. Grep命令有什麼用? 如何忽略大小寫? 如何查詢不含該串的行?
17. Linux中程式有哪幾種狀態?在ps顯示出來的資訊中,分別用什麼符號表示的?
18. 怎麼使一個命令在後臺執行?
19. 利用ps怎麼顯示所有的程式? 怎麼利用ps檢視指定程式的資訊?
20. 哪個命令專門用來檢視後臺任務?
21. 把後臺任務調到前臺執行使用什麼命令?把停下的後臺任務在後臺執行起來用什麼命令?
22. 終止程式用什麼命令? 帶什麼引數?
23. 怎麼檢視系統支援的所有訊號?
24. 搜尋檔案用什麼命令? 格式是怎麼樣的?
25. 檢視當前誰在使用該主機用什麼命令? 查詢自己所在的終端資訊用什麼命令?
26. 使用什麼命令檢視用過的命令列表?
27. 使用什麼命令檢視磁碟使用空間? 空閒空間呢?
28. 使用什麼命令檢視網路是否連通?
29. 使用什麼命令檢視ip地址及介面資訊?
30. 檢視各類環境變數用什麼命令?
31. 通過什麼命令指定命令提示符?
32. 查詢命令的可執行檔案是去哪查詢的? 怎麼對其進行設定及新增?
33. 通過什麼命令查詢執行命令?34. 怎麼對命令進行取別名?


四:Linux程式設計
1. 列舉Linux記憶體管理相關的幾個函式,各自有什麼功能?
2. GCC只編譯的選項是什麼?只進行預處理的選項是什麼?在命令列定義巨集的選項是什麼?
3. Linux靜態庫的使用,怎麼建立一個靜態庫? 怎麼使用一個靜態庫?靜態庫檔案的字尾名是什麼?靜態庫的命名規範。
4. nm 工具的作用,ldd工具的作用。
5. Linux動態庫的使用,怎麼建立一個動態庫? 動態庫檔案的字尾名是什麼?怎麼使用一個動態庫?動態庫的命名規範? 系統預設的動態庫的查詢路徑?動態庫顯示連線所使用的系統庫是什麼?
6. Linux下make 與makefile。用什麼引數指定makefile檔案? 什麼是預設的makefile檔案。
7. 在哪個資料夾下存有程式執行時的所有資訊?
8. 每個程式預設開啟哪三個檔案裝置?
9. 操作檔案描述符的讀寫函式是什麼?開啟檔案描述符以及關閉檔案描述符的函式?
10. Fcntl函式主要的幾個作用。
11. 建立程式的幾個函式,及各自區別。
12. 父程式先結束,子程式會變為? 子程式先結束,子程式會變為?
13. 怎麼使父程式回收子程式? 相關的幾個函式。
14. 子程式在建立時與父程式的記憶體資源的複製問題。
15. 中斷訊號、終止訊號、定時器訊號的巨集是什麼?
16. 在程式中註冊訊號和傳送訊號用什麼函式?
17. 訊號的可靠與不可靠的含義。哪些訊號是可靠的?哪些訊號是不可靠的?
18. 訊號遮蔽用什麼函式? SigSuspend的作用? Sigpending的作用?
19. 訊號處理函式處理訊號時是否會被訊號中斷?
20. 最新版本的訊號傳送與處理函式?與老版本的傳送與資料函式有什麼區別?
21. Linux下程式有哪些通訊方式(IPC)?
22. TCP伺服器程式設計模型。
23. UDP伺服器程式設計模型。
24. TCP程式設計特徵,由於每次不定長資料到達,則一般使用什麼選項?
25. Selected模型是什麼? 相比而言多程式實現方式有什麼區別?Selected、epoll模型、poll模型的區別。
26. 常用的socket選項有哪些?利用哪個函式來設定socket選項?
27. 怎麼傳送和設定帶外(OOB)資料?
28. Linux 下多執行緒的庫是什麼? 利用哪個函式建立執行緒?利用哪個函式強制結束執行緒?主執行緒等待子執行緒結束時使用的函式?
29. 執行緒怎樣在被迫退出時能做一些善後處理?以及怎麼用linux特有的方式處理?


演算法篇:演算法與資料結構
一:演算法
1. 演算法的幾個特徵是什麼。
2. 演算法複雜性的定義。大O、θ、、小o分別表示的含義。
3. 遞迴演算法的定義、遞迴演算法的兩要素。
4. 分治演算法的思想,經典的分治演算法(全排列、二分搜尋、歸併排序、快速排序、線性時間選擇、最接近點對問題)。
5. 動態規劃演算法解題框架,動態規劃演算法的兩個要素是什麼?備忘錄方法是什麼?
6. 經典的動態規劃問題(矩陣連乘問題、最長公共子序列問題、0-1揹包問題)。
7. 貪心演算法的思想,貪心演算法的兩個要素。
8. 經典的貪心問題(活動安排問題、揹包問題、裝載問題、哈夫曼編碼、單源最短路徑、最小生成樹問題)。9. 回溯法的思想,回溯法中有哪兩種典型的模型。
10. 經典的回溯演算法(n後問題、0-1揹包問題、旅行售貨商問題)。
11. 分支限界法思想,有哪兩種分支限界法。
12. 經典的分支限界演算法(0-1揹包問題、旅行售貨商問題)。


二:資料結構
1. 資料結構的定義。
2. 棧的兩個應用:括號匹配和表示式的計算。是怎麼應用的?表示式計算用的是哪種表達方式?有什麼好處?
3. 字串匹配演算法:樸素的匹配演算法、KMP演算法。
4. 二叉樹前序、中序、後序遞迴遍歷演算法。二叉樹前序非遞迴遍歷演算法。
5. 堆,建堆演算法,堆的插入和刪除演算法,堆排序。
6. 雜湊。雜湊函式的有哪些種?餘數的取法? 處理衝突的方法? 閉雜湊方法有哪些?
7. 二叉搜尋樹的搜尋、插入、刪除。時間複雜度。
8. 二叉平衡樹的插入結點的原理,有哪幾種旋轉方式?分別適用於哪種情況。分析二叉平衡樹的時間複雜度。
9. 紅黑樹的定義,紅黑樹的效能分析和與二叉平衡樹的比較。
10. 圖有哪些儲存表示。
11. 連結串列插入排序、連結串列歸併排序。
12. 常見的有哪幾種排序演算法,試比較其時間複雜度,以及是否穩定,及各自使用的情形。
13. 常用分配排序有哪幾種? 基數排序的定義,分類及原理。
14. 外部排序的過程。
15. B樹、B+樹、Trie的概念及用途,新增刪除結點的原理。

相關文章