成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

趙劼:我看面試時出(純)算法題

開發(fā) 架構(gòu) 算法
今天早上一邊出門一邊在平板上讀了左耳朵耗子的新文章《為什么我反對純算法面試題》,略有想法。正逢外面暴雨如注,我就又回屋打開筆記本發(fā)了一些回復,特此整理一下。為了避免有人扭曲我的看法,我先聲明我并不是反對這篇文章,相反我是基本同意其中的觀點,只不過會加以一些補充,把其中一些我認為有些過頭的地方按一按。

今天早上一邊出門一邊在平板上讀了左耳朵耗子的新文章《為什么我反對純算法面試題》,略有想法。正逢外面暴雨如注,我就又回屋打開筆記本發(fā)了一些回復,特此整理一下。為了避免有人扭曲我的看法,我先聲明我并不是反對這篇文章,相反我是基本同意其中的觀點,只不過會加以一些補充,把其中一些我認為有些過頭的地方按一按。您也可以認為我的觀點是提交一些補丁,發(fā)了一些Pull Request(當然不是這種Pull Request)就行了。我當時吐的***個槽,是說文章太鄙視搞學術研究的人,說他們是書***,不關心業(yè)務需求,認為那是應試教育不會思考的產(chǎn)物。這個么其實不是重點,只不過觸到了我的學術研究情結(jié)罷了,接下來的才是我真正想說的。

耗子的文章以前兩天的一個討論引出話題,那是一道面試題:“找出無序數(shù)組的第2大的數(shù)”,而在當時的面試中,“排序”后再取數(shù)被判為不合格的答案。耗子認為其實在工程中“排序”才是更合適的做法,因為需求往往會變化,經(jīng)過“需求分析”后更合理的決策應該是尋找“第K大的數(shù)”。我當時看到這題面試時就提出“尋找第K大的數(shù)”是一種過早優(yōu)化,但耗子在新文章里的觀點是,F(xiàn)indKthMax(array, k)才是更常見的接口,而不會是Find2ndMax。

不過,即便是從“工程”角度來說,我還是認為“排序”是種不合適的做法,同時FindKthMax(array, k)依然是種過早優(yōu)化。既然提出了需求是取第2個數(shù),其實我不太建議去考慮提前去實現(xiàn)取第K個數(shù)的需求,因為這太復雜了。例如,難道排序一次之后真可以反復取數(shù)?排序后反復取的前提是數(shù)組不變化,且這么做往往接口往往不是FindKthMax(array, k),而是new ArrayFinder(array).Find(k)。還有,排序往往會改變數(shù)組本身元素順序,那么是否允許?是否要做一份拷貝?要考慮這些實在太復雜了,其實既然目前的需求只是取第2個,這是個很有用的限制,兩個變量一個循環(huán)可以讓我們在3分鐘里完成這個工作,那何必要做成通用的呢?

此外,耗子認為是應試教育導致人們會選擇O(n)的做法,而不是排序。我的感覺恰好相反,因為排序才是人人會接觸過的事物,應試教育會讓人對排序有深刻的印象。但是對我來說,我看到這題的***反應就是“不能用排序”,因為這顯然會產(chǎn)生不必要的開銷。好吧,我不排除是“應試教育”讓我能立即看清題目意圖的可能性。

換個角度來說,其實Find2ndMax這種接口也并沒有什么問題,盡管只解決了特例,但針對這個特例高效地完成任務,且沒有副作用。大伙可以去看看.NET框架里的String.Concat方法,它為2~4個字符串的連接操作各實現(xiàn)了一份重載,還提供了一個接受一個字符串數(shù)組的接口。由于大部分字符串的連接操作都在4個以內(nèi),因此單獨為這些特例實現(xiàn)有針對性的實現(xiàn),這在實際工程中并不罕見。

我不反對純面試算法,尤其是我認為一個簡單的算法“你不會我就不能接受”的情況,這是個門檻。當然我也反對純用很變態(tài)的面試算法來刷人,例如winter被面試過的“Winner樹”以及傳說中的“大草原”。此外,誰說純算法不符合實際需求的啊?算法根據(jù)輸入?yún)?shù)的大小變化選取不同策略這個太多了,純算法沒說在割離工程。更進一步地說,算法題也不代表只有標準答案才是正確的,算法題只是表現(xiàn)形式,考得也是解題思路,并非只有“***解”才算過關,次優(yōu)解以及溝通的過程都是在考察面試者。就如winter當年并不知道“Winner樹”,但通過發(fā)現(xiàn)題目中缺少的一個限制條件,使用取哈希值的方法給出了滿足要求的解決方案,這也體現(xiàn)出了強大的應變能力,這對于“工程”來說也至關重要。

