華爲筆試經驗

這篇文章是寫給2007屆的畢業生的,我想我這些日子的經歷應該能給2007屆的師弟和師妹們將來的校園招聘提供點幫助。
一、準備階段:
在華爲面試之前,我把《軟件設計師教程》大概的複習了一遍,時間實在太緊迫了,有些概念我也只是很粗糙地掠過去。10號下午還到圖書館借了一本《程序員面試攻略》,11號下午就差不多把那本書大概地啃完。
二、筆試:
11 號,收到短信通知當晚7:00在E棟筆試(只要是註冊了電子簡歷的同學都有資格),考試種類分兩種:硬件和軟件,共四類題:填空,選擇,改錯,程序設計。 基本上都是一些C/C++語言題,數據結構的樹的前序、中序及後序排列,計算機網絡裏的IP報文中的TTL(Time to live),數據庫的操作等等;程序題有兩道,一道題是關於數據結構的,另外有一道是“字符串A插入字符串B中”。雖然都基礎,但題量太大,考試時間太 短。大家都在喊沒信心。
三、面試:
第二天就有人接到通知去面試了,我們班一位同學去了,他很牛B,從第一輪到第四輪一
直很順利。 我是第三天才和我們寢室另外的一位同學才接到面試通知的(不過我聽說我們這一批接到通知的筆試分數普遍都很高),當然在前三天的等待時間裏,我心情很鬱 悶,我還以爲我沒有慧通的面試資格了,所以一直在玩,希望有時真的是期而不遇,遇而不期阿。(其實筆試這一輪刷的人不多,大家以後沒必要像我這樣子提前就 爆棄了)
我下午4:00準時到凱萊大酒店,一進去就感覺一股熱氣,大廳裏也許是因爲太熱或者太緊張的緣故,每個人的臉都很紅,很紅。大概等了半個 小時,我的心也跳得好厲害,我就到門口舒緩下情緒,很快一位帥哥就領我去第一輪面試了,他問我會什麼,**,這問題該怎麼答阿,然後我說我是電子科學與技 術專業的,計算機基本上是靠自學的,大概他體會到自學的不易,他給我出了5道編程題,雖然很多,但基本上都不很難。(我一同專業的哥們雖然只有一道題,但 卻是用C語言編桌球的運動軌跡,媽啊,對於C語言的圖像功能我都沒接觸到過阿),我的題目是:
1、1到100之間的所有素數之和;
2、隊列的實現;
3、選首領(有一羣人圍在一圈,從第一個人開始數1、2、3,數到3者退出,用循環鏈表實現)
4、字符串匹配問題(int countABC(* s) 輸入任何一串字符串,計算機其中有連續ABC子字符串的個數 )
5、用數組存儲超大數的問題。
6、詢問我操作系統的進程和線程的區別
幸好這些題目在筆試前我就都已經見過了,雖然第四個題目,面試老師說我執行效率不高,但可以過得去了。哈哈,他直接通知我去進行第二輪面試了。
第二輪是資格面試,沒多大問題,就聊聊家鄉,聊聊自己的情況,這一關只要說話有分寸,一般都可以通過。第二輪面試完,就快到了晚飯的時間了,晚飯當然是慧通免費提供的,晚飯一過後,我就被一被稱作是部長的面試官叫了進去,這一關一進去他直接拿了我《軟件設計書》提問我:
1、ping命令使用的是哪種報文?
2、OSI分哪幾個層,IP是在哪個層?
3、哈希表的問題
4、爲什麼要採取二叉樹這種數據結構?(折半查找)
5、兩臺計算機中的進程怎麼互相通信,我說通過IP唄,他說除了IP呢?我卡住了,他說你聽說過五元組嗎?我只好老老實實的回答說不知道,然後他在那裏給我解釋一通,但我還是沒搞明白,回來翻潘愛民老師的《計算機網絡書》
也沒有。這一輪雖然第5個問題我有點卡殼,但老師說我畢竟是自學,還表揚了我,說我已經很不錯了。面試完已經好晚了,華爲的MM通知我第二天繼續去進行第四輪的面試。
第二天,我按時到了考試地點,這一天,明顯感覺氣氛沒有第一天的好,垂頭喪氣的好多。很快就通知我去面試了,這一輪面試的老師明顯態度比前幾輪差多了,問的問題都有點讓我透不過氣來,但終於挺了過去,最後他直接點到桌子上
的一個題目:
void main()
{
char *p;
*p=-130;
printf("%d",*p);
}

正確的答案是126,原因:-130在計算機裏面存儲形式是11111111-01111110(取反碼的形式),因爲C裏面的CHAR是8位的,所以,最高位1去掉,剩下01111110。
四、些許體會
  面試,就是面試,不是學習,考試。你現在會多少東西固然重要,但更重要的是你得
