<span id="ubbei"><video id="ubbei"></video></span>
<span id="ubbei"></span>
<span id="ubbei"><video id="ubbei"></video></span>
<strike id="ubbei"><video id="ubbei"></video></strike><th id="ubbei"></th>
<span id="ubbei"><video id="ubbei"></video></span><span id="ubbei"></span><span id="ubbei"><video id="ubbei"></video></span>
<th id="ubbei"><video id="ubbei"><span id="ubbei"></span></video></th>
<span id="ubbei"></span>
<th id="ubbei"><video id="ubbei"><span id="ubbei"></span></video></th><strike id="ubbei"><dl id="ubbei"><ruby id="ubbei"></ruby></dl></strike>
<span id="ubbei"></span>
<th id="ubbei"></th>
<span id="ubbei"></span>
<th id="ubbei"></th>
<span id="ubbei"></span>
<span id="ubbei"></span>
<span id="ubbei"></span>
<span id="ubbei"><video id="ubbei"><strike id="ubbei"></strike></video></span>
<strike id="ubbei"><video id="ubbei"></video></strike>

  • <output id="ubbei"></output>
          1. <li id="ubbei"><s id="ubbei"><strong id="ubbei"></strong></s></li>
          2. 面試造核彈,工作擰螺絲?

            最近在工作中遇到這么一個問題。

            一個使用機器學習算法的框架,在特征處理模塊,往往需要對原始特征進行特征交叉。對于簡單的單值特征來說,只需要將需要交叉的特征組合起來即可;但是對于多值特征之間的交叉,則需要窮舉多值特征每一個值的組合。例如,如果一個包含2個值的特征和一個包含3個值的特征組合,那么將會產生出6個組合。

            一般的,我們可以把這些多值特征描述為

            vector<vector<Feature>>
            

            那么給定這樣的一個數據結構,如何輸出所有的特征組合呢?

            直觀想法,這好像是直接遍歷就可以解決,但是稍微細想一下,簡單的N重for循環,無法解決這個問題。

            在紙上畫了一會兒之后,突然發現,這不就是一個輸出全排列的問題嗎?

            把問題抽象出來之后,我先是按照手工枚舉全排列的思路,寫了一個非遞歸的循環版本,但是可讀性不好。然后又實現了一個可讀性更好的遞歸版本。

            上面這個問題,只是一個引子。

            我相信,程序員在大學畢業找工作的時候,一定刷過各種各樣的算法題、數據結構題,什么貪心算法、動態規劃、快排、二分查找,現在算法工程師們還要手推SVM、反向傳播算法等等,面試時也是歷盡千辛萬苦;然而工作后卻發現,正是應了題目那句話:面試造核彈,工作擰螺絲。

            作為面試官也是一樣,考察了基礎知識、算法題、智力題一大圈,結果招來的人入職后,發現怎么干活還是不靠譜?

            話分兩頭說。

            對于上面的特征交叉問題,完全可以限定只支持2個特征交叉。那么直接

            f1 = features[0]
            f2 = features[1]
            for i in f1:
             for j in f2:
               cross(i, j)
            

            就直接解決了~皆大歡喜,完全不用想什么全排列不全排列的事情。

            如果事事都這樣簡而化之,那么確實,大部分的工作都是擰螺絲。

            但是,時代發展這么快,萬一將來,擰螺絲的工種直接被AI取代了呢?這么說吧,不涉及深入思考的工作,都將會慢慢邊緣化。千萬不要用戰術上的勤奮,掩蓋了戰略上的懶惰。

            另一方面,面試官在面試時,是要考察什么能力?是不是算法題寫的滴水不漏就行了?

            拋開對人的相關素質的考察(責任心、合作能力、態度等),我覺得不管是出算法題,還是出智力題,其實最主要的,是考察一個人抽象問題的能力。

            所以,直接讓人默寫一個快排,或者手推SVM,基本和問他“中國面積最大的計劃單列市是哪一個”沒什么區別。正確的做法,應該是從一個實際問題出發,在對話中,了解應聘者的能力。

            在萬事搜索一下便知的時代,同樣遇到一個陌生的問題,有的人就能很快的從搜索引擎上得到答案,有的人在搜索引擎上亂翻一天也解決不了。為什么?這就是抽象問題能力的差異。

            還是以上面我遇到的問題為例。有的人遇到這樣的問題,可能會去直接搜索“特征交叉”,這樣得到的結果中,噪音是非常多的;而有的人直接搜索“全排列算法”,基本上前三條就可以找到答案。

            最后說一句。腦子這個搜索引擎是最快的,所以知識、經驗還是要盡量記在腦子中;而抽象能力+搜索引擎,可以極大的擴展你的知識邊界。

            最后,祝大家中秋節都能造核彈~

            轉載請注明出處: http://blog.guoyb.com/2018/09/22/interview/

            歡迎使用微信掃描下方二維碼,關注我的微信公眾號TechTalking,技術·生活·思考:

            我來評幾句
            登錄后評論

            已發表評論數()

            相關站點

            +訂閱
            熱門文章
            陕西高频十一选五