研究报告华为校园招聘软件研发上机测试题及部分解答.doc

上传人:e****s 文档编号:85467008 上传时间:2023-04-11 格式:DOC 页数:5 大小:31.50KB
返回 下载 相关 举报
研究报告华为校园招聘软件研发上机测试题及部分解答.doc_第1页
第1页 / 共5页
研究报告华为校园招聘软件研发上机测试题及部分解答.doc_第2页
第2页 / 共5页
点击查看更多>>
资源描述

《研究报告华为校园招聘软件研发上机测试题及部分解答.doc》由会员分享,可在线阅读,更多相关《研究报告华为校园招聘软件研发上机测试题及部分解答.doc(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、以下是收集到的两套题没有添加答案,上机测试只有应聘软件研发的才会碰到。有的写了点自己的解法,如果大家有好的想法欢送讨论!大家一起学习嘛!以下是上机考试的一些考前须知:1考试时长为2个小时,总共有3个题去年是2个题,难度要比今年大些,编译环境为VC 6.0C语言/ EclipseJava;23个题目中大致第一个题是最简单的,第三个题是最难的;3从效劳器上下载题目下来后最好能把工程保存到在电脑重启后不会自动复原的磁盘分区下面,这样不致由于各种意外因素电脑重启过后编的程序不会消失;4不要改动所给函数的原型,可以自己添加函数。另外,华为提供的工程是将Main函数隐藏了的,所以自己不用再添加Main函数

2、。 1、选秀节目打分,分为专家评委和群众评委,score 数组里面存储每个评委打的分数,judge_type 里存储与 score 数组对应的评委类别,judge_typei = 1,表示专家评委,judge_typei = 2,表示群众评委,n表示评委总数。打分规那么如下:专家评委和群众评委的分数先分别取一个平均分平均分取整,然后,总分 = 专家评委平均分 * 0.6 + 群众评委 * 0.4,总分取整。如果没有群众评委,那么 总分 = 专家评委平均分,总分取整。函数最终返回选手得分。 函数接口 int cal_score(int score, int judge_type, int n)

3、这个问题很简单,应该只是涉及了下double/int转换 2、给定一个数组input ,如果数组长度n为奇数,那么将数组中最大的元素放到 output 数组最中间的位置,如果数组长度n为偶数,那么将数组中最大的元素放到 output 数组中间两个位置偏右的那个位置上,然后再按从大到小的顺序,依次在第一个位置的两边,按照一左一右的顺序,依次存放剩下的数。 例如:input = 3, 6, 1, 9, 7 output = 3, 7, 9, 6, 1; input = 3, 6, 1, 9, 7, 8 output = 1, 6, 8, 9, 7, 3 函数接口 void sort(int inp

4、ut, int n, int output)根本的方法:1) 先进行排序,然后挨个放/也可以以2为间隔存放。第一种方法的时间复杂度根据所选排序算法的不同而不同,空间复杂度为:n;2) 第一次选出一个最大,放在相应位置;第二次取出剩余最大值,放相应位置;依次类推。其中,选最大值可以使用最大堆方法来实现注意,不是堆排序哦选择一种好的排序算法的话比方快排,两者的时间复杂度是差不多的。 3、操作系统任务调度问题。操作系统任务分为系统任务和用户任务两种。其中,系统任务的优先级 = 50且 = 255。优先级大于255的为非法任务,应予以剔除。现有一任务队列task,长度为n,task中的元素值表示任务的

5、优先级,数值越小,优先级越高。函数scheduler实现如下功能,将task 中的任务按照系统任务、用户任务依次存放到 system_task 数组和 user_task 数组中数组中元素的值是任务在task 数组中的下标,并且优先级高的任务排在前面,优先级相同的任务按照入队顺序排列即先入队的任务排在前面,数组元素为-1表示结束。 例如:task = 0, 30, 155, 1, 80, 300, 170, 40, 99 system_task = 0, 3, 1, 7, -1 user_task = 4, 8, 2, 6, -1 函数接口 void scheduler(int task, i

6、nt n, int system_task, int user_task)方法1:先扫描一遍task,分别将任务放到system_task和user_task;用稳定的排序算法比方插入排序、归并排序等分别对system_task和user_task进行排序;方法2:用稳定的排序算法先对task进行排序,然后再放到system_task和user_task中;两种方法时间复杂度是相同的,但效率上第一种会高一些。试题2:转载自: :/ cxybl /html/bcyy/c/202109093208.html1. 数组比拟20分比拟两个数组,要求从数组最后一个元素开始逐个元素向前比拟,如果2个数组长

