Winter Is Coming

Fear cuts deeper than swords -- By Arya Stark

一套趣味试题的解答[附详细说明]

| Comments

最近在网上流传了一套试题,据说可以让文科生和理科生都欲哭无泪,详情请>>猛击这里<<

我在这里贴一下我对这套试题的解答,并附上详细说明,作为抛砖引玉之文,如有错误之处还请指正。

一,选择题(皆为单选):

1,以下谁是二进制思想的最早提出者?

a. 伏羲;b. 姬昌;c. 莱布尼茨;d. 柏拉图

答案:a. 伏羲

说明:伏羲,中华民族人文始祖,是我国古籍中记载的最早的王,所处时代约为新石器时代早期,他根据天地万物的变化,发明创造了八卦。八卦可以推演出许多事物的变化 ,“两仪,四象,八卦,十六,三十二,六十四卦”也表明了八卦的变幻莫测。早在十七世纪,德国大数学家莱布尼兹创立“中国学院”,研究八卦,并根据八卦,发明了二进位记数和当地欧洲先进的计算机。所以伏羲应该是二进制思想的最早提出者,关于伏羲更多,可以参考这里

2,以下哪个概念和公孙龙的《指物论》中的“指”字含义相近?

a. 变量;b. 数组;c. 对象;d. 指针

答案:c. 对象

说明:根据这两篇公孙龙《指物论》奥义《公孫龍子·指物論》疏解 个人认为这个指应该是一个名词,也就是“物指”,但是这个“物指”又可以被许多符号所描述,虽然实体只有一个。所以我认为这个概念跟程序设计中的对象很像。Wikipedia对象 “对象”)的解释:对象(object),是面向对象(Object Oriented) 中的术语,既表示客观世界问题空间(Namespace)中的某个具体的事物,又表示软件系统解空间中的基本元素。所以,得出了这个答案。当然有人也说是指针,不过我觉得这个想法太直接了吧?

3,蔺相如,司马相如;魏无忌,长孙无忌。下列哪一组对应关系与此类似?

a. PHP,Python;b. JSP,servlet;c. java,javascript;d. C,C++

答案:c. java,javascript

说明:这题比较有意思,跟GRE中的类反很像,其实蔺相如,司马相如;魏无忌,长孙无忌这两组人名中有一个共同特点——都有一个相同的名,但是实际上每组两个人没有任何关系,只不过名凑巧相同罢了。所以得出这题答案选c,因为实际上java,javascript没有任何关系。当时LiveScript改名叫Javascript完全是赶时髦,因为当时Java技术刚刚兴起,算是IT界一个时尚吧,所以就取了这个名字。更多可以参考Wikipedia Javascript

4,秦始皇吞并六国采用了以下哪种算法思想?

a. 递归;b. 分治;c. 迭代;d. 模拟

答案:b. 分治

说明:秦灭六国中的策略“连横事秦”,“远交近攻”,从某种意义上来说就是一种分治策略。计算机科学中的分治算法是指将一个问题分成若干个相互独立的小问题去解决,然后再合并。所以这题答案就很显然是分治了。

5,雅典王子忒修斯勇闯克里特岛斩杀米诺牛的时候采用了以下哪种算法?

a. 动态规划;b. 穷举;c. 记忆化搜索;d. Dijkstra算法

答案:c. 记忆化搜索

说明:忒修斯的故事中,有一句:“忒修斯一人进入迷宫,他将红绳的一头系在洞口的石头上,然后,他牵着红绳进入山洞,在里边他找到了半人半牛的怪兽米诺陶洛斯,并勇敢的与之决斗,最后将它杀死。他又顺着红绳成功的走出迷宫。”,也就是说忒修斯在他经过过的地方都有标记,那么这就是计算机科学中的记忆化搜索。关于记忆化搜索可参考这里

6,印度电影《宝莱坞机器人之恋》中的机器人七弟采用的智能算法最有可能是以下哪一种?

a. 神经网络;b. 遗传算法;c. 模拟退火;d. 穷举算法

答案:a. 神经网络

