c 面試基本題

才智咖 人氣:4.26K

1、佇列和棧有什麼區別?

c 面試基本題

答:佇列先進先出,棧後進先出

2、不能做 switch()的引數型別

答 :switch 的引數不能為實型。

3、區域性變數能否和全域性變數重名?

答:能,區域性會遮蔽全域性。要用全域性變數,需要使用"::"

區域性變數可以與全域性變數同名,在函式內引用這個變數時,會用到同名的區域性變數,而不會用到全域性變數。對於有些編譯器而言,在同一個函式內可以定義多個同名的區域性變數,比如在兩個迴圈體內都定義一個同名的區域性變數,而那個區域性變數的作用域就在那個迴圈體內

4、如何引用一個已經定義過的全域性變數?

答 、可以用引用標頭檔案的方式,也可以用 extern 關鍵字,如果用引用標頭檔案方式來引用某個在標頭檔案中宣告的全域性變數,假定你將那個變數寫錯了,那麼在編譯期間會報錯,如果你用 extern 方式引用時,假定你犯了同樣的錯誤,那麼在編譯期間不會報錯,而在連線期間報錯。

5、.h 標頭檔案中的 ifndef/define/endif 的作用?

答:防止該標頭檔案被重複引用。

6、#i nclude 與 #i nclude "file.h"的區別?

答:前者是從 Standard Library 的路徑尋找和引用 file.h,而後者是從當前工作路徑搜尋並引用 file.h。

7、描述實時系統的基本特性

答 :在特定時間內完成特定的任務,實時性與可靠性。

8、全域性變數和區域性變數在記憶體中是否有區別?如果有,是什麼區別?

答 :全域性變數儲存在靜態資料區,區域性變數在堆疊中。

9、什麼是平衡二元樹?

答 :左右子樹都是平衡二元樹 且左右子樹的深度差值的絕對值不大於 1。

10、關鍵字 static 的作用是什麼?

這個簡單的問題很少有人能回答完全。在 C 語言中,關鍵字 static 有三個明顯的作用:

1). 在函式體,一個被宣告為靜態的.變數在這一函式被呼叫過程中維持其值不變。

2). 在模組內(但在函式體外),一個被宣告為靜態的變數可以被模組內所用函式訪問,但不能被模組外其它函式訪問。它是一個本地的全域性變數。

3). 在模組內,一個被宣告為靜態的函式只可被這一模組內的其它函式呼叫。那就是,這個函式被限制在宣告它的模組的本地範圍內使用。

大多數應試者能正確回答第一部分,一部分能正確回答第二部分,同是很少的人能懂得第三部分。這是一個應試者的嚴重的缺點,因為他顯然不懂得本地化資料和程式碼範圍的好處和重要性。

11、“引用”與指標的區別是什麼?

答 、1) 引用必須被初始化,指標不必。

2) 引用初始化以後不能被改變,指標可以改變所指的物件。

3) 不存在指向空值的引用,但是存在指向空值的指標。指標通過某個指標變數指向一個物件後,對它所指向的變數間接操作。程式中使用指標,程式的可讀性差;而引用本身就是目標變數的別名,對引用的操作就是對目標變數的操作。

流操作符<<和>>、賦值操作符=的返回值、拷貝建構函式的引數、賦值操作符=的引數、其它情況都推薦使用引用

12、堆疊溢位一般是由什麼原因導致的?

答 :1.沒有回收垃圾資源

2.層次太深的遞迴呼叫

TAGS:面試