7、度不等,那么只比拟较短长度数组个数元素。请编程实现上述比拟,并返回比拟中发现的不相等元素的个数比方:数组1,3,5和数组77,21,1,3,5按题述要求比拟,不相等元素个数为0数组1,3,5和数组77,21,1,3,5,7按题述要求比拟,不相等元素个数为3要求实现函数:int array_compare(int len1, int array1, int len2, int array2)【输入】 int len1:输入被比拟数组1的元素个数;int array1:输入被比拟数组1;int len2:输入被比拟数组2的元素个数;int array2:输入被比拟数组2;【输出】 无【返回】 不相

8、等元素的个数,类型为int例如:1 输入:int array1 = 1,3,5,int len1 = 3,int array2 = 77,21,1,3,5,int len2 = 5函数返回:02 输入:int array1 = 1,3,5,int len1 = 3,int array2 = 77,21,1,3,5,7,int len2 = 6函数返回:32. 约瑟夫问题输入一个由随机数组成的数列数列中每个数均是大于0的整数,长度,和初始计数值m。从数列首位置开始计数,计数到m后,将数列该位置数值替换计数值m,并将数列该位置数值出列,然后从下一位置从新开始计数,直到数列所有数值出列为止。如果计数

9、到达数列尾段,那么返回数列首位置继续计数。请编程实现上述计数过程,同时输出数值出列的顺序比方:输入的随机数列为:3,1,2,4,初始计数值m=7,从数列首位置开始计数数值3所在位置第一轮计数出列数字为2,计数值更新m=2,出列后数列为3,1,4,从数值4所在位置从新开始计数第二轮计数出列数字为3,计数值更新m=3,出列后数列为1,4,从数值1所在位置开始计数第三轮计数出列数字为1,计数值更新m=1,出列后数列为4,从数值4所在位置开始计数最后一轮计数出列数字为4,计数过程完成。输出数值出列顺序为:2,3,1,4。要求实现函数:void array_iterate(int len, int in

10、put_array, int m, int output_array)【输入】 int len:输入数列的长度;int intput_array:输入的初始数列int m:初始计数值【输出】 int output_array:输出的数值出列顺序【返回】 无例如:输入:int input_array = 3,1,2,4,int len = 4, m=7输出:output_array = 2,3,1,4解题思路:每次出列一个数值,需要对m、input_array、output_array、输出位置outPos、起始位置startPos进行更新;对于输出位置outPos的计算是关键!通过分析可知,o

11、utPos=(startPos+m-1)%num代码实现:view plaincopy to clipboardprint?1 #include 2 3 void print_array(int len, int array) 4 5 for(int i=0; i=0; nIter-) 18 19 outPos=(m+startPos-1)%num; 20 m=input_arrayoutPos; 21 startPos=outPos; 22 printf(outPos is %d, new m is %dn, outPos, m); 23 output_arraylen-nIter-1=in

12、put_arrayoutPos; 24 for(int i=outPos; inum-1; i+) 25 input_arrayi=input_arrayi+1; 26 num-; 27 print_array(num, input_array); 28 29 30 31 void main() 32 33 int input_array=3,1,2,4; 34 int output_array4=0; 35 array_iterate(4, input_array, 7, output_array); 36 print_array(4, output_array); 37 3. 简单四那么运

13、算问题描述:输入一个只包含个位数字的简单四那么运算表达式字符串,计算该表达式的值注:3.1、表达式只含 +, -, *, / 四那么运算符,不含括号3.2、表达式数值只包含个位整数(0-9),且不会出现0作为除数的情况3.3、要考虑加减乘除按通常四那么运算规定的计算优先级3.4、除法用整数除法,即仅保存除法运算结果的整数局部。比方8/3=2。输入表达式保证无0作为除数情况发生3.5、输入字符串一定是符合题意合法的表达式,其中只包括数字字符和四那么运算符字符,除此之外不含其它任何字符,不会出现计算溢出情况要求实现函数:int calculate(int len,char *expStr)【输入】

14、 int len: 字符串长度;char *expStr: 表达式字符串;【输出】 无【返回】 计算结果例如:1输入:char *expStr = “1+4*5-8/3函数返回:192输入:char *expStr = “8/3*3函数返回:6零散的收集转自: :/1. 字符串提取数字完成函数void take_num(const char *strIn, int *n, unsigned int *outArray)输入strIn=ab00cd+123fght456-25 3.005fgh输出n=6outArray= 0, 123, 456, 25, 3, 5 不考虑小数:如3.005输出3和5

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文献 > 管理手册

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