华为两道变态面试题
昨天去武汉华为技术面(C语言),对方问完我的项目经验后,就拿出一张稿纸,说,先做一道小学奥数题:ABCD*4=DCBA,编程解出ABCD
。我一接到这个题目,暗喜,简单啊!只要先写个求一个数abcd对应的dcba值的子函数,再弄个for循环从1000到3000(因为A不会大于3,否则abcd乘以4就不是四位了),一个一个地比较每个数的abcd*4和他对应的dcba是否相等不就得了!我刚一开始动笔,写了个for,考官就把我叫停了:不要用for的,这是个奥数题,不是用for做的,用数学方法解!靠,我一时没了头绪,什么叫数学方法?难道for循环就一点数学味道都没有?算了,你说数学方法就数学方法个吧。我开始考虑数的组成了,abcd=a*1000+b*100+c*10+d,他对应的dcba=d*1000+c*100+b*10+a;这时我想到求数列通项公式的方法了,把两个式子相加,结果发现没什么东西!难道真有什么巧妙的数学关系式?我想啊想,没任何头绪...期间我想过那数字来试,但我一想到for都不许用,那这样一个一个试出来的话,肯定也不算数,所以就打消了这个方法尝试,想着有个奇妙的关系式藏在里面...思考了大概5分钟,考官过来了,冷笑一声说:呵呵,还没搞出来啊?小学的题啊!我靠,这什么话啊,明显在鄙视我嘛!很不爽啊。
我没吭声,他又搞了个题目出来:用微分的方法编程解出a的2次方乘以b的3次方=60500的a和b的值。我又晕了,怎么回事啊,你他妈的有病啊,这题目也可以用for循环给for出来啊,为什么用微分啊?我不想做了,因为前一个题目已经把我搞的美脾气了,这个好像更难。不过我还是想了一会,依然没想出来....郁闷啊,一会那家伙又过来了,还是冷笑说:没搞出来啊?那就这样吧,你回去好好锻炼锻炼吧!
晚上回来我一搜,第一个题目的确是个小学奥数,用推理的方法可以逐个确定a b c d 的值。狗屁程序思想都没有!
第二个题目,我回来还没搜着,这个数学式子不好搜,不过那个式子好像没有微分的味道啊,因为式子中没有一个变量有导数的形式(当时没想到)。
就这样退出了武汉华为技术一面,感觉很变态的...