1.冒泡排序編程
1 int a[5] = {96,73,12,46,98}; 2 int i = 0,j = 0,t = 0; 3 4 for (j = 0;j < 4;j++) { 5 for (i = 0;i < 4 - j;i++) { 6 if (a[i] > a[i+1]) { 7 t = a[i]; 8 a[i] = a[i+1]; 9 a[i+1] = t; 10 } 11 } 12 }
2.操做系統中,進程能夠分爲(系統進程)和(用戶進程)兩類安全
3.ISO七層模型是什麼?TCP/UDP是屬於哪一層?TCP/UDP有何優缺點?網絡
- 物理層,數據鏈路層,網絡層,傳輸層,會話層,表示層,應用層數據結構
- TCP/UDP屬於傳輸層併發
- TCP、UDP優缺點分析ide
* TCP:全雙工,點對點的鏈接;提供三大服務:可靠數據傳輸,擁塞控制,流量控制函數
* UDP:無需創建鏈接,分組首部開銷小,應用層控制數據什麼時候發送更爲精細。性能
4.字符串拷貝有sprintf, strcpy及memcpy函數,請問其區別,哪一個效率高?測試
- memcpy一次讀取全部源數據,然後一次性傳到目標地址,效率最高spa
- strcpy須要逐個判斷字符串是否結束,一字節一字節讀取,比上述慢
- sprintf須要檢測輸出格式的步驟,因此會更慢
5.C++語言中類成員函數的重載、覆蓋和隱藏的區別?
- 重寫和重載主要有如下幾點區別
* 範圍區別:被重寫的和重寫函數在兩個類中,而重載和被重載的函數在同一個類中
* 參數區別:被重寫函數和重寫函數逇參數列表必定相同,而重載函數參數列表必定不一樣
* virtual的區別:重寫的基類中被重寫的函數必需要有virtual修飾,而重載函數均可以
- 隱藏和重寫,重載的區別
* 範圍區別:隱藏和重寫同樣,不在同一個類中
* 參數區別:當參數列表不一樣時,不管基類是否有virtual,基類的函數都會被隱藏,而不是重寫。
6.指針和引用有什麼區別?傳引用比傳指針更安全,爲何?
- 相同點:
都是地址概念。指針內容爲內存地址,而引用則是某塊內存的別名
- 不一樣點:
* 指針是一個實體,而引用僅是別名
* 引用只能在定義時被初始化一次,以後不可變。而指針能夠改變
* 引用不能爲空,而指針能夠爲空
* sizeof,自增運算符等,其意義不一樣
- 安全性:引用比指針多了類型檢查。
7.進程同步機制及進程間通訊途徑?
- 進程同步:信號量
- 進程間通訊方式:管道,信號,系統IPC(消息隊列、信號量、共享內存),SOCKET
8.靜態連接和動態連接的優缺點?
- 靜態連接庫優缺點:
* 代碼裝載速度快,執行速度比動態連接快
* 只須要在開發者電腦保證靜態庫的存在便可,程序發佈後無需靜態庫
* 代碼體積大
* 內存中可能存在多份相同指令,形成空間浪費
- 動態連接庫優勢:
* 節省內存空間
* 庫文件和可執行文件相互獨立,當接口不改變狀況下,更新庫文件對可執行文件不影響
* 節省磁盤空間
* 程序運行時,依賴動態庫文件
9.談談對進程,程序和線程的理解
- 進程:做爲操做系統的最小執行單元,當程序運行時,操做系統會分配一個進程的數據結構,同時分配4GB(32位機)的資源空間,包括系統環境變量區,堆區,棧區,數據區,文本區。然後期計算機的發展,爲了提升CPU的利用率,將操做系統調度單元進一步細化爲線程,即同一個進程包含多個線程時,就會有併發問題出現。而線程,必須依賴進程空間而存在,即一個可執行程序的執行,至少應該會分配到一個進程,一個線程資源。
- 程序:映像文件在存儲介質上的一種組織形式,由域組成。域分爲加載域和運行域,運行域通常在內存地址中,而加載域在硬盤中存在。域最多由三個輸出段組成,輸出端包含可讀寫代碼段RW和只讀代碼段RO以及ZI。
10.簡述隊列,棧,堆的異同
隊列和棧都是線性存儲結構,可是二者的插入和刪除數據的操做不一樣,隊列是「先進先出」,棧是「後進後出」,堆區是「順序隨意」
11.談談對編程規範的理解或認識:
編程規範可總結爲:程序的可行性,可讀性,可移植性以及可測試性
12.寫一個「標準」宏MIN
#define MIN(a, b) ((a) <= (b)? (a):(b))
13.typedef和define有什麼區別?
- 用法不一樣
- 執行時間不一樣:typedef是編譯過程的一部分,帶類型檢查,define在預編譯部分
- 做用域不一樣
- 對指針的操做不一樣
14.static做用?
static在C中主要用於定義全局靜態變量,定義局部靜態變量,定義靜態函數。
15.如何避免「野指針」?
- 指針變量聲明沒有被初始化
- 指針p在被free以後,沒有置爲NULL
- 指針操做超越了變量的做用範圍
16.中斷處理函數:
- 不能有返回值
- 不能傳遞參數
- 避免作浮點運算
- pirntf常常有重入和性能上的問題
17.構造函數是否爲虛函數?
不能。而且不能在構造函數中調用虛函數,由於這樣執行的是父類的對應函數,由於其自己尚未構造好。析構函數能夠是虛函數。