C 面試經常涉及的問題

2022-12-07 13:51:06 字數 4256 閱讀 1584

switch後面括號內表示式,是否什麼型別都可以?

就三種:整形、字元形、列舉.

試題:總共有13個工程師,其中理想且內向的有5人,理性或深沉的8人,單純且內向的5人,理性深沉但不內向的3人。問:理性、深沉且內向的總幾人 3人(自算結果)

關係 delete會呼叫物件的析構函式,和new對應free只會釋放記憶體,new呼叫建構函式。malloc與free是c++/c語言的標準庫函式,new/delete是c++的運算子。它們都可用於申請動態記憶體和釋放記憶體。

對於非內部資料型別的物件而言,光用maloc/free無法滿足動態物件的要求。物件在建立的同時要自動執行建構函式,物件在消亡之前要自動執行析構函式。

2.與 delete 區別

delete只會呼叫一次析構函式,而delete會呼叫每乙個成員的析構函式。

3.有哪些性質(物件導向特點)

封裝,繼承和多型。

4.子類析構時要呼叫父類的析構函式嗎?

析構函式呼叫的次序是先派生類的析構後基類的析構,也就是說在基類的的析構呼叫的時候,派生類的資訊已經全部銷毀了。定義乙個物件時先呼叫基類的建構函式、然後呼叫派生類的建構函式;析構的時候恰好相反:先呼叫派生類的析構函式、然後呼叫基類的析構函式

16. c++中的class和struct的區別

從語法上,在c++中(只討論c++中)。class和struct做型別定義時只有兩點區別:

(一)預設繼承許可權。如果不明確指定,來自class的繼承按照private繼承處理,來自struct的繼承按照public繼承處理;

(二)成員的預設訪問許可權。class的成員預設是private許可權,struct預設是public許可權。

除了這兩點,class和struct基本就是乙個東西。語法上沒有任何其它區別。

求下面函式的返回值(微軟)

int func(x)

return countx; }

假定x = 9999。 答案:8

思路:將x轉化為2進製,看含有的1的個數。

5:什麼是「引用」?申明和使用「引用」要注意哪些問題?

引用就是某個目標變數的「別名」(alias),對應用的操作與對變數直接操作效果完全相同。申明乙個引用的時候,切記要對其進行初始化。宣告乙個引用,不是新定義了乙個變數,它只表示該引用名是目標變數名的乙個別名,它本身不是一種資料型別,因此引用本身不佔儲存單元,系統也不給引用分配儲存單元。

6:「引用」與多型的關係?

引用是除指標外另乙個可以產生多型效果的手段。這意味著,乙個基類的引用可以指向它的派生類例項

a)#include <>

union

a;void main()

答案:266 (低位低位址,高位高位址,記憶體占用情況是ox010a)

b)main()

union

定義乙個聯合*/

int i;

struct

在聯合中定義乙個結構*/

char first;

char second;

half;

number;

聯合成員賦值*/

printf("%c%cn",

'a'; /*聯合中結構成員賦值*/

'b';

printf("%xn",

getch();

}答案: ab (0x41對應'a',是低位;ox42對應'b',是高位)

6261 (和共用一塊位址空間)

9:多型的作用?

主要是兩個:

1. 隱藏實現細節,使得**能夠模組化;擴充套件**模組,實現**重用;

2. 介面重用:為了類在繼承和派生的時候,保證使用家族中任一類的例項的某一屬性時的正確呼叫。

12. 描述記憶體分配方式以及它們的區別?

1) 從靜態儲存區域分配。內存在程式編譯的時候就已經分配好,這塊內存在程式的整個執行期間都存在。例如全域性變數,static 變數。

2) 在棧上建立。在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束時這些儲存單元自動被釋放。棧記憶體分配運算內置於處理器的指令集。

3) 從堆上分配,亦稱動態記憶體分配。程式在執行的時候用malloc 或new 申請任意多少的記憶體,程式設計師自己負責在何時用free 或delete 釋放記憶體。動態記憶體的生存期由程式設計師決定,使用非常靈活,但問題也最多。

bool : if ( !a ) or if(a)

int : if ( a == 0)

float : if ( a < 0.00001&& a >-0.00001)

pointer : if ( a != null) or if(a == null)

14:請說出const與#define 相比,有何優點?

答案:const作用:定義常量、修飾函式引數、修飾函式返回值三個作用。被const修飾的東西都受到強制保護,可以預防意外的變動,能提高程式的健壯性。