说明:我没有看过这部电影,但是根据他的简介——“宝莱坞科幻大片,讲述一位天才科学家设计的智能机器人有了人类的感情,爱上了一名美丽的女郎”,个人觉得应该是神经网络。神经网络是对人体神经网络的一种模拟,这个网络一个特点是,需要训练才能提高对一些事情的认知,其余的算法都没有这样的特点,所以这题应该是神经网络。关于更多神经网络的信息,请参考这里

7,《公孙龙子》记载:“齐王之谓尹文曰:‘寡人甚好士,以齐国无士,何也?’尹文曰:‘愿闻大王之所谓士者。’齐王无以应。”这说明了齐王:

a. 昏庸无道;b. 是个结巴;c. 不会下定义;d. 不会定义自己的需求

答案:d. 不会定义自己的需求

说明:这段对话大体意思是:齐王说自己喜欢人才,但是齐国却没有人才,伊文说这看齐王如何定义人才了,齐王无言以对。我觉得用软件工程中的一句话来说,齐王没有很好诠释自己的需求,也就是他到底需要什么样的人才,这样的话造成外包或者开发人员(伊文)就不知道如何去满足这个需求了(找到人才)。所以软件行业里面需求一定要明确,这样你的项目质量才会高

8,惠施曾提出过“卵有毛”的命题,以下哪一项是导致这个错误命题的原因:

a. 混淆了命名空间;b. 引入了错误的包;c. 衍生类未重载;d. 调用了危险的指针

答案:a. 衍生类未重载

说明:惠施“卵有毛”命题中,辩者说:”如果鸡蛋里没毛,那么孵出来的小鸡怎么身上有毛?”惠施说:”鸡蛋里只有蛋清和蛋黄,没有毛。你什么时候看见过鸡蛋里面有毛了?小鸡身上的毛是小鸡身上的毛,不是鸡蛋里的毛。”。其实辩者忽略一点是,鸡是从蛋衍生出来的,但是鸡并没有把所有蛋的特征带过来,而是有自己的特点。所以这就是“衍生类未重载”,在计算机科学中衍生类也可以叫做子类,这个概念和父类对应的, 子类可以继承父类的一些方法,特征,但是也可以重载这些方法特征,也就是有自己的特性。显然“卵有毛”这个悖论出现就是因为子类重载了父类的方法,所以作为子类的鸡才有毛,而作为父类的卵却没有毛。

9,下面哪种面向对象的方法可以让你变得富有?

a. 继承;b. 封装;c. 多态;d. 抽象

答案:a. 继承

说明:这题不需要说明吧,谁不想是个富二代呢,XDDD

10,明朝时期张居正改革的一条鞭法的主要思想是:

a. 面向过程;b. 万物皆数;c. 统一接口;d. 泛型编程

答案:b. 万物皆数

说明:张居正的“一条鞭法”的内容是:“总括一县之赋役,量地计丁,一概征银,官为分解,雇役应付。” 就是把各州县的田赋、徭役以及其他杂征总为一条,合并征收银两,按亩折算缴纳。所以钱可以替代所有的徭役和税收,所以这应该和“万物皆数”的概念比较近。万物皆数这个概念最早有毕达哥拉斯提出,只不过在程序里面“万物皆数”也是说得过去,因为世界上任何程序都是二进制数据,所以这题答案就很明确了。

二,匹配题(分析A中的句子所体现的算法,和B中的算法一一匹配):

A: 1,江南可采莲,莲叶何田田,鱼戏莲叶间。鱼戏莲叶东,鱼戏莲叶西,鱼戏莲叶南,鱼戏莲叶北。——汉乐府《江南》

2,众里寻他千百度,蓦然回首,那人却在灯火阑珊处。——辛弃疾《青玉案》

3,从前有座山,山里有座庙,庙里有个老和尚,再给小和尚讲故事,故事内容是:从前有座山,山里有座庙,庙里有个老和尚,再给小和尚讲故事,故事内容是:从前有座山,山里有座庙,庙里有个老和尚,再给小和尚讲故事,故事内容是……

