2013-09-04 22:25:17
華為公司2014屆校園招聘軟件類上機考試樣題
華為公司2014屆校園招聘軟件類上機考試樣題
需進行上機考試的崗位:軟件開發工程師、操作系統工程師、底層軟件開發工程師、雲計算開發工程師、 DSP工程師
在線考試:機考系統的內核為VS2005及JDK1.7,使用Java答題時,類名必須為“Main”;使用C/C++答題時,使用VS2005支持的數據類型和函數。
題目類型:涉及數組、鏈表、指針、字符串、循環、枚舉、排序等等。
考試時長:2小時
考試題目:3道題(共計320分),初級題(60分),中級題(100),高級題(160分),難度遞增。
各難度上機考試樣題
初級題: 從考試成績中划出及格線
10個學生考完期末考試評卷完成后,A老師需要划出及格線,要求如下:
(1) 及格線是10的倍數;
(2) 保證至少有60%的學生及格;
(3) 如果所有的學生都高於60分,則及格線為60分
中級題:亮着電燈的盞數
一條長廊里依次裝有n(1 ≤ n ≤ 65535)盞電燈,從頭到尾編號1、2、3、…n-1、n。每盞電燈由一個拉線開關控制。開始,電燈全部關着。
有 n 個學生從長廊穿過。第一個學生把號碼凡是 1 的倍數的電燈的開關拉一下;接着第二個學生把號碼凡是 2 的倍數的電燈的開關拉一下;接着第三個學生把號碼凡是 3 的倍數的電燈的開關拉一下;如此繼續下去,最后第 n 個學生把號碼凡是 n 的倍數的電燈的開關拉一下。 n 個學生按此規定走完后,長廊里電燈有幾盞亮着。
注:電燈數和學生數一致。
高級題:地鐵換乘
已知2條地鐵線路,其中A為環線,B為東西向線路,線路都是雙向的。經過的站點名分別如下,兩條線交叉的換乘點用T1、T2表示。編寫程序,任意輸入兩個站點名稱,輸出乘坐地鐵最少需要經過的車站數量(含輸入的起點和終點,換乘站點只計算一次)。
地鐵線A(環線)經過車站:A1 A2 A3 A4 A5 A6 A7 A8 A9 T1 A10 A11 A12 A13 T2 A14 A15 A16 A17 A18
地鐵線B(直線)經過車站:B1 B2 B3 B4 B5 T1 B6 B7 B8 B9 B10 T2 B11 B12 B13 B14 B15
需進行上機考試的崗位:軟件開發工程師、操作系統工程師、底層軟件開發工程師、雲計算開發工程師、 DSP工程師
在線考試:機考系統的內核為VS2005及JDK1.7,使用Java答題時,類名必須為“Main”;使用C/C++答題時,使用VS2005支持的數據類型和函數。
題目類型:涉及數組、鏈表、指針、字符串、循環、枚舉、排序等等。
考試時長:2小時
考試題目:3道題(共計320分),初級題(60分),中級題(100),高級題(160分),難度遞增。
各難度上機考試樣題
初級題: 從考試成績中划出及格線
10個學生考完期末考試評卷完成后,A老師需要划出及格線,要求如下:
(1) 及格線是10的倍數;
(2) 保證至少有60%的學生及格;
(3) 如果所有的學生都高於60分,則及格線為60分
中級題:亮着電燈的盞數
一條長廊里依次裝有n(1 ≤ n ≤ 65535)盞電燈,從頭到尾編號1、2、3、…n-1、n。每盞電燈由一個拉線開關控制。開始,電燈全部關着。
有 n 個學生從長廊穿過。第一個學生把號碼凡是 1 的倍數的電燈的開關拉一下;接着第二個學生把號碼凡是 2 的倍數的電燈的開關拉一下;接着第三個學生把號碼凡是 3 的倍數的電燈的開關拉一下;如此繼續下去,最后第 n 個學生把號碼凡是 n 的倍數的電燈的開關拉一下。 n 個學生按此規定走完后,長廊里電燈有幾盞亮着。
注:電燈數和學生數一致。
高級題:地鐵換乘
已知2條地鐵線路,其中A為環線,B為東西向線路,線路都是雙向的。經過的站點名分別如下,兩條線交叉的換乘點用T1、T2表示。編寫程序,任意輸入兩個站點名稱,輸出乘坐地鐵最少需要經過的車站數量(含輸入的起點和終點,換乘站點只計算一次)。
地鐵線A(環線)經過車站:A1 A2 A3 A4 A5 A6 A7 A8 A9 T1 A10 A11 A12 A13 T2 A14 A15 A16 A17 A18
地鐵線B(直線)經過車站:B1 B2 B3 B4 B5 T1 B6 B7 B8 B9 B10 T2 B11 B12 B13 B14 B15
前兩個題比較簡單,最后一題有點難,沒做,哪位大神做出來了分享一下哦。
注意:
- 對bool變量取反,不能用按位取反運算符~,而應該用邏輯非!,因為用~時,因為操作數的整形提升,使得操作數為1時,結果仍為1,而非0;
如下:
bool b = true; //布爾變量按位取反,與取非!效果不一樣 b = ~b; cout<<b<<endl;
輸出為1;
若b為false,輸出也為1。
前兩個題代碼(歡迎交流指正):
1 #include <iostream> 2 #include <cassert> 3 using namespace std; 4 5 typedef size_t DataType; 6 const int SIZE = 10; 7 8 void DisplayArray(DataType *array,size_t len) 9 { 10 assert(array != NULL); 11 12 size_t index = 0; 13 while (index < len) 14 { 15 cout<<array[index]<<"\t"; 16 ++index; 17 } 18 cout<<endl; 19 } 20 21 void DisplayArray(bool *array,size_t len) 22 { 23 assert(array != NULL); 24 25 size_t index = 0; 26 while (index < len) 27 { 28 cout<<array[index]<<"\t"; 29 ++index; 30 } 31 cout<<endl; 32 } 33 34 //int compare(const DataType *p,const DataType *q) 35 int compare(const void *p,const void *q) //參數是void *類型 36 { 37 return (*(DataType *)p - *(DataType *)q); 38 } 39 40 DataType GetPassLine(DataType *scoreArray,size_t len) 41 { 42 assert(scoreArray != NULL); 43 assert(len == 10); 44 45 qsort(scoreArray,len,sizeof(DataType),compare); 46 47 cout<<"the sorted score is : "<<endl; 48 DisplayArray(scoreArray,len); 49 50 if (scoreArray[0] > 60) 51 { 52 return 60; 53 } 54 55 return ( (scoreArray[4] / 10) * 10); 56 } 57 58 size_t GetNumberOfLigthOn(size_t n) 59 { 60 bool *OnOffState = new bool[n + 1]; //多申請一個空間,是的有效下標從1開始 61 memset(OnOffState,1,n*sizeof(bool)); //有問題么?沒問題 62 63 size_t onCount = 0; 64 size_t index; 65 size_t j; 66 67 for (index = 2;index <= n;++index) 68 { 69 //DisplayArray(OnOffState + 1,n); 70 71 for (j = index;j <= n;j += index) 72 { 73 OnOffState[j] = !OnOffState[j]; //不能OnOffState[j] = ~OnOffState[j]; 74 } 75 } 76 77 for (index = 1;index <= n;++index) 78 { 79 onCount = OnOffState[index] ? (onCount + 1) : onCount; 80 } 81 82 return onCount; 83 } 84 85 86 void TestDriver() 87 { 88 //測試GetPassLine 89 //DataType scoreArray[SIZE] = {61,67,89,71, 73,78,90,65, 100,82}; //60,全部及格 90 //DataType scoreArray[SIZE] = {60,67,89,71, 73,78,90,65, 100,82}; //70,此時有7個及格 91 ////DataType scoreArray[SIZE] = {60,67,89,62, 73,78,90,65, 100,82}; //70,有6個及格 92 93 //size_t len = SIZE; 94 // 95 //cout<<"the pass line is : "<<GetPassLine(scoreArray,len)<<endl; 96 97 //測試GetNumberOfLigthOn(size_t n) 98 size_t numberOfLights = 10; 99 100 cout<<GetNumberOfLigthOn(numberOfLights)<<" lights in "<<numberOfLights<<" are on finally!"<<endl; 101 } 102 103 int main() 104 { 105 /*bool b = false; //布爾變量按位取反,與取非!效果不一樣 106 b = ~b; 107 cout<<b<<endl; 108 */ 109 TestDriver(); 110 return 0; 111 }