讓面試官知道,所以面試時把你的知識表達出來是最重要的。切記!面試表達是關鍵,你
可以先把自己熟悉的整理一下,不至於面試的時候磕磕碰碰的。面試,好比下棋。把握局
面,掌握主動權是關鍵。一旦你把面試官成功引入你的領地,讓他把注意力關注在你熟悉
的領域,無暇自顧,那就盡情發揮吧,已經成功了一大半。所以從面試官拿到你的簡歷起
,就主動出擊,別給他機會.
另外,在大肆開學初,一定要把各位的專業課翻出來看看,考軟件的特別要多多看看基礎的C語言,想找到好工作一定要從骨子裏面重視起來。

=====================================

篇中提及的問題的解答:

1、1到100之間的所有素數之和;

 int i = 1;
 int j = 0;
 bool change= 1;
 int sum = 0;
 for (i=1; i<100; i++)
 { 
  for (j=2; j<i; j++)
  {
   if(i%j==0)
   {
    change = 0;    
    break;
   }
  }
  if(change==1)
   sum +=i;
  change = 1; 
 }
 printf("%d/n",sum);

2、隊列的實現;(用數組或者鏈表,定義好輸入和輸出即可)
3、選首領(有一羣人圍在一圈,從第一個人開始數1、2、3,數到3者退出,用循環鏈表實現)
 n個人圍成一圈,從第一個人開始依次從1到m循環報數,當報到m的時候此人出圈,直到圈 中只剩一人爲止.求最後一個人的原始編號。  
   int   yuesefu(int   n,int   m)  
   {  
          int   i,r=0;  
          for   (i=2;i<=n;i++)   r=(r+m)%i;  
          return   r+1;  
   }  

4、字符串匹配問題(int countABC(* s) 輸入任何一串字符串,計算機其中有連續ABC子字符 串的個數)
 int countABC(* s)
 {
  int i = 0;
  int j = 0;
  int num = 0;
  scanf("%s",s);
  int len = strlen(s);
  for (i=0; i<len-3; i++)
  {
   j = strcmp(s+i,"ABC");
   if(j==0)
    num++;
  }

 }
5、用數組存儲超大數的問題。
 這是數組得一個應用,思想是我們定義一個數組,讓每一個元素得值都是從後到前以十  進製得方式存貯得,如過到了9下一位就要讓前一個元素進位爲1,9變爲0同時。
下面這個例子是要求一個40位的 n!的值
 int data[40];//存儲40位書的整數數組
 int digit;//數據位數變量
 int i,j,r,k;
 int n;//用戶輸入值
 
 for(i=1; i<40+1; i++)
  data[i]=0;

 data[0]=data[1]=1;
 digit=1;

 printf("enter a number :");
 scanf("%d",&n);

 for(i=1; i<n+1; i++)
 {
  for(j=1; j<digit+1; j++)
   data[j]*=i;
  for(j=1; j<digit+1; j++)
  {
   if(data[j]>10)
   {
    for(r=1; r<digit+1; r++)
    {
     if(data[digit]>10)//大於10時候位數加1
      digit++;
     data[r+1]+=data[r]/10;//進位增加
     data[r]=data[r]%10;//去掉進位後得值
    }
   }
  }
  printf("%d! = ",i);
  for(k =digit; k>0; k--)
   printf("%d",data[k]);
  printf("/n");

 }
6、詢問我操作系統的進程和線程的區別
 進程和線程都是由操作系統所體會的程序運行的基本單元,系統利用該基本單元 實現系統對應用的併發性。進程和線程的區別,簡而言之:
       一個程序至少有一個進程,一個進程至少有一個線程.
 線程的劃分尺度小於進程,使得多線程程序的併發性高。
 另外,進程在執行過程中擁有獨立的內存單元,而多個線程共享內存,從而極大 地提高了程序的運行效率。

=========================================
1、ping命令使用的是哪種報文?
 PING命令使用ICMP的哪種code類型:Echo reply(回顯請求報文)

2、OSI分哪幾個層,IP是在哪個層?
 osi:物理層、鏈路層、網絡層、傳輸層、會話層、管理層、應用層。
       tcp/ip:主機網絡層、互聯層、傳輸層、應用層。ip是在互聯層
3、哈希表的問題
 主要用於快速查找檢索方面
4、爲什麼要採取二叉樹這種數據結構?
  他折半查找,可以減少查找比較次數
5、五元組
 二元組的定義:<K,R>
 三元組的定義:<D,F,A>
 五元組的定義:<V,O,G,M,S>
 V是值的集合,O是操作的集合,G是構成名字的文法,M是存儲的集合,S是從G能構成的名字 幾個到M的映射.
 iP報文中的五元組(即源IP地址,源端口號,目的IP地址,目的端口,協議)。
 半相關
 綜上所述,網絡中用一個三元組可以在全局唯一標誌一個進程:
 (協議,本地地址,本地端口號)
 這樣一個三元組,叫做一個半相關(half-association),它指定連接的每半部分。

 全相關
 一個完整的網間進程通信需要由兩個進程組成,並且只能使用同一種高層協議。也就是 說,不可能通信的一端用TCP協議,而另一端用UDP協議。因此一個完整的網間通信需要 一個五元組來標識:
 (協議,本地地址,本地端口號,遠地地址,遠地端口號)
 這樣一個五元組,叫做一個相關(association),即兩個協議相同的半相關才能組合 成一個合適的相關,或完全指定組成一連接。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章