經典面試題
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連線數排名等等 第一類 過濾網域名稱方法 方法很多 這裡給出六種為例。還可以...