4,只劝楼台追后主,不愁弓矢下残唐。——孔尚任《桃花扇》

5,飞鸟之影,未尝动也。——《庄子》

B: 1,贪心;2,回溯;3,穷举;4,分治;5,递归;

答案:A1->B3. 穷举; A2->B2. 回溯; A3->B5. 递归; A4->B1. 贪心; A5->B4. 分治

说明:

  1. A1中说鱼在东南西北中方向上嬉戏,基本上枚举了所有的方向,所以这就是简单的枚举,关于枚举算法,其实就是遍历一种问题的所有可能,你可以参考这里

  2. A2中提到一个回首的概念,也就是活找了半天,回头一下就找到了,这个跟回溯算法很像,回溯算法就是从一条路往前走,能进则进,不能进则退回来,换一条路再试,这是计算机算法里面很基础的一个算法,可以参考这里

  3. A3和尚故事基本上都听过,其实这就一个故事里面套故事的故事,永远没有边界,这跟计算机科学里面的递归算法很像,递归算法是指函数/过程/子程序在运行过程序中直接或间接调用自身而产生的重入现像。更多可以参考这里

  4. A4这句诗我不能理解意思,是根据其他四个得出这个答案的

  5. A5中的“飞鸟之影,未尝动也”意思是飞鸟在动,但影子不动,此观点把时间和空间都加以分割,则是一点又一点……,而每一点都是停留静止的,所以“未尝动也”。这个其实就是把一个规模大的问题分解成若干个规模较小的问题,也就是分治,上面已经提到了,这里就不再多说了。

三,阅读理解(阅读下文,回答后面的问题):

美国的贝尔实验室设计了最初的C语言

刻在UNIX操作系统距今已有三四十年

你在屏幕前凝视数据的缱绻

我却在旁轻轻敲打键盘把你的梦想展现

循环 递归 贪心 动规 是谁的从前

喜欢在匈牙利算法中你我牵手的画面

经过MSRA门前我以大牛之名许愿

思念像斐波那契数列般漫延

当软工沦落在设计的文档间

算法依旧是永垂不朽的诗篇

我给你的爱写在程序间

深藏在最长不下降子序列里面

几万组数据流过后发现

我的心依然不变

我给你的爱写在程序间

深藏在最长不下降子序列里面

用无尽的代码刻下了永远

那已保存千年的誓言

一切又重演我算了很多遍

时间复杂度还是趋于无限

我只想要这样永远链接在你的身边

1,题目中的MSRA是什么的缩写?

答案:MSRA——Microsoft Research Asia也就是我们常说的微软亚洲研究院。这里汇聚了许多计算机界的牛人,所以一直是许多CS学生向往的地方

2,试赏析“思念像斐波那契数列般漫延”一句。

答案:斐波那契数列般漫延个人觉得是指,思念随着时间的增长越来越浓烈。

3,请结合时代背景,谈谈你对“当软工沦落在设计的文档间,算法依旧是永垂不朽的诗篇”一句的理解。

答案:这个如果没有做过开发的人很难理解,软件工程其实某种程度上是前人的经验总结,所以也是一门工程学,这个东西会随着语言的变化,计算机软硬件的变化改变。但是计算机中那些算法是不会随着这些东西变化的,不管是何种语言,什么机器,算法都是一个基础,只是实现方法有差别。

4,“几万组数据流过后发现,我的心依然不变”一句体现了算法的什么特性?

答案:计算机大师Donald Knuth提出过算法五个特性:“输入,输出,明确性,有限性,有效性”,其中明确性是说算法的描述必须无歧义,以保证算法的实际执行结果是精确地符合要求或期望,通常要求实际运行结果是确定的。所以不管你有多少组数据流过,算法的结果应该是确定的,关于算法的定义可以参考这里

我的解答完了,我想说的是其实计算机科学是一个很美妙的科学,中间凝聚了无数的生活中的智慧,如果你仔细的研究这门学科,你会有无穷无尽的乐趣。最后希望我的解答能够帮到你。

Comments