2011华为上机试题成都
9月6日匆匆返回学校参加阿里和华为的面试和笔试。阿里直接一面杯具,华为杯具的提交错文件,肯定0分了。还得墙面。
这份题目是9月7日下午最后一批的上机题,应该是两天来笔试中难度最大的,第一天和第二天上午的题都比较简单,听了同学说后,根本没有在意,最后最杯具的是我提交错文件了。华为上机题C/C++用VC6.0(非常蛋疼的环境),Java用Eclipse。题目一样,没有区别。我蛋疼的选择了Java,不会导入,爆寒,这个也是我最后提交错文件的原因。
第一题,输入字符串长度len1,字符串s1,字符串长度len2,字符串s2。从后向前比较,以最短字符串为标准,输出不同的元素的个数。
例如: 输入:s1="1,3,5" len1=3 s2="2,4,1,7,5" len2=5
输出:2
函数原型
public int getDiffNum(int len1, String s1, int len2, String s2)
第二题,输入字符串长度,字符串,计数m。从前往后计数,当数到m个元素时,m个元素出列,同时将该元素赋值给m,然后从下一个数计数循环,直到所有数字都出列,给定的数全部为大于0的数字。输出出队队列。
例如: 输入:len=4 str="3,1,2,4" m=7
输出:2,3,1,4
函数原型
public String getOutString(int len, String str, int m)
第三题,输入一个表达式,没有括号,数字小于0-9之间,输出计算结果,所有的中间结果化为整形。
例如: 输入:3+8×2/9-2
输出:2
函数原型
public int getMyRet(String str)
第一题最简单和,前面一天以及上午的机试题一样,但是后面两道题稍微要麻烦点。第二题如果用链表做的话会很简单,我开始就用数组,但是搞了很久,很杯具,而且到最后还有bug,给的用例输出始终有问题。最后一个题,由于不涉及括号,数字也是0-9,所以直接用数组也可以解决掉,但是当时我没时间做,郁闷之急。主要是第二题用时间太多了。
另外一点就是用C#时间久了,已经不记得怎么转换整数了……太2了。要不是蛋疼的VC6.0,我就用C++写了,至少不会的时候,后面是我同学……之郁闷,他看到我一直在搞第二题感觉很奇怪……我觉得虽然考虑复杂了,但是应该是可以做出来的,就一条路往下走,杯具。
另外,教训就是如果没有机试过的同学,最好提前10分钟去,我去的太晚,导文件都导了N久……首先做出来,再考虑用什么。另外就是早点网投简历,我就是投简历太慢了,最后落到最后一小组机试,太窘了。参加华为决赛的同学不用投,直接最后一轮机试,亚历山大啊……特别是我后面那厮,早早的做完了,华为的那几个人一直在那走来走去,想帮我看看都没法……
更杯具的是最后提交文件的也提交错……