C C 基礎知識面試題回顧及答案分享

2021-12-30 01:20:01 字數 2538 閱讀 5877

1.

typedef struct list_tlist_t;請問在32位系統中,sizeof(list_t)的值為?

答案【8byte】

解析:用作定義時char[0]是空陣列,是不佔空間的。

2.c++是不是型別安全的?

答案【不是】

解析:如果規定兩種不同型別之間必須通過顯示轉換則是安全的。

3.**可以通過編譯嗎?如果不能應該如何修改?

template class foo

};template class fooderived:public foo

;int main()

a **可以正確通過編譯。 b 編譯錯誤,fooderived是乙個繼承模板類的非模板類,它的型別不能改變。 c 編譯錯誤,tval變數是乙個不確定的型別。

d 編譯錯誤,可以在fooderived類中新增乙個建構函式解決問題。

答案【d】

解析:父類定義了帶引數的建構函式,如果子類沒有顯示呼叫父類的構造方法,則預設呼叫父類的預設建構函式,於是這裡預設建構函式消失了,子類需要顯示呼叫父類的構造方法。

4.觀察下面一段**:

class classa

; virtual void functiona(){};

};class classb;};

class classc : public classa,public classb

;classc aobject;

classa* pa=&aobject;

classb* pb=&aobject;

classc* pc=&aobject;關於pa,pb,pc的取值,下面的描述中正確的是:

a pa,pb,pc的取值相同 b pc=pa+pb c pa和pb不相同

d pc不等於pa也不等於pb

答案【c】

解析 :aobject的位址從a的虛函式表開始,然後到b的虛函式表,再到c自身的成員

5.隨著裝填因子a的增大,用閉雜湊法解決衝突,其平均搜尋長度比用開雜湊法解決衝突時的平均搜尋長度增長得慢()【錯】

開雜湊表——-鏈式位址法 閉雜湊表——-開放位址法

開雜湊只會和相同值發生衝突,而閉雜湊除了與相同值發生衝突,還會與不同值發生衝突 ;開雜湊不受密度影響,而閉雜湊受密度影響 。

6.下列敘述中錯誤的是( )

a 二叉鍊錶是二叉樹的儲存結構 b 迴圈鍊錶是迴圈佇列的儲存結構 c 棧是線性結構

d 迴圈佇列是佇列的儲存結構

答案【b】

bd.佇列兩種儲存方式:迴圈佇列和鏈佇列

c.棧是一種特殊訪問方式的線性表。

7.下面程式會輸出什麼:

static int a=1; //靜態全域性變數

void fun1(void)

void fun2(void)

void fun3(void)

int main()

答案【1 2 2 2】

解析見注釋部分

8.下面**的輸出結果是()

int main()

else if(pid==0)

}答案【父子程序中輸出的num不同,num位址相同】

解析:num不同比較好理解,num位址相同指的是虛擬位址相同,linux中的資源分配都是虛擬機制,也就是說,他們還是會共用乙個虛擬的位址,但是對映到物理記憶體就可能會不一樣。

其實剛剛fork出來不止虛擬位址一樣,實體地址也一樣。當程序發生分歧時,即修改此變數時,才會分配不同的實體地址,也就是copy-on-write,寫時複製。

9.線索化二叉樹:左指標為空->指前驅;右指標為空->指後繼

10.下列**的輸出結果是

int i = -1;

unsigned j = 1;

if (j > i)

printf(" (j>i)成立\n");

else

printf(" (j>i)不成立\n");

if (i < j)

printf答案【(j>i)不成立,(i\

表示式會包含隱式型別轉換,它由編譯器自動執行,不需程式設計師介入。

轉換之後 signed int 被轉換為unsigned int,以8位元組為例,-1是11111111,比1大

11.如下語句通過算術運算和邏輯運算之後 i 和 j 的結果是()

【短路原則】

int i=0;

int j=0;

if((++i>0)||(++j>0))

答案【i = 1;j = 0】

解析:先執行++i,此時i變為1,然後判斷i>0為真。短路原則(||)不會計算後面的條件,因此++j不執行,j==0

12.關鍵字

【待補充】

13.下列**編譯時會產生錯誤的是()

#include

using namespace std;

struct foo

foo(int) {}

void fun() {}

};int main(void) 答案【語句4】

解析:語句4出錯來自語句3,foo b()會被編譯器認為宣告了乙個函式,正確的建構函式應該是foo b;

基礎知識(面試題)

1 linux下如何使用配置檔案設定網絡卡ip位址 root luomuqing vim etc sysconfig network scripts ifcfg eth0設定靜態ip bootproto static onboot yes ipaddr 192.168.136.128 netmask...

Hadoop基礎知識面試題整理

一 問答題 1 簡單描述如何安裝配置乙個apache開源版hadoop,只描述即可,無需列出完整步驟,能列出步驟更好。1 安裝jdk並配置環境變數 etc profile 2 關閉防火牆 3 配置hosts檔案,方便hadoop通過主機名訪問 etc hosts 4 設定ssh免密碼登入 5 解壓縮...

C C 基礎知識,面試常見問題(轉

鍊錶與陣列的區別 a 從邏輯結構來看 a 1.陣列必須事先定義固定的長度 元素個數 不能適應資料動態地增減的情況。當?資料增加時,可能超出原先定義的元素個數 當資料減少時,造成記憶體浪費。a 2.鍊錶動態地進行儲存分配,可以適應資料動態地增減的情況,且可以方便地插入 刪除資料項。陣列中插入 刪除資料...