問題:   吳老師,這些數據結構之所以這麼來設計, 除了可以抽象出很多事物的共性以外,是不是還因為更適合機器的處理方式呢?   吳軍:   這個問題問得很好!對這個問題簡單的回答是肯定的,即數據結構的出現和計算機本身工作的方式有關。今天演化出來的很多數據結構, 甚至和圖靈機的原理,以及計算機底層的馮.諾依曼結構也有關。比如鏈表這種數據結構, 就和圖靈機的設計直接相關。   世界上很多抽象化的結果,都和我們人容易掌握的工具有關。比如我們將大部分零件做成圓形的 […]

  今天我們講解一個 Google 的面試題,假如你負責手機或者車載地圖這個產品,如何設計這樣一個功能,即找到離當前位置最近的幾個加油站?這樣的面試問題一來是考察計算機科學的基本知識,二來是看候選人分解問題、 解決問題的能力。   在解題之前,我們先要把問題理解清楚, 而不是一上來就盲目地做。很多人面試失敗的主要原因就是答非所問,或者沒有體會出題人的考察點。   對於這個問題,如果是車載的地圖,需要考慮到汽車是移動的,結果會不斷更新,因此那些速度很慢的算法就不適合這 […]

利用二元樹這個數據結構,或者說工具, 我們就能講解一個經典的計算機算法,叫做錦標賽排序算法,然後用這個算法,解決高盛的那道面試題,即如何從 25 個選手中賽出前三名。   先說說錦標賽排序法,顧名思義,它是受到體育比賽的啟發想出來的。   在單淘汰的錦標賽中,選手們兩兩比賽, 勝者晉級,敗者被淘汰。比如世界乒乓球錦標賽或者大滿貫網球賽就是這麼進行的。這樣一來,就可以把比賽的賽程和結果對應成一個二元樹。在樹中每一個選手是二元樹中的一個葉子結點,每一場比賽就相當於兩個數字在比大小 […]

今天我們從計算機的二元樹數據結構講起,然後談談如何從很多具體的事物或者現像中抽像出具有共性的概念,和提出解決一大堆問題的通用工具。   在講述今天的內容之前,先請大家思考這樣一個問題:在我們真實的世界裡,到底是具體的數值重要,還是數值之間相對的大小更重要,或者說相對的次序更重要?   我想絕大多數人會這樣說,〝這得看具體情況了,比如體育比賽,成績的相對值就比較重要,因為只要比其他選手得分高或者成績好,就是冠軍,至於你在百米比賽中是 9.9 秒還是 10 秒得到的冠軍,或者足球 […]

我們這週還會通過Google和高盛的面試題來介紹計算機科學的原理及其思維方式,不過我們需要先介紹點計算機的專業知識做鋪墊。這週要用到的專業知識是計算機的數據結構,它對於專業的計算機人士來講至關重要, 數據結構沒有學好,程序寫得再快,也是業餘水平。類似的做事方式可以推廣到其他領域, 掌握了它:就邁出了成為高級專業人士的第一步。   在介紹什麼是數據結構之前,先講兩個繪畫和攝影的例子。   我不知道你是否愛畫畫,或者曾經畫過畫,或者看過專業畫家創作的過程。一般人畫畫通常就直接畫了 […]

這個主題分為方法篇、認知篇、誤區篇和疑問篇,從 4 個維度,匯總截止到目前為止,人類對於〝學習〞這件事的最新研究。   一、 方法篇   1. 間隔學習   我們學習各種技能,有時候會遇到一個短暫的平台期。學習知識並不是越快越好。複雜的技能需要時間間隔。   人腦的記憶原理,是〝提取記憶〞這個動作能夠加強原有的記憶。所以有點間隔,暫時〝忘記〞一下,過不久再回憶一下,是效率最高的學習方式。   現在心理學認為人有兩種〝工作記憶〞。〝短期工作記憶〞相 […]

  總結來說有效的方法是這樣的。   1. 第一,對於一定的內容,你要在學習時間上安排一定的間隔不要突擊學習。   這個間隔學習法的原理是人腦的〝記憶曲線〞。隔一段時間回想前面學過的,然後再學新的,這個方法最有利於記憶。     2. 第二,你可以在不同的場景下、用不同的方式學習同一個內容。   比如說,同一個知識點,在課程上看老師演示一遍,這是視覺;回家自己精讀課本,這是讀寫;下一堂課,這是視覺;回家自己精讀課本, […]

我們要來講一個特別基本的問題,和一個新特別的解法。這個解法可以說是這本書的一個魅力所在,是科學的進步。   問題很簡單。你怎麼知道一個東西到底是不是真的有效呢?   1. 老百姓的層次   日常生活中常面對這樣的問題,例如賣很貴的保鍵品,那你怎麼知道它是不是真的有效呢?這一個問題,就能把人按見識長短拉開很多檔次。   ■ 最底層的判斷力:貴就有效   既然這個東西〝貴〞,那就肯定有效。有一個笑話叫〝珍珠翡翠白玉湯〞 —  也 […]

用一句話概括貝葉斯思想,就是〝觀點隨事發生改變〞。就如卓克老師愛說的一句話:〝知識這東西就得經常地核實和訂正〞。這個道理很簡單,你有一個信念,當這個信念的新事實進來之後,你就得修正這個信念。   那怎麼修正呢?堅定不移 — 不對,聽風就是雨 — 也不對。 科學的修正,就是貝葉斯的方法。   貝葉斯的方法有點像破案。福爾摩斯愛說自己用的是演繹法,其實不準確。破案是〝歸納法〞,演繹法是按照規則推導一件事情的結果,歸納法是從結果追溯緣故。你是從一具屍體出發, […]

前兩講已經做了大量的鋪墊,今天我們終於可以回到這個問題了:科學的世界到底有沒有因果關系。   這是一個大反轉的故事。我們先從哲學開始說。     1. 哲學   不知道你注意過沒有,物理定律裡根本就不包括因果關系。比如你拿個氣壓計測量大氣壓,物理定律說你的氣壓計讀數 B 和大氣壓 P 之間有一個正比關系。   B = kP   但是這個定律裡根本沒說〝誰導致了誰〞。是氣壓導致了氣壓計的讀數嗎?可是上面的方程式完全可以改寫成 P = B […]