H3C華三技術有限公司[筆試題]
2013-09-25

注:筆試題根據面試者回憶記錄,僅供參考;

以下題目都是在小端結尾的32位x86 CPU上面運行的代碼:
一.編程題
1. 請實現一個函數,對于給定的整型參數 N,該函數能夠打印出自然數中的頭 N 個質數(15分)。

2.鏈表節點結構體定義
struct node{
     int data;
     struct node *prev;
     struct node *next;
}    
假設已經構建完畢的一個雙向鏈表有節點A-B-C-D-E-F,從中截斷,以C為截斷點,傳入節點C的指針,截斷后重新連接的鏈表變為C-D-E-F-A-B的形式,寫出實現這一功能的C語言代碼,返回新鏈表的頭節點指針。(10分)

二.問答題(每題4分)
1.請寫出 float  x  與“零值”比較的 if  語句:

2. 用預處理指令#define聲明一個常數,用來表示一年有多少秒(忽略閏年問題)

3. void GetMemory(char *p)
{
     p = (char *)malloc(100);
}
void Test(void)
{
     char *str = NULL;
     GetMemory(str);  
     strcpy(str, "hello world");
     printf(str);
}
請問運行Test函數會有什么樣的結果?    

4. char *GetMemory(void)
{  
char p[] = "hello world";
return p;
}
void Test(void)
{
char *str = NULL;
str = GetMemory();   
printf(str);
}
請問運行Test函數會有什么樣的結果

5. void GetMemory2(char **p, int num)
{
*p = (char *)malloc(num);
}
void Test(void)
{
char *str = NULL;
GetMemory(&str, 100);
strcpy(str, "hello");  
printf(str);   
}
請問運行Test函數會有什么樣的結果    

6. void Test(void)
{
char *str = (char *) malloc(100);
    strcpy(str, “hello”);
    free(str);     
    if(str != NULL)
    {
      strcpy(str, “world”);
printf(str);
     }
}
請問運行Test函數會有什么樣的結果

7. char  str[] = “Hello” ;   
char  *p = str ;   
int   n = 10;  
請計算 (1)sizeof (str ) =   
(2)sizeof ( p ) =  
(3)sizeof ( n ) =    

8. int a=0x0A;int b=0x0B;int c=0x0C;int d=0x0D;
int sum=(a & b) ^ (c | d) ;
sum的值是多少?

9.struct name1{ char str;
     int num;
     short x;};求sizeof(name1)是多少?是在32位處理器上

10.#define MUL(A,B) A*B
請問MUL(3+4,5+6)的值是多少?

11. 聯合體定義如下
typedef union{
int ia;
char c[4];
short int s[2];
}untest;    untest un;
un.c[0]=0xAA;un.c[1]=0xBB;
un.c[2]=0xCC;un.c[3]=0xDD;
那么那么un.ia=?   un.s[0]=?
注意,X86 CPU是小端結尾的

12.int main(){  
int x=3;  
printf("%d",x);  
return 1;}問題:main函數既然不會被其它函數調用,為什么要返回一個值?這個返回值有什么用途?    13. char a[8]={1,2,3,4,5,6,7,8};
int *ptr=(int *)a;
printf("%d,%d",
*(a+1),
*(char *)(ptr+1));
請問輸出:

14.在某工程中,要求設置一絕對地址為0x67a9的整型變量的值為0xaa66。編譯器是一個純粹的ANSI編譯器。寫代碼去完成這一任務。

15. 給定一個整型變量a,寫兩段代碼,不調用任何函數,第一個設置a的bit 3,第二個清除a 的bit 3。在以上兩個操作中,要保持其它位不變。

16. 關鍵字volatile有什么含義?并給出3個不同的例子

17.關鍵字static 有什么用途?(請至少說明兩種)

18.Linux中查看進程狀態的命令有哪些?列出當前目錄以及下面所有子目錄里面的文件的命令是?