有問題的不是算法題,只不過是面試官或是面試方式而已。

再順便談下ACM,因為我預感有人會借此鄙視ACM。其實按照耗子在文章里的標準,ACM絕對屬于很工程的環(huán)境。因為你要在掌握算法的基礎上,快速理解需求,建模,根據(jù)數(shù)據(jù)量選擇合適的做法,符合題目的時間限制和空間限制快速解決問題。此時能夠快速暴力枚舉的就不用高級解法,甚至預先思考準備兩種做法,一種無法通過立即換上第二種。更何況還是絕對在高壓環(huán)境下,與所謂的“工程環(huán)境”十分相符。

當然,ACM也并非沒有與工程中相違背的地方,例如不重視代碼的可維護性,還有輸入數(shù)據(jù)的邊界條件等等。這順便可以引出一個可以寫入“面試寶典”的面試經(jīng)驗:拿到問題后確認每一個輸入的細節(jié),例如現(xiàn)在這題是2呢還是k,還有例如是不是會小于零等等。很多面試官其實也是在考察面試者對于邊界條件的關注程度,問清楚這些有利于提升自己的形象,給自己爭取思考的時間,幾乎有百利而無一害。

除非你遇到了***面試官,這就是另外一回事情了。

再除非你是美女,這就又是另外一回事情了。

話說男人真是沒出息的動物,看到美女就圍著團團轉(zhuǎn)流口水。

原文鏈接:http://blog.zhaojie.me/2012/08/my-opinion-of-algorithm-interview.html

責任編輯:林師授 來源: 博客園
相關推薦

2011-03-01 09:36:26

面試算法解題思路

2009-02-27 10:30:09

面試聯(lián)想智力

2012-08-20 14:09:29

面試

2012-08-22 09:32:54

面試面試題

2010-08-09 16:30:53

面試

2010-08-10 16:21:48

面試薪資

2010-11-09 10:24:46

面試

2019-12-23 15:17:21

JVM結(jié)構(gòu)

2022-04-30 08:09:37

面試開發(fā)閱讀源碼

2010-08-04 14:11:58

面試木訥

2012-12-28 15:53:53

面試應屆畢業(yè)生

2021-06-21 07:44:07

程序員面試職場

2022-07-27 11:05:31

面試經(jīng)驗

2010-07-20 15:52:01

面試

2010-04-20 14:59:56

面試

2014-08-13 09:47:17

面試

2020-10-26 08:55:52

Redis單線程模型

2021-01-30 11:09:05

技術Java面試

2010-06-09 11:20:53

求職者面試

2014-08-14 10:19:01

程序員
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 高清av在线 | 中文在线一区二区 | 男女免费网站 | 一区二区三区在线播放 | 国产精品视频久久 | 欧美精品一 | 久久国产精品视频观看 | 欧美性猛片aaaaaaa做受 | 天天爽天天操 | 欧美精品中文字幕久久二区 | 亚洲天堂二区 | 亚洲欧洲日韩精品 中文字幕 | 美女三区 | 成人免费视频网站在线观看 | 91秦先生艺校小琴 | 欧美激情网站 | 日韩毛片在线观看 | 国产婷婷精品av在线 | jlzzxxxx18hd护士 | 亚洲 欧美 日韩 在线 | 精品国产乱码一区二区三区a | 久久天天躁狠狠躁夜夜躁2014 | 国产伦精品一区二区三区照片91 | 日韩 欧美 二区 | 九色在线观看 | 国产亚洲精品久久久久久牛牛 | wwww.xxxx免费| 亚洲一区二区三区四区av | 欧美黑人国产人伦爽爽爽 | 精品视频一区二区三区四区 | 99热精品在线观看 | 美女天天干天天操 | 天天操夜夜操 | av在线一区二区三区 | 一级免费看片 | 精品欧美一区二区三区久久久 | 国产精品一区二 | 欧美三级在线 | 一区二区三区四区免费视频 | 亚洲国产成人久久综合一区,久久久国产99 | 久久影音先锋 |