還記得面試時被算法支配的恐懼嗎?

 

面試造火箭,上班擰螺絲

大多數程序員內心會想"總結的真精闢",當面試到算法時,各類「跪」、「再跪」、「仍是跪」......,多少人由於算法而拿不到心儀的offer,算法毀一輩子啊。linux

智力面試時代

如今算法已經成爲大廠面試的重中之重,甚至一些國外的大廠只面試算法,爲何會這樣呢?其實在早期,也就是微軟當老大的時候,大廠面試最愛考「智力題」,好比:git

  • 井蓋爲何是圓的?
  • 如何用3升和5升桶量取4升水?
  • 有一對夫婦,前後生了兩個孩子,其中一個孩子是女孩,問另外一個孩子是男孩的機率是多少

等等等等等等等等等等等等。程序員

實在想象不出面試程序員還須要會「腦筋急轉彎」,不過按照當時微軟的半官方說法是:github

計算機行業是一個新興的行業,前面沒有燈塔能夠對齊,天天都有大量新鮮的問題須要解決,擁有創新性的員工是公司急需的,公司須要這些人去打破常規,創造奇蹟。面試

不得不說擁有「創新性」的人才不只是公司,甚至是全社會都急需的,但真理畢竟只掌握在少數人的手中,大神也屈指可數,公司須要這些高屋建瓴的人來掌舵,也須要普通的水手來划槳,作爲普通人中的一員,我僅僅是來應聘「水手」的,我能踏踏實實、認認真真的完成領導交給個人任務,就像一個團隊須要「孫悟空」同樣的大神,也須要「沙僧」同樣踏踏實實幹活的人。算法

這樣選拔人才是否合理有待商榷,畢竟當時的互聯網是新興的行業,你們都在摸着石頭過河,從歷史的結果看,目前的微軟已經被Google、Apple等企業反超了。編程

算法面試時代

隨着互聯網行業的高速發展,從業人員的專業能力愈來愈高,公司對像「沙僧」同樣能踏踏實實幹活同時具有必定解決專業問題能力的人愈來愈重視,解決專業問題能力是一個很寬泛的概念,反應力、敏銳力、溝通能力等等,說白了就是有動手解決問題的能力,爲何如今不少公司面試有筆試甚至是真槍實彈(直接上機寫代碼)的考覈,當下大部分面試人員面試前都刷題,準備的很充足,紙上談兵能力比得上「趙括」。數據結構

Linux 的創始人 Linus Torvalds 在 2000-08-25 給linux-kernel 郵件列表的一封郵件提到的:編程語言

Talk is cheap, show me the codeui

文明的解釋是:

能說算不上什麼,有本事就把你的代碼給我看看。

通俗的解釋是:

屁話少說,放碼過來。

所以如何在短期內找到專業能力和動手解決問題的能力的人?解決實際算法問題是一個很好的學以至用的過程,不只考察了專業能力,也考察了動手解決問題的能力,經典算法和數據結構就那麼多,設計思想也就那麼多,如何用這些知識解決實際問題並非想的那麼簡單,須要很強的邏輯能力。

這就是爲何大廠都愛考算法問題的緣由,他們須要在短期內判斷面試者是不是他們須要的人才,那算法很差的人就必定不是人才嗎?不,這是一個機率問題,從機率學上來講,懂算法的人要比不懂算法的人更適合他們。那放棄那些算法不過關的人他們不後悔嗎?說句扎心的話:他們不在意,大廠的簡歷源源不斷,這個不行,立刻下一個。

除非你作出了非通常的成就,他們會由於沒有錄取你而感到可惜。不知道你們記不記得 Max Howell,這位就是發明Homebrew 的大神,這位牛人曾經就由於一個算法問題而被Google拒絕,讓咱們來看一看是多麼複雜的算法題:

給出一棵二叉樹,求這棵二叉樹的鏡像

其實就是翻轉二叉樹,這道題怎麼說呢?在Leetcode上級別被定義爲‘easy’,沒錯,你沒有看錯,就是‘easy’,只要你答對這道題,就能夠超越世界級大牛,問鼎碼林之巔。

這位IOS界的大牛就這樣折戟在沙灘上:

因此你們不要由於算法面試很差而自我否認,面試自己就處於一個信息不對稱的位置,面試官都已經知道答案了。
還有下面這位:

如何跨越算法面試

在我看來,要想跨越算法面試有2個方法:成爲領域專家和理解算法

先來講說第一種成爲領域專家,讓公司再也不把你當成是普通的求職者,固然想成爲領域專家難度仍是很是大的,不只須要再某一領域深耕多年,還須要能拿出亮眼的成績,好比下面這位:

Java之父——詹姆斯·高斯林,用Java的童鞋必定都很熟悉這位天才,他出生於加拿大,是一位公認的計算機編程天才。在卡內基·梅隆大學攻讀計算機博士學位時,他編寫了多處理器版本的Unix操做系統,是JAVA編程語言的創始人。

再好比這位:

Python之父——Guido van Rossum,1982年得到阿姆斯特丹大學的數學和計算機科學的碩士學位的他在7年後創立了Python語言。1991年初,Python發佈了第一個公開發行版。到今天,Python語言已經從衆多編程語言中脫穎而出成爲最受歡迎的語言。

這樣的牛人,若是想去某一公司,面試流程確定不同,作爲普通大衆的我,將來10年或者20年,不知道能不能讓別人也稱我爲「大牛」,至少目前我還不能讓公司爲我單獨設計面試流程,算法面試仍是要經歷的,既然不可避免,就讓咱們擁抱吧。

刷題刷題,刷出來的不只是題,還有咱們的思惟,既要知其然,也要知其因此然,而不只僅是完成題目+1。

最近2天Github上有一個很是火熱的開源庫,短短几天star已經3.4K了,這個開源庫整理了60多篇乾貨,目錄以下:

還有不少,這就不一一截圖了,看完這些是否是感受乾貨滿滿,最後奉上GitHub地址:https://github.com/labuladong/fucking-algorithm

今天的文章對你們是否有幫助?若是有,請在文章底部留言和點贊,以表示對個人支持,大家的留言、點贊和轉發關注是我持續更新的動力!

相關文章
相關標籤/搜索