《如果要我出程设题》官方参考答案

前几天作《如果要我出程设题》,本漫思所启而作,不意众猿兄媛妹抬爱,竟得一时风靡。然原文实乃随笔所作,多有未审之处,网上诸君引经而论,竟见余 之所未见,发余之所未发,实令余既难免汗颜之处,亦多有拜服之叹,故知浩哉华夏,吾道不孤。今撰此参考答案一份,虽以官方之名,终是一家之言,唯送诸此嚣 嚣尘世,以待高士斧正。

题目原文链接:http://liyaos.com/blog/programexam/

一,选择题:

1, ABC皆对。这题只是送分而已,不同的角度看待二进制思想这一名词,自会得出不同的答案。伏羲氏以阴阳两爻和天地人三才创立先天八卦阵,可以看作是 3bit的二进制数,即二进制思想之启蒙;但伏羲氏毕竟是传说中的人物,而后世作后天八卦阵以及推演周易六十四卦的周文王不但在历史上的可信程度大了很 多,而且还把3bit二进制数推广到了6bit,此二进制思想更完善,如果对二进制思想的定义较高,周文王显然是更好的答案;如果要求二进制思想必须是完 整的思想体系的话,那么还是莱布尼茨这位兄台更加准确。柏拉图虽持二元之论,但此与二进制思想相差尤远,故不采。

2, D,指针。“指”为指针,“物”为数据。

3, C,java/javascript。单从表面上可以看出来,题目中两组对应关系都是名字相似却本质毫无联系的事物,因此java和javascript 这组对应关系更加类似。此外这两组对应关系出自一副对联,曰:“蔺相如,司马相如,名相如,实不相如;魏无忌,长孙无忌,彼无忌,此亦无忌”,将此对联与 这一组对应关系相较,岂不暗合!

4, B,分治。破其合纵,远交近攻,收买重臣,分而治之。

5, C,记忆化搜索。用毛线标记出已经走过的路径。

6, A,神经网络。题目里面扯上这个电影主要是想开阔下自己出题的思路。电影里这个机器人了解事物要靠学习,显然是强人工智能,但其学习的过程并不类似遗传算法所应表现出来的,所以神经网络最为接近。

7, D,不会定义自己的需求。A和B显然是以偏概全,问题纠结于C和D两个选项。齐王渴望士,但却不知道自己渴望什么样的士,这更接近于软件工程中客户不会定 义自己的需求的情形;而按照我自己的理解,倘若齐王知道什么是士,却无法讲出来什么是士,这才叫做“不会下定义”。故此题答案为D。

8, C,衍生类未重载。不理解的同学烦请自行查阅“卵有毛”这个命题是怎么推导出来的。

9, A,继承。这个有疑问吗?

10, C,统一接口。张居正改革以前明朝的赋税制度是非常混乱的,其一条鞭法极重要的一点便是将各种杂七杂八的赋税徭役统一了起来,即统一接口。泛型编程在于可以接受各种数据类型,与此不符。

二,匹配题:

A1 – B3(将东西南北逐一穷举);

A2 – B2(关键为“蓦然回首”一句);

A3 – B5(不解释……);

A4 – B1(讥讽南明福王及其府下臣子只知贪图眼前光景);

A5 – B4(将飞鸟的动作拆分成无数部分,则飞鸟的每一刻的影子都是重新生成的,是不动的。其实这题我本来想用“镞矢之疾,有不行不止之时”这一句的,却鬼使神差地写下了这一句)。

三,阅读理解:

1,微软亚洲研究院。

2,斐波那契数列中每一项是前两项之和,是一个单调递增序列,而且越到后面其增长越快,所以搭配了“漫延”这个词语。这象征了我对“你”的思念每一 天都如同和把之前的叠加在一起,这般与日俱增,而终如洪水般“漫延”。亦有人提出斐波那契数列的通项公式是由无理数构成,但每一项却都是有理数,这种因既 无理而果又有理的纠结恰恰很好地诠释了思念之情的意义。我要承认这后面一点我身为作者也未曾想到。

(其实写的时候我并没有想太多,所以文囿同学“其实这就是作者信笔所至之处,比喻虽甚不恰当,到底无伤大雅”的评价还是很正确的……)

3,作者写这句话其实是表达了他对他学的软件工程概论课程的感慨……搞软工的人,你们懂的。

4,过去在哪儿听说算法有不变性这一特征,但是这个说法似乎不太严谨,这里我倾向于采用高德纳(即Donald E. Knuth)的提出的“明确性”(或者说被翻译出的)这一说法。

5,匈牙利算法是二分图匹配算法,对每个点通过寻找可增广路改进的方式得到最大匹配。原文用“牵手”形容匹配,用“画面”一词将算法过程中的某一步匹配定格,这个匹配是否问最终匹配并不重要,重要的只是此刻。

这里顺带贴出杨弋大神的第5题答卷:“匈牙利算法的特点是一旦牵手了就永远有手签,每次增广路经过自己的时候还会换一个。所以该作者喜欢牵手画面其实喜欢的是将来一直有手牵的可能性,与文中的“你”是谁没有关系……”(我对天发誓这不是作者的原意 = =||)