C++面試題



親愛的讀者,這些C++面試題是專門為了讓您熟悉在C++面試中可能遇到的問題型別而設計的。根據我的經驗,優秀的面試官在面試過程中很少會計劃提出任何特定問題,通常問題會從該主題的一些基本概念開始,然後根據進一步的討論以及您的回答繼續進行。

面向物件程式設計系統。

類是一種藍圖,它反映了實體的屬性和操作。從技術上講,定義類就是設計使用者自定義資料型別。

類的例項稱為物件。

單繼承、多級繼承、多重繼承、層次繼承和混合繼承。

如果類成員是protected,則可以在繼承的類中訪問它。但是,在類外部,私有和受保護的成員都無法訪問。

將資料和作用於資料的函式繫結在一個實體(類)中的過程稱為封裝。

抽象是指隱藏內部實現並僅顯示必要細節。

繼承是將現有類的屬性獲取到新類中的過程。現有類稱為基類/父類,繼承的類稱為派生類/子類。

將變數宣告為volatile會指示編譯器該變數可以在外部更改。因此,避免了對變數引用的編譯器最佳化。

在函式定義之前使用關鍵字inline修飾的函式稱為行內函數。與普通函式相比,行內函數執行速度更快,因為編譯器將行內函數視為宏。

儲存類指定符號(如變數或函式)的生命週期或作用域。

以下是在C++中支援的儲存類

auto、static、extern、register和mutable

透過使用mutable儲存類說明符宣告常量類物件的成員變數可以更改。僅適用於類的非靜態和非常量成員變數。

淺複製逐位地將記憶體從一個物件複製到另一個物件。深複製逐欄位地將物件複製到另一個物件。深複製是透過複製建構函式或過載賦值運算子來實現的。

沒有函式體並且賦值為零的虛擬函式稱為純虛擬函式。

至少有一個純虛擬函式的類稱為抽象類。我們不能例項化抽象類。

引用變數是現有變數的別名。這意味著變數名和引用變數都指向相同的記憶體位置。因此,也可以使用引用變數來更新原始變數。

即使沒有為相應的類建立物件,靜態變數也存在。靜態成員變數在為相應類建立的所有物件之間共享一個公共記憶體。可以使用類名本身來引用靜態成員變數。

靜態成員函式可以在類名存在之前使用類名呼叫。它只能訪問類的靜態成員。

wchar_t

點(.)和箭頭(->)

否,定義類/結構體只是一個型別定義,不會為其分配記憶體。

bool是C++語言中引入的新原始資料型別。

定義幾個具有相同名稱但引數列表唯一的函式稱為函式過載。

為現有運算子定義一個針對類物件的新工作稱為運算子過載。

沒有,它是來自STL(標準模板庫)的類。

cin、cout、cerr和clog。

私有和受保護。

作用域解析運算子(::)

解構函式是類的成員函式,其名稱與類名相同,並在前面加上波浪號(~)符號。一旦物件失去作用域,它就會自動針對該物件執行。它不能被過載,唯一的形式是無引數的。

建構函式是類的成員函式,其名稱與類名相同,並且在為相應類建立物件時會自動執行。

如果程式設計師沒有提供建構函式,則每個類都具有編譯器提供的建構函式,稱為預設建構函式。程式設計師提供的沒有引數的建構函式稱為預設建構函式。在這種情況下,編譯器不會提供建構函式。

“new”是可用於此目的的運算子。

“delete”運算子用於釋放使用“new”運算子建立的動態記憶體。

是的,因為C是C++的子集,所以我們可以在C++中使用C的所有函式。

否,我們需要為此使用C語言的free()。

不是類成員但仍然可以訪問類所有成員的函式稱為友元函式。為了實現這一點,我們需要在所需的類中使用關鍵字“friend”進行宣告。

複製建構函式是將相同類物件的引用作為引數的建構函式。在建立物件時,如果用同一類的另一個物件初始化該物件,則會自動呼叫它。

C++確實支援異常處理。try、catch和throw是用於此目的的關鍵字。

this是編譯器的指標變數,它始終儲存當前活動物件的地址。

預設情況下,struct的成員是公有的,而預設情況下,類的成員是私有的。

是的。

作用域僅在塊內適用的變數稱為塊作用域變數。此外,可以在C++中的塊內的任何位置宣告變數。

如果檔案已存在,則在開啟檔案之前會截斷其內容。

作用域解析運算子用於

  • 解析全域性變數的作用域。
  • 如果函式在類外部定義,則將函式定義與類關聯。

名稱空間是程式碼的邏輯劃分,可用於透過將識別符號放在不同的名稱空間下解決識別符號的名稱衝突。

從命令列/控制檯執行時傳送到main()函式的引數/引數稱為命令列引數。傳送的所有引數都僅為字串。

模板類是一種泛型類。關鍵字 template 可用於定義類模板。

帶有省略號的 catch 塊如下所示

catch(…) 
{
}

預設情況下,函式的每個區域性變數都是自動的 (auto)。在下面的函式中,變數 'i' 和 'j' 都是自動變數。

