經典面試題

2021-09-18 05:48:26 字數 2694 閱讀 6371

經典面試題

1.用#define宣告乙個常數,表明1年中有多少秒(忽略閏年問題)?

答案:#define seconds_per_year (60 * 60 * 24 * 365)ul

要點:a.沒有以分號結束;

b.懂得預處理器將為你計算常數表示式的值。即60 * 60 * 24 * 365而不是31536000.

c.考慮到了16位機將會溢位,巧妙運用了ul。

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

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

要點:a.引數用括號括起來;

b.考察能否合理運用條件運算子;

3.heap與stack的差別?

答案:heap是堆,stack是棧。

stack的空間由系統自動分配/釋放,heap上的空間手動分配/釋放。

stack空間有限,heap是很大的自由儲存區,malloc函式分配的記憶體空間即在堆上。

網上經典例子:

int a = 0; //全域性初始化區

char *p1;//全域性未初始化區

void main(void)

int b; //棧

char s = 「abc」; //棧

char *p2; //棧

char *p3 = 「123456」; //123456\0在常量區,p3在棧上

static int c =0; //全域性(靜態)初始化區

p1 = (char *)malloc(10); //堆

p2 = (char *)malloc(20); //堆

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

a.乙個整型數?

答案:int a;

b.乙個指向整型數的指標?

答案:int *a;

c.乙個指向指標的的指標,它指向的指標是指向乙個整型數?

答案:int **a;

d.乙個有10個整型數的陣列?

答案:int a[10];

e.乙個有10個指標的陣列,該指標是指向乙個整型數的?

答案:int *a[10];

f.乙個指向有10個整型數陣列的指標?

答案:int (*a)[10];

g.乙個指向函式的指標,該函式有乙個整型引數並返回乙個整型數?

答案:int (*a)(int);

h.乙個有10個指標的陣列,該指標指向乙個函式,該函式有乙個整型引數並返回乙個整型數?

答案:int (*a[10])(int);

5.關鍵字static的作用是什麼?

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

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

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

6.關鍵字const有什麼含意?

答案:const意味著"唯讀"。

如果回答"const意味著常數",面試官會覺得你只是乙個業餘的人。

7.下面的宣告都是什麼意思?

const int a;

int const a;

const int *a;

int * const a;

int const * a const;

答案:a.前兩個的作用是一樣,a是乙個常整型數;

b.第三個意味著a是乙個指向常整型數的指標(也就是,整型數是不可修改的,但指標可以);

c.第四個意思a是乙個指向整型 數的常指標(也就是說,指標指向的整型數是可以修改的,但指標是不可修改的);

d.最後乙個意味著a是乙個指向常整型數的常指標(也就是說,指標指向的整型數 是不可修改的,同時指標也是不可修改的)。

8.關鍵字volatile有什麼含意?

答案:乙個定義為volatile的變數是說這變數可能會被意想不到地改變,這樣,編譯器就不會去假設這個變數的值了。精確地說就是,優化器在用到這個變數時必須每次都小心地重新讀取這個變數的值,而不是使用儲存在暫存器裡的備份。

9.sizeof和strlen的區別?

答案:sizeof是運算子,在編譯時即計算好了; 而strlen是函式,要在執行時才能計算。

10.在某工程中,要求設定一絕對位址為0x67a9的整型變數的值為0xaa66。編譯器是乙個純粹的ansi編譯器。寫**去完成這一任務?

答案:int *p;

p = (int*)0x67a9;

*p = 0xaa66;

11.給定乙個整型變數a,寫兩段**,第乙個設定a的bit 3,第二個清除a 的bit 3。在以上兩個操作中,要保持其它位不變?

答案:#define bit3 (0x1 << 3)

static int a;

void set_bit3(void)

a |= bit3;

void clear_bit3(void)

a &= ~bit3;

12.下面函式錯誤嗎?

int square(volatile int *ptr)

return *ptr * *ptr;

答案:錯誤;

正確寫法:

long square(volatile int *ptr)

int a;

a = *ptr;

return a * a;

經典面試題

1.以下三條輸出語句分別輸出什麼?char str1 abc char str2 abc const char str3 abc const char str4 abc const char str5 abc const char str6 abc cout boolalpha str1 str2 ...

經典面試題

我的老同學現在富得流油。他開創了乙個軟體公司,開發了一系列軟體,生意越做越大。今天他來到這個城市後馬上打 給我。是我啊!聽出來了嗎?是這樣的,我到這兒的大學招畢業生,要在這兒呆上五天,咱哥們趁這個時間好好聚一聚。我做東!既然他要做東,我理所當然順水推舟。人家是老闆,不吃白不吃!我來到他下榻的賓館,看...

經典面試題

分兩個情況 perfork模式 worker模式 前者程序模式 後者執行緒模式 故檢視方法也有區別 oldboy.log 參考 分析 此類問題是運維工作中最常見的問題。可以演變成分析日誌,檢視tcp各個狀態連線數,檢視單ip連線數排名等等 第一類 過濾網域名稱方法 方法很多 這裡給出六種為例。還可以...