题目只有二十道,十道填空题是考察编程技巧的。
比如让一个大数字乘以16的高效算法。
如果按照中学数学去解答那就大错特错了。
正确的方法是使用位移。因为计算机存储数据用的是二进制,如果乘数除数是二进制整数,那么只需要使用位移就可以了。16用二进制表示是10000,向左移动四位即可。
在普通程序段这个技巧可能不重要,但要是在循环中运用这个技巧,就可以大幅度地提高运算效率。对于程序员来说,是很基本的技巧。
但就是这么一个基本技巧,依然有一些人没有给出正确答案。
十道大题是考察用程序解决问题的能力。
题目没有标准答案。对于答案的评分,不仅要看解题逻辑是否正确,还要看运算效率。这就是程序员和数学家的区别,数学家只要求正确就可以了,程序员不仅要正确,还要高效。
效率对程序的运行是很重要的,特别是在某些持续运行的循环中,特别的重要。
比如游戏的画面呈现,本身就是一个大循环。简单地说,一帧的画面呈现就是主循环运行一次的结果。如果这个循环运行效率很低,可想而知,帧数就会很低,画面就会卡顿。
所以,解决问题不仅需要正确的思路,还需要能高效运行。
像这道题:
一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个n级的台阶总共有多少种跳法。
看起来很难,普通人抓破脑袋都很难推演出正确答案。
要是让程序员来解答,就很简单,写一个递归算法即可,一页代码都用不到。
但是呢,就算解答出来,也是看运行效率的。高效运行和低效运行得到的评价是完全不同的。
另一道:
在加勒比海上,有五个海盗,这些海盗都是十分聪明且贪婪的,他们共同抢到了100枚金币,每一个人按顺序依次提出自己的分配方案,如果提出的方案没有获得半数或半数以上的人的同意,则这个提出方案的人就被扔到海里喂鲨鱼,那么第一个提出方案的人要怎么做,才能使自己的利益最大化?
这个就更复杂了,解法很多,不同的解法效率差别很大,非常能够考察一个人的思维能力。
林潇潇不断地翻阅试卷,发现及格实在不多,心中哀叹,招人好难!
直到她看到一份试卷,眼中一亮。
这人答对了全部的题目,并且解题思路还十分新颖,有些她自己都没想到。
人才啊!
可能自己公司的在职程序员都未必有这个水平了!
这人一定得挖过来,不惜代价也要让他留在自己公司!
她将这份试卷特别拿出来,放到一边。
好不容易看完了所有试卷,林潇潇挑选了二十来份勉强入眼的试卷,作为下一步面试的人选。至于其他人,能力不够,只好说对不起了。
第二天到了公司,将独孤凤叫过来,拿出那份水平最高的试卷说道:
“小凤,这个人单独安排,通知到他下午过来面试,要是他不方便再约个时间也可以。总之,一定要请过来。其他人另外安排时间,明天、后天都可以。”
林潇潇决意要和这位叫做“雷克木”的师兄好好谈谈,因此专门给他留出半天的面试时间。至于其他人,就没必要这么重视了。
独孤凤有点奇怪,“这个人很厉害吗?”
“很厉害,一定要把他挖过来。”
“好吧!”