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]<<" "; 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]<<" "; 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 }