C C 一些常見的面試題(三)

2021-10-04 04:14:12 字數 1933 閱讀 6062

1 . 析構函式的特點?答:

2 . c語言中static關鍵字的用途?答:

3 . 區域性變臉是否可以和全域性變臉同名,如果不可以會出現什麼錯誤?如果可以,系統如何解決這種衝突發生?

答:可以同名。如果區域性變數與全域性變數同名,有區域性變數的作用域,使用區域性變數,其他作用域則使用全域性變數。

4 . 堆和棧的區別?

答:資料結構中的堆疊:

棧是一種先進後出的資料結構。

堆是一種特殊的完全二叉樹,每個結點都有乙個值,通常分為最大堆和最小堆。

5 . size of 和 strlen 的區別?

答:size of 是運算子,它的值在編譯之前就確定好了,計算出所建立物件的位元組大小。

strlen 是函式,程式執行時才開始計算,型別必須是字串,返回字串的長度,長度不包括』\0』

6 . 段錯誤的幾種常見情況?答:

7 . typedef 和#define 之間的區別?

答:typedef 在編譯時處理,它在自己的作用域中給已經存在的乙個變數起的乙個型別別名。

#define是預處理指令,在編譯處理時進行簡單的替換,不做正確性檢測。

8 . 指標和陣列之間的區別?

答:陣列名對應著一塊記憶體,其位址與容量在生命週期保持不變,只有陣列的內容可以改變只有陣列的內容可以改變。指標的可以隨時指向任意型別的記憶體塊,它的特徵是「可變」,所以我們用指標來操作動態記憶體。

當陣列作為函式的引數進行傳遞時,該陣列自動退化為同型別的指標。

9.簡單敘述一下如何判斷一條單向鍊錶有沒有環?

答:用 fast 和 slow 連個指標分別指向鍊錶的頭部,fast指標每次移動兩個節點, slow指標每次移動乙個節點,fast 先移動,如果fast指標先遇到null,則不存在環。如果fast == slow的情況下,則存在環。

10 . 建構函式和析構函式的異同點?

答:建構函式:

建構函式的名字與類名相同

建構函式可以有任意型別的引數,但不能有返回型別

定義物件時,編譯系統會自動呼叫建構函式

建構函式是特殊的成員函式,函式體可以在類體內,也可以在類體外

建構函式被宣告為公有函式,它是在定義物件的同時被呼叫

析構函式:

析構函式的名字與類名相同,並且前面要有波浪號

析構函式沒有引數,也沒有返回值,而且不能重紫,因此乙個類中只有乙個析構函式

撤銷物件時,系統會自動呼叫析構函式

析構函式可以用virtual ,建構函式不能是虛函式

析構函式是類的特殊成員函式

11 . 型別轉換建構函式是什麼?

答:自動呼叫型別匹配的建構函式自動將基本資料型別轉換為物件

12 . c++中explict關鍵字的作用?

答:explict 和建構函式一起使用,指明建構函式只能顯示使用,目的是為了防止不必要的隱式呼叫型別轉換建構函式

13 . 程序的掛起和程序的阻塞分別產生的條件是什麼,以及他們的操作區別是什麼?

答:程序的掛起:系統在超過一定的時間沒有任何動作

程序的阻塞:程序因等待某一件事情而暫時不能執行的狀態,此時處理機空閒,程序也無法使用。

14 . 簡單介紹程序的三態模型?

答:執行、就緒、阻塞

執行:當乙個程序在處理機上執行時,則該程式處於執行狀態 。處於此狀態的數目小於等於處理器的數目。單處理系統,處於執行狀態的程序只有乙個。

就緒:當乙個程序獲得除處理及以外的一切資源,一旦得到處理機就可以執行

阻塞:乙個程序正在等待某件事情發生而暫時停止執行

15 . 簡述殭屍程序是怎樣產生和系統對殭屍程序的處理機制?

答:殭屍程序:乙個已經終止但是其父程序尚未對其進行處理的程序

處理機制:如果父程序沒有sigchid訊號處理函式,那麼呼叫wait()或者waitpid()等待子程序的結束,又沒有顯示忽略該訊號,那麼將會保持殭屍的狀態,如果父程序結束,那麼init程序自動會接受這個子程序,他還是會被消除的

C C 一些常見的面試題(二)

1.為什麼拷貝建構函式account const account other 不能寫成account const account other 答 如果不傳入引用,函式傳參過程中系統會呼叫一次複製操作,即會呼叫一次拷貝建構函式,而該拷貝建構函式又是引數傳遞,就會呼叫拷貝建構函式,這樣就會進入乙個死迴圈...

C C 程式設計 一些面試題

1 如何判斷程式是c程式還是cpp程式 根據巨集 cplusplus include using namespace std void main 2 c 和c的不同 3 引用和指標的區別 4 int id sizeof int const int a 5 int b a int c 5 const ...

一些常見的演算法面試題

第一題 求乙個數字陣列中連續 從小到大 的且長度大於n的子陣列 public static void main string args int lenght 4 暫定義n的長度為4 int count 0 每次迴圈連續元素的個數 int i 0 int nums 0 迴圈次數 for i lengh...