1) const 常量有資料型別,而巨集常量沒有資料型別。編譯器可以對前者進行型別安全檢查。而對後者只進行字元替換,沒有型別安全檢查,並且在字元替換可能會產生意料不到的錯誤。

2) 有些整合化的除錯工具可以對const 常量進行除錯,但是不能對巨集常量進行除錯。

15:簡述陣列與指標的區別?

陣列要麼在靜態儲存區被建立(如全域性陣列),要麼在棧上被建立。指標可以隨時指向任意型別的記憶體塊。

16.類成員函式的過載、覆蓋和隱藏區別?

答案:a.成員函式被過載的特徵:

(1)相同的範圍(在同乙個類中);

(2)函式名字相同;

(3)引數不同;

(4)virtual 關鍵字可有可無。

b.覆蓋是指派生類函式覆蓋基類函式,特徵是:

(1)不同的範圍(分別位於派生類與基類);

(2)函式名字相同;

(3)引數相同;

(4)基類函式必須有virtual 關鍵字。

c.「隱藏」是指派生類的函式遮蔽了與其同名的基類函式,規則如下:

(1)如果派生類的函式與基類的函式同名,但是引數不同。此時,不論有無virtual關鍵字,基類的函式將被隱藏(注意別與過載混淆)。

(2)如果派生類的函式與基類的函式同名,並且引數也相同,但是基類函式沒有virtual 關鍵字。此時,基類的函式被隱藏(注意別與覆蓋混淆)

17.求出兩個數中的較大值

there are two int variables: a and b, don』t use 「ifswitch」or other judgement statements, find out the biggest one of the two numbers.

答案:( ( a + b ) + abs( a - b ) ) / 2

19.如何判斷一段程式是由c 編譯程式還是由c++編譯程式編譯的?

答案:#ifdef __cplusplus

cout<<"c++";

#else

cout<<"c";

#endif

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

答 、 1.沒有**垃圾資源

2.層次太深的遞迴呼叫

21:什麼函式不能宣告為虛函式?

答 、constructor

22.用兩個棧實現乙個佇列的功能?要求給出演算法和思路!

答 、設2個棧為a,b, 一開始均為空.

入隊: 將新元素push入棧a;

出隊: (1)判斷棧b是否為空;

(2)如果不為空,則將棧a中所有元素依次pop出並push到棧b;

(3)將棧b的棧頂元素pop出;

23.寫乙個「標準」巨集min,這個巨集輸入兩個引數並返回較小的乙個。

#define min(a,b) ((a) <= (b)? (a) : (b))

24.交換兩個數的巨集定義

交換兩個引數值的巨集定義為:. #define swap(a,b) (a)=(a)+(b);(b)=(a)-(b);(a)=(a)-(b);

25.用變數a給出下面的定義

a) 乙個整型數(an integer)

b) 乙個指向整型數的指標(a pointer to an integer)

c) 乙個指向指標的的指標,它指向的指標是指向乙個整型數(a pointer to a pointer to an integer)

d) 乙個有10個整型數的陣列(an array of 10 integers)

e) 乙個有10個指標的陣列,該指標是指向乙個整型數的(an array of 10 pointers to integers)

f) 乙個指向有10個整型數陣列的指標(a pointer to an array of 10 integers)

面試經常問的問題

1.請介紹一下自己。這是外企常問的問題。一般人回答這個問題過於平常,只說姓名 年齡 愛好 工作經驗,這些在簡歷上都有,其實,外企最希望知道的是求職者能否勝任工作,包括 最強的技能 最深入研究的知識領域 個性中最積極的部分 做過的最成功的事,主要的成就等,這些都可以和學習無關,也可以和學習有關,但要突...

經常遇到的面試問題

1 你的暑期打工工作是怎樣找到的?所有用人單位對有工作經歷的應屆畢業生都一致看好,無論參與過什麼樣的工作。一家就業服務機構的負責人說 讀書時期有過工作經歷的人容易與人相處,他們會更好地安排時間,更務實,而且更成熟,與我們有更多的共同語言。因此,在你應答時,要加上這樣的內容 企業就是要創造利潤,個人要...

經常遇到的面試問題

1 你的暑期打工工作是怎樣找到的?所有用人單位對有工作經歷的應屆畢業生都一致看好,無論參與過什麼樣的工作。一家就業服務機構的負責人說 讀書時期有過工作經歷的人容易與人相處,他們會更好地安排時間,更務實,而且更成熟,與我們有更多的共同語言。因此,在你應答時,要加上這樣的內容 企業就是要創造利潤,個人要...