面試知識:操作系統、計算機網絡、設計模式、Linux編程,數據結構總結

感謝IT面試羣 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的概念及用途,添加刪除結點的原理。


轉載:http://www.itmian4.com/forum.php?mod=viewthread&tid=3614

發佈了12 篇原創文章 · 獲贊 7 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章