面試題是一套筆試題,比較經典(閉卷,100分鐘完卷,最好寫出解題步驟),若你能答對百分之七八十,說明你一隻腳踏進了linux編程的大門,若你能答對百分之九十以上,你收我做弟子(可憐可憐我吧),你若不及格,那就跟我一樣:菜鳥!
一、基礎題:
1.請列舉出你用過的LINUX發行版及其中的GCC版本、GLIB版本
2.ISO七層參考模型中的PPP協議、HTTP協議處於哪一層?
3.說出TCP和UDP的相同和不同之處
4.IP資料包頭部是多長?146.0.0.0屬於哪一類IP地址?
5.請寫出linux嵌入式系統開發過程
6.在以下列舉的GCC中的參數,請一一寫出代表的意思:
-c
-o
-share
-static
7.寫出以下參數的含義:
_attribute_ (packet)
volatile
#define ANYONE((DIR)< (FILE)<
二、程式閱讀題(輸出程式結果):
1.按值和按地址傳遞(此題太簡單,略)
2.指標的取地址和取值、指標運算操作(比較簡單,略)
3.char *p;
p=malloc(20);
char q*;
q=strcpy(p,"Please answer the question carefully");
q+=7;
printf("%s",q);
printf("%s",p);
4.#define X 1
#define Y X+1
int p;
p=x+y/2;
printf("%d",p);
5.struct n{
int p;
char name;
}a;
void structp(struct n b)
{
b.p=10;
b.name='X';
}
int main()
{
int x=5;
char name='Y';
a.p=x;
a.name=name;
structp(a);
printf("%d",a.p);
printf("%c",a.name);
}
6.略(記不清楚了,好像是字串操作題)
7.略(結構和雙鏈表,此題比較難,花時間多)
8.分析以下程式,寫出結果
Void GetMemory2(char **p, int num)
{
*p = (char *)malloc(num);
}
void Test(void)
{
char *str = NULL;
GetMemory(&str, 100);
strcpy(str, "hello");
printf(str);
}
9.分析以下程式,寫出結果
char *GetMemory(void)
{
char p[] = "hello world";
return p;
}
void Test(void)
{
char *str = NULL;
str = GetMemory();
printf(str);
}
三、程式寫作題:
1.用C語言實現下現函數(不能調用庫函數)
char *strcpy(char *dest,const char *src)
為什麼此字串拷貝函數還要返回一個字元指標?
2.有兩個整型變數x,y如何不使用任何中間變數的同時將兩個值交換
3.寫出BOOl flag與零值的比較,指標與零值的比較
四、英語基礎題(本人英語不好,所以記不住,此題有兩部分,第一部分是聲明變數,第二部分是完型填空)
五、選擇題(此題的具體備選答案我記不住了,不過你若掌握了這部分知識,不需要備選答案,若沒有瞭解, 也不過是在猜題)
1.在網路資料轉送時,哪種方式資料延遲最大?為了儘可能減少誤碼,最不宜採用哪種方式傳輸?分組交 換主要是對資料報文傳輸的哪方面的改進?改進的直接結果是什嗎?為了達到資料的最小誤碼率,應采 哪種方式(或組合方式)進行傳輸?(提示:備選答案中有:線路交換,封包交換,虛電路等等)
2.下面有一棵二叉搜尋樹,實體儲存體的方式按一個節點佔三個儲存單元,例如:有一結點P,在記憶體1001 中儲存P的資訊,1002中儲存P的左邊連結指標,1003中儲存P的右邊連結指標,以下是一張將要儲存的 節點表:
P:P(節點本身資訊),L1(P的左鏈節點指標),R1(P的右鏈節點指標);(以下以此類推)
W:W,L2,R2
E:E,L3,R3
R:R,L4,R4
C:C,L5,R5
將上述節點以字母表的順序產生二叉搜尋樹,並儲存在記憶體1001之後的連續單元中(儲存節點時按字 母順序儲存,比如C儲存在1001,1002,1003中,那麼E就應儲存在1004,1005,1006中)。
請問:L2,R3,L5將分別儲存在哪個記憶體單元
對此二叉搜尋樹進行後序遍曆和前序走訪,請分別寫出遍曆順序