void f() 
{
   int i;
  
   auto int j;
}

注意 - 全域性變數不能是自動變數。

靜態區域性變數在函式呼叫之間保留其值,預設值為 0。如果該函式被呼叫三次,則以下函式將列印 1 2 3。

void f() 
{ 
   static int i; 
   
   ++i; 
   printf(“%d “,i); 
}

如果全域性變數是靜態的,則其可見性僅限於相同的原始碼。

用於解析全域性符號的作用域。

#include <iostream>

using namespace std;	
main() {
   extern int i;
      
   cout<<i<<endl;
}
int i = 20;

陣列的起始地址稱為陣列的基地址。

如果某個變數使用頻率最高,則應使用 register 儲存說明符宣告它,然後編譯器可能會為其儲存分配 CPU 暫存器,以加快變數的查詢速度。

是的,可以,但無法執行,因為執行需要 main() 函式定義。

每個區域性變數預設情況下都是 auto 變數,儲存在棧記憶體中。

包含至少一個其他類型別成員變數的類稱為容器類。

C++ 程式由各種標記組成,標記可以是關鍵字、識別符號、常量、字串文字或符號。

預處理器是編譯器的一條指令,指示它在實際編譯過程開始之前執行某些操作。

在執行程式時傳遞給 main() 函式的引數稱為命令列引數。這些引數始終是字串,儲存在函式的第二個引數(下面為 args)中,該引數是字元指標陣列。第一個引數表示引數的數量(下面為 count),並由作業系統自動更新。

main( int count, char *args[]) {
}
  • 值傳遞 - 我們僅將值作為引數傳送給函式。如果我們不希望實際引數被形式引數修改,而只是使用它們,則選擇此方法。

  • 地址傳遞 - 我們傳送實際引數的地址而不是值。如果我們希望實際引數被形式引數修改,則選擇此方法。

  • 引用傳遞 - 實際引數使用 C++ 新的引用變數作為形式引數接收。如果我們希望實際引數被形式引數修改,則選擇此方法。

錯誤,模運算子 (%) 的任何一個運算元都不能是實數,這是無效的。

使用選項 –lm,例如 > g++ –lm <file.cpp>

不可以,沒有此類規定。

Bjarne Stroustrup。

sizeof

我們可以對全域性變數的作用域應用作用域解析運算子 (::)。

指標上僅允許兩種操作

  • 比較 ii) 加法/減法(不包括 void 指標)

函式自己呼叫自己稱為遞迴。

程式名稱。

理想情況下為 32 個字元,並且還取決於實現。

預設情況下,函式按值呼叫。

公有、私有和保護

Delete[] 用於釋放使用 new[] 分配的陣列分配的記憶體,而 delete 用於釋放使用 new 分配的一塊記憶體。

不一定,包含至少一個純虛擬函式的類也是抽象類。

不可以,這將導致錯誤,因為編譯器無法執行轉換。

程式將突然退出。

不,異常可以處理,而程式無法解決錯誤。

在基類和派生類中定義具有相同簽名和名稱的函式,其中基類的函式是虛擬函式。

seekg()

seekp()

不,只有類成員變數決定相應類物件的大小。

我們可以建立一個空類,並且物件的大小為 1。

C++ 定義的預設名稱空間。

標準模板庫

cout 是 ostream 類的物件。流“cout”預設連線到控制檯輸出裝置。

cin 是 istream 類的物件。流“cin”預設連線到控制檯輸入裝置。

它用於指定正在使用的名稱空間。

可以使用箭頭 (->) 運算子。

如果標頭檔案包含在 < > 中,則編譯器僅在內建包含路徑中搜索該特定標頭檔案。如果標頭檔案包含在 “ “ 中,則編譯器首先在當前工作目錄中搜索該特定標頭檔案,如果未找到,則在內建包含路徑中搜索。

S++,因為它在內部是單個機器指令 (INC)。

在呼叫端傳送給函式的引數稱為實際引數,而在函式定義的接收端稱為形式引數。

宣告將型別與變數關聯,而定義為變數賦予值。

goto。

不,它包含無效的八進位制數字。

它將用於取消定義現有的宏定義。

不可以。

虛解構函式確保物件的資源以物件構造的反序釋放,相對於繼承的物件。

物件以其建立的反序銷燬。

透過在目標類中放置以關鍵字“friend”為字首的類宣告,類成員可以獲得對其他類成員的訪問許可權。

下一步是什麼?

接下來,您可以回顧一下您之前完成的與該主題相關的作業,並確保您能夠自信地談論它們。如果您是應屆畢業生,面試官不會期望您能回答非常複雜的問題,而是您必須使自己的基礎概念非常牢固。

其次,如果您無法回答一些問題,實際上並不重要,重要的是您回答的任何問題都必須充滿信心。因此,在面試過程中要保持自信。我們在 tutorialspoint 祝您面試順利,並祝您未來的工作一切順利。乾杯 :-)

cpp_questions_answers.htm
廣告