C/C++程式設計師面試必看大綱
一:作業系統
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模式
提高篇:Linux
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的概念及用途,新增刪除結點的原理。
相關文章
- Java高階程式設計師面試大綱——備戰金三銀四跳槽季Java程式設計師面試
- 大廠大批招聘C/C++工程師,掌握了C/C++的程式設計師他不香嗎!C++工程師程式設計師
- 好程式設計師:Java程式設計師面試秘籍程式設計師Java面試
- 面試必備之樂觀鎖與悲觀鎖(程式設計師必看)面試程式設計師
- Android面試大綱Android面試
- Java面試大綱Java面試
- c++工程師面試問題C++工程師面試
- 大資料面試題整理-好程式設計師大資料面試題程式設計師
- 程式設計師程式碼面試指南程式設計師面試
- 程式設計師面試經驗程式設計師面試
- 前端 CSS 面試大綱前端CSS面試
- 前端程式設計師面試十八套路前端程式設計師面試
- IT程式設計師面試技巧有哪些?程式設計師面試
- 【程式設計師面試金典】20180801程式設計師面試
- 【程式設計師面試金典】洪水程式設計師面試
- 程式設計師菜鳥面試攻略程式設計師面試
- 好程式設計師Python培訓分享Python程式設計師面試技巧程式設計師Python面試
- C++核心程式設計C++程式設計
- 程式設計師50+Java面試題程式設計師Java面試題
- 程式設計師面試所需的軟技能程式設計師面試
- 智力題(程式設計師面試經典)程式設計師面試
- Java程式設計師面試題及解答Java程式設計師面試題
- JAVA程式設計師面試題庫分享Java程式設計師面試題
- 設計模式-大綱設計模式
- 設計模式大綱設計模式
- c/c++ 面試題C++面試題
- c/c++面試題C++面試題
- c/c++面試整理C++面試
- 準備程式設計師面試?你需要了解這 14 種程式設計面試模式程式設計師面試模式
- 程式設計師必看:免費好用的api程式設計師API
- 【面試攻略】C++面試-4399面試C++
- 5年程式設計師面試,常見面試問題解析程式設計師面試
- c++面試題C++面試題
- C++程式設計實現C++程式設計
- C++ 提高程式設計C++程式設計
- C++提高程式設計C++程式設計
- 大規模C++程式設計 -- 基礎知識C++程式設計
- C++入門程式設計----C++運算子(8)C++程式設計
- 程式設計師面試如何與HR談薪程式設計師面試