讓文理科生流淚的綜合題是什麼?

 
  
  這套題就是前兩天在校內上看到的,原作者是上海交通大學的李垚同學,原文在這裏。於是考據癖大發作,就耗了7個小時寫了下面這些東西。答案只是我自己寫的,也並不是官方的正確答案,括號裏附上了一些說明,主要是之所以選這個答案的理由,因爲自己不是學純理工的,所以對編程這方面比較陌生,基本上以“考”爲主,想當然的成分會少一些。
  
  最後的主觀題也都是純介紹論述性的文字,就當長見識啦。很多沒註明來源的都是來自維基百科和百度百科,另外過程中也求助了一些學程序的朋友,總之一併謝過。
  
  一,選擇題(皆爲單選):
  
  1、以下誰是二進制思想的最早提出者?
  
  a.伏羲;b.姬昌;c.萊布尼茨;d.柏拉圖。
  
  答案:a、伏羲。
  
  詳解: 伏羲創造了八卦陣,亦稱先天八卦。八卦陣在國內被普遍稱爲最早的二進制記錄制:陽爻(—)爲1,陰爻(--)爲0,八卦剛好記錄了三位二進制數的8種組合。不過也有人說八卦的基礎並不是二進制,在數學上屬於八階矩陣雲雲。姬昌創造“文王八卦”,亦稱後天八卦。萊布尼茨是二進制的開拓者,柏拉圖跟二進制沒啥關係,勉強扯得上聯繫的是柏拉圖主義,被分類而形而上學的二元論。
  
  根據英文維基記述,大約在公元前5至公元2世紀,印度詩人Pingala著述了數學描述音韻方法,並且對二進制進行了描述。之後是邵雍在《皇極經世》中記載了八卦圖樣(最早的八卦是無圖無真相的——注),纔有了先天八卦圖的流傳。關於萊布尼茲在1679年創造了現代二進制系統的時候,維基上是這樣說的:作爲一箇中國迷,萊布尼茨是在聽說邵雍的八卦陣後,發現這個圖形正好奇妙地對應了二進制的0到111111,並且稱讚說這顯示了中國人在此類數學哲學中的主要成就。
  
  【實際上認真說這題應該無正確答案。】
  
  2、以下哪個概念和公孫龍的《指物論》中的“指”字含義相近?
  
  a.變量;b.數組;c.對象;d.指針。
  
  答案: a.變量。
  
  詳解: 《指物論》是公孫龍在《漢書·藝文志》中殘存的《公孫龍子》6篇中的第3篇,記述的是關於客觀存在的實物和我們對它們認識的關係。在“指物論”中,“指”是名詞,指廣義的認識(即名詞性的符號——筆者注)。而通篇文章中的指有名詞意有動詞意,不過《指物論》指稱理論的集中體現是所有的對象都是通過符號來稱呼的,符號代表事物。而與此同時,指針是一個用來指示一個內存地址的計算機語言的變量,即指針就是地址,可以理解爲指針是變量的一個真子集。
  
  變量與“指”的共通點就是:對某個存在(Object,對象)賦予一個可以指稱它的名詞(Refer)。

  PS:數組就是一堆變量的集合。
  
  3、藺相如、司馬相如、魏無忌、長孫無忌,下列哪一組對應關係與此類似?
  
  a. PHP,Python;b. JSP,servlet;c. Java,Javascript;d. C,C++。
  
  答案:c. Java,Javascript。
  
  詳解: 藺相如(前329年—前259年),戰國時趙國上卿;司馬相如(約前179年—???),字長卿,漢族,蜀郡(今四川省成都人)。魏無忌(?-前243),魏昭王少子,安釐王的異母弟,戰國時期魏國著名的軍事家。;長孫無忌(約597年-659年),字輔機,河南省洛陽人。共通點的話,就是名字雖然都有相似的地方,但是卻完全不是一碼事,誰也不挨着誰。
  
  PHP是在前端服務器執行使用的腳本語言,Python是程序開發使用的面向對象的程序設計語言。JSP是動態網頁技術標準,servlet是服務器端的Java應用程序。Java是一種程序設計語言,Javascript是面向對象的動態類型的區分大小寫的客戶端腳本語言。C++最早作爲C的增強版,現在則是相互比較獨立的兩種編程語言。
  
  總的來說,c 選項的相似程度更高一些。
  
  4、秦始皇吞併六國採用了以下哪種算法思想?
  
  a.遞歸;b.分治;c.迭代;d.模擬。
  
  答案:b.分治。
  
  詳解:秦始皇主要的吞併方法是:遠交近攻,逐個擊破,包括分化離間、連橫的策略。
  
  遞歸指的是一個過程:函數不斷引用自身,直到引用的對象已知。分治,就是把一個複雜的問題分成兩個或更多的相同或相似的子問題,再把子問題分成更小的子問題。迭代是通過從一個初始估計出發尋找一系列近似解來解決問題的過程,爲實現這一過程所使用的方法統稱爲迭代法。迭代算法是用計算機解決問題的一種基本方法。讓計算機對一組指令(或一定步驟)進行重複執行,在每次執行這組指令(或這些步驟)時,都從變量的原值推出它的一個新值。模擬是用計算機程序將原本的事務或流程,予以系統化與公式化,產生可重現預期結果。
  
  5、雅典王子忒修斯勇闖克里特島斬殺米諾牛的時候採用了以下哪種算法?
  
  a.動態規劃;b.窮舉;c.記憶化搜索;d.Dijkstra算法。
  
  答案:b.窮舉。
  
  詳解:動態規劃是一種在數學和計算機科學中使用的,用於求解包含重疊子問題的最優化問題的方法。窮舉就是根據某一公式(一般是遞推)列出所有可能的組合並驗證是否爲所需解。記憶化搜索的實質是動態規劃,效率也和動態規劃接近,形式是搜索,簡單直觀,代碼也容易編寫,不需要進行什麼拓撲排序。Dijkstra算法解決的是有向圖中任意兩個頂點之間的最短路徑問題。
  
  而這段傳說是忒修斯作爲被進貢童男童女中的一員,前往克里特島的迷宮深處討伐米諾陶洛斯(半人半牛的怪物,所以人贈暱稱米諾牛),在克里特島遇到了美麗的公主阿里阿德涅,公主對他一見傾心而贈與線團以便他可以離開迷宮。
  
  關於忒修斯是如何抵達迷宮中央斬殺米諾牛的,維基中是這樣記錄的:在忒修斯進入迷宮之後,他解開了線團的一端並系在門把上,然後將爲了躲避門衛而藏起來的劍從衣服裏拿出來揮舞。忒修斯跟着阿里阿德涅公主給出的代達羅斯的指示,一直向前走,絕不轉彎。忒修斯來到迷宮中央並接近沉睡中的米諾陶洛斯。怪獸甦醒並開始了一場惡鬥。忒修斯用他的力量制服了怪獸,並用利劍刺穿對方的喉嚨。
  
  根據所有選項和傳說描述似乎沒有一個是相符的,但是在邏輯學上有一個術語叫“阿里阿德涅的線”,也就是窮舉法。
  
  6、印度電影《寶萊塢機器人之戀》中的機器人七弟採用的智能算法最有可能是以下哪一種?
  
  a.神經網絡;b.遺傳算法;c.模擬退火;d.窮舉算法。
  
  答案:a.神經網絡。
  
  詳解: 沒看過電影的筆者悲劇了,只能在豆瓣上看了一下影評,然後下了一個字幕文件,在第876句臺詞的時候,開發七弟的博士說“你們瞭解七弟的神經模式嗎”。
  
  七弟在經過簡單學習之後就有了完全可以通過圖靈測試的能力,算是比較典型的學習型人工智能,神經網絡作爲一種運算模型,而其網絡自身通常都是對自然界某種算法或者函數的逼近,也可能是對一種邏輯策略的表達。
  
  PS:遺傳算法作爲一種最優搜索算法,對於一個最優化問題,一定數量的候選解(稱爲個體)的抽象表示(稱爲染色體)的種羣向更好的解進化。
  
  7、《公孫龍子》記載:“齊王之謂尹文曰:‘寡人甚好士,以齊國無士,何也?’尹文曰:‘願聞大王之所謂士者。’齊王無以應。”這說明了齊王:
  
  a.昏庸無道;b.是個結巴;c.不會下定義;d.不會定義自己的需求。
  
  答案:d.不會定義自己的需求。
  
  詳解: 齊王問尹文說:“寡人特別喜歡士,但是齊國沒有士,怎麼辦?”尹文說:“想聽聽大王所謂的士是什麼。”齊王不知道要怎麼回答(定義了自己想要的人是“士”,但是無法定義“士”)。
  
  8、惠施曾提出過“卵有毛”的命題,以下哪一項是導致這個錯誤命題的原因:
  
  a.混淆了命名空間;b.引入了錯誤的包;c.衍生類未重載;d.調用了危險的指針。
  
  答案:c.衍生類未重載。
  
  詳解: 卵有毛”這個命題如今就只剩這個名字了,出自《莊子•天下篇》。關於惠施本人的著作,則無存。“卵有毛”的大意就是,蛋能孵出雞,雞有毛,所以蛋有毛(這裏的蛋嚴格定義爲尚未開始分化的蛋)。
  
  所給的四個選項是分別把毛、雞和蛋(在蛋中的雞)視爲了不同的屬性、類或包,蛋是不具有“毛”的屬性(或類、子類)的,把這樣的思路分別還原到四個選項中。命名空間是區別同名不同指的標識符所用,和題述無關。引入了錯誤的包實際上其中類並未被真正編譯。衍生類未重載,是指將蛋視爲雞的子類的時候,其屬性的變化並未得以體現(題述中實際是反向操作了)。
  
  9、下面哪種面向對象的方法可以讓你變得富有?
  
  a.繼承;b.封裝;c.多態;d.抽象。
  
  答案:a.繼承。
  
  詳解: 繼承可以繼承父類的屬性和行爲。封裝是隻提供接口並隱藏內部過程的行爲。多態是指因繼承產生的相關不同類,但是因爲我沒有多人讓我繼承,我也沒有兄弟姐妹(就算有,他們是否富有也與我無關)。抽象是一種簡化複雜現實問題的途徑。簡單來說就是富二代了…
  
  10,明朝時期張居正改革的一條鞭法的主要思想是:
  
  a.面向過程;b.萬物皆數;c.統一接口;d.泛型編程。
  
  答案:c.統一接口。
  
  詳解: 一條鞭法的主要思想是“稅以銀徵收”,取消了原本的田賦、力役和其他雜稅,促進自然經濟的瓦解和商品經濟的發展。
  
  面向過程是指以過程爲中心的編程思想,形成模塊化特點。萬物皆數是畢達哥拉斯學派的數學哲學理念(特指有理數),屬於世界觀的一種。泛型編程是一種語言機制,能夠幫助實現一個通用的標準容器庫。所謂通用的標準容器庫,就是要能夠做到,比如用一個List類存放所有可能類型的對象這樣的事;泛型編程讓你編寫完全一般化並可重複使用的算法,其效率與針對某特定數據類型而設計的算法相同。泛型即是指具有在多種數據類型上皆可操作的含意,與模板有些相似。
  
  一條鞭法的主要思想並不是以徵稅過程爲中心的思想,同時也不是在多種類型上的操作。
  
  二、匹配題(分析A中的句子所體現的算法,和B中的算法一一匹配)
  
  A:
  
  1、江南可採蓮,蓮葉何田田,魚戲蓮葉間。魚戲蓮葉東,魚戲蓮葉西,魚戲蓮葉南,魚戲蓮葉北。——漢樂府《江南》
  
  2、衆裏尋他千百度,驀然回首,那人卻在燈火闌珊處。——辛棄疾《青玉案》
  
  3、從前有座山,山裏有座廟,廟裏有個老和尚,再給小和尚講故事,故事內容是:從前有座山,山裏有座廟,廟裏有個老和尚,再給小和尚講故事,故事內容是:從前有座山,山裏有座廟,廟裏有個老和尚,再給小和尚講故事,故事內容是……
  
  4、只勸樓臺追後主,不愁弓矢下殘唐。——孔尚任《桃花扇》
  
  5、飛鳥之影,未嘗動也。——《莊子》
  
  B:
  
  1、貪心;2、回溯;3、窮舉;4、分治;5、遞歸;
  
  答案:A1→窮舉; A2→回溯;A3→遞歸; A4→貪心;A5→分治。
  
  詳解: 窮舉和遞歸就不講了。回溯算法是一種試探法,基本思路是:從一條路往前走,能進則進,不能進則退回來,換一條路再試。這正符合辛棄疾《青玉案》的筆意。4是《桃花扇》續四十出《餘韻》中的唱詞【秣陵秋】,選句前兩句說的是“中興朝市繁華續,遺孽兒孫氣焰張”,事出馬士英、阮大鋮出於一己的私心,迎立福王朱由崧,建立了南明弘光小朝廷。他們唆使朱由崧徵歌選舞,聲色犬馬,荒淫佚樂,做個“無愁天子”,過着紙醉金迷的生活,是比較典型的局部最優策略,不從整體最優考慮,這就是貪心算法啦。
  
  5是極限理念的一個體現,是說每一秒飛鳥的影子都是固定的,因此每一秒連續起來,影子仍舊是固定的,極限的時間被割裂成互不相干的個體探討了,所以算是分治。
  
  三、閱讀理解(閱讀下文,回答後面的問題)
  
  美國的貝爾實驗室設計了最初的C語言;
  刻在UNIX操作系統距今已有三四十年;
  你在屏幕前凝視數據的繾綣;
  我卻在旁輕輕敲打鍵盤,把你的夢想展現。
  循環遞歸貪心動規是誰的從前,
  喜歡在匈牙利算法中你我牽手的畫面,
  經過MSRA門前,我以大牛之名許願。
  思念像斐波那契數列般漫延,
  當軟工淪落在設計的文檔間,算法依舊是永垂不朽的詩篇。
  我給你的愛寫在程序間,深藏在最長不下降子序列裏面,
  幾萬組數據流過後發現我的心依然不變。
  我給你的愛寫在程序間,深藏在最長不下降子序列裏面,
  用無盡的代碼刻下了永遠。
  那已保存千年的誓言一切又重演,
  我算了很多遍,時間複雜度還是趨於無限,
  我只想要這樣永遠鏈接在你的身邊。

  

  1、題目中的MSRA是什麼的縮寫?
  
  微軟亞洲研究院(Microsoft Research Asia)。其他意象包括了沉船、組織、軟件。
  
  2、試賞析“思念像斐波那契數列般漫延”一句。
  
  主觀題。斐波納契數列是指後一項爲前兩項之和所列成的數列,比較典型的示例是 1 1 2 3 5 8…屬於比較典型的遞歸問題。趨向於無窮大的數列有很多,而斐波納契數列比較特殊的一點就是數列上的相鄰兩個數的比例會趨近於黃金分割比,在自然界中的很多動植物的構成都滿足斐波納契數列的特點,可以說這是一個最接近自然,最優美的數列。當然將每一次的增長視爲帶着黃金的香氣也未嘗不可。同時斐波納契數列也是編程學習中比較常用的一個範例數列,主要涉及輸入、輸出、循環語句的使用和對變量的理解。
  
  3、請結合時代背景,談談你對“當軟工淪落在設計的文檔間,算法依舊是永垂不朽的詩篇”一句的理解。
  
  【搞軟件工程,文檔是爹,設計是媽,只有算法才能讓你有個幸福的家。】算法作爲程序的核心,一個好的算法替代相對較差算法有時甚至會勝於硬件升級所帶來的好處。所以說算法永遠是不朽的詩篇啊,計算機最富藝術性的部分大概也就在這了。
  
  4、“幾萬組數據流過後發現,我的心依然不變”一句體現了算法的什麼特性?
  
  Donald Knuth在他的著作《計算機程序設計藝術》裏對算法下的定義中,算法應該具有這5項特性:輸入、輸出、明確性、有限性和有效性。數據流過證明有輸入有輸出,至於我心不變,也不知道是編譯成功了沒,不過暫時一切沒有變化證明它至少是明確的。
  
  5、就“喜歡在匈牙利算法中你我牽手的畫面”一句,談談你對匈牙利算法的理解。
  
  匈牙利算法是衆多用於解決線性任務分配問題的算法之一,該算法的核心就是尋找增廣路徑,它是一種用增廣路徑求二分圖最大匹配的經典算法。
  
  二分圖是指若干個頂點和頂點之間所連的邊,若所有頂點可以分成兩個不相交的集合,並且在同一個集合內的頂點沒有公用邊,則稱這樣的圖爲二分圖(小學時候做的連線作業那樣的圖就是啦,另外在學習加法原理和乘法原理的時候所畫的圖也是二分圖),最大匹配是指這個二分圖中邊數最多的情況。“匈牙利算法中你我牽手的畫面”則證明“你我”已經形成了一個匹配。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章