1. 程式人生 > >還記得面試時被演算法支配的恐懼嗎?

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

 

面試造火箭,上班擰螺絲

大多數程式設計師心裡會想"總結的真精闢",當面試到演算法時,各種“跪”、“再跪”、“還是跪”......,多少人因為演算法而拿不到心儀的offer,演算法毀一生啊。

智力面試時代

現在演算法已經成為大廠面試的重中之重,甚至一些國外的大廠只面試演算法,為什麼會這樣呢?其實在早期,也就是微軟當老大的時候,大廠面試最愛考“智力題”,比如:

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

等等等等等等等等等等等等。

實在想象不出面試程式設計師還需要會“腦筋急轉彎”,不過按照當時微軟的半官方說法是:

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

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

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

演算法面試時代

隨著網際網路行業的高速發展,從業人員的專業能力越來越高,公司對像“沙僧”一樣能踏踏實實幹活同時具備一定解決專業問題能力的人越來越重視,解決專業問題能力是一個很寬泛的概念,反應力、敏銳力、溝通能力等等,說白了就是有動手解決問題的能力,為什麼現在很多公司面試有筆試甚至是真槍實彈(直接上機寫程式碼)的考核,當下大部分面試人員面試前都刷題,準備的很充足,紙上談兵能力比得上“趙括”。

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

Talk is cheap, show me the code

文明的解釋是:

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

通俗的解釋是:

屁話少說,放碼過來。

因此如何在短時間內找到專業能力和動手解決問題的能力的人?解決實際演算法問題是一個很好的學以致用的過程,不僅考察了專業能力,也考察了動手解決問題的能力,經典演算法和資料結構就那麼多,設計思想也就那麼多,如何用這些知識解決實際問題並不是想的那麼簡單,需要很強的邏輯能力。

這就是為什麼大廠都愛考演算法問題的原因,他們需要在短時間內判斷面試者是否是他們需要的人才,那演算法不好的人就一定不是人才嗎?不,這是一個概率問題,從概率學上來說,懂演算法的人要比不懂演算法的人更適合他們。那放棄那些演算法不過關的人他們不後悔嗎?說句扎心的話:他們不在乎,大廠的簡歷源源不斷,這個不行,馬上下一個。

除非你做出了非一般的成就,他們會因為沒有錄取你而感到惋惜。不知道大家記不記得 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

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

相關推薦

記得面試演算法支配恐懼

 面試造火箭,上班擰螺絲 大多數程式設計師心裡會想"總結的真精闢",當面試到演算法時,各種“跪”、“再跪”、“還是跪”......,多少人因為演算法而拿不到心儀的offer,演算法毀一生啊。 智力面試時代 現在演算法已經成為大廠面試的重中之重,甚至一些國外的大廠只面試演算法,為什麼會這樣呢

面試問到的技術方面的問題

額,面了幾個月,還是沒面過。總結一下被問到的一些方面。 昨天面Java,被問到 List Set Map的區別。  StringBuffer 和StringBuilder的區別。  筆試上也有 HashTable 和 HashMap的區別。 雖然我都不知道。。。。 位元組流

記得第一個看到的Flutter元件

![](https://img2020.cnblogs.com/other/467322/202003/467322-20200321171101823-1019065466.png) > 注意:無特殊說明,Flutter版本及Dart版本如下: > - Flutter版本: 1.12.13

記得程式設計師的我們面試,背的Java葵花寶典麼?

Q51如何限制一個類不被繼承? Ans:使用關鍵字Final。 在下面的例子中,Stone類就不能被繼承了。 Q52訪問說明符的訪問範圍是什麼? Ans: Q53棧和佇列之間有什麼區別? Ans:棧和佇列之間的主要區別在於,棧基於“後進先出(LIFO)”原則,而佇

面試經常會問到的 3 個問題

本地 描述 邏輯 例子 換工作 繼續 腳本 比較 .com 前幾天,我在《簡歷中打動人的 3 個關鍵點》和《簡歷中千萬不要出現的 3 個問題》中講了一些寫簡歷的註意事項,今天想聊聊在面試過程中,如何更好的體現出自己的真實實力。 面試時,我經常會拿下面 3 個問題開場: 1

面試,你問到過 TCP/IP 協議?

前言: 精通 TCP/IP,熟練使用 Socket 進行網路程式設計。 看到這句話,有沒有感到很熟悉呀?相信很多人在投遞簡歷的時候都看到過這條要求,很多人會覺得我們在實際開發中一般用不到這些知識,所以對這些東西不屑一顧. 但是筆者認為想要做出更好的 APP,那麼對這些基礎

面試該死的排序演算法

2014-07-09 程式設計師面試時考演算法是個很頭疼的問題,但還是不得不看一下。排序分為內部排序和外部排序,內部排序指待排序的記錄在記憶體中,外部排序的記錄數量很大,以至於記憶體放不下而放在外存中,排序過程需要訪問外存。這裡僅介紹內部排序,包括插入排序、交換排序、選擇排序、歸併排序

面試95%會問道的問題,不看會後悔【轉】

一、基本情況1、請用最簡潔的語言描述您從前的工作經歷和工作成果。 考察要點:測試應聘者是否能夠用幾句話概要地介紹其主要的工作資訊和重點業績,而不是以流水帳的形式重複履歷表有已經註明的內容。在介紹工作成 果時,注意應聘者能否正確表述其在原單位所發揮的作用。儘管有關基本能力的提問大多可以通過簡歷或應聘表格反

面試最經常問到的問題(Frenquently asked interview questions)(II)

面試時最經常被問到的問題(Frenquently asked interview questions)之Analytical, puzzles, and brain-teasers篇 Analytical, puzzles, and brain-teasers Questio

Java虛擬機器知識彙總,有這些面試問到?

首先我們來看一下Java執行時的資料區域,Java虛擬機器在執行Java程式的過程中,會把它所管理的記憶體,劃分成若干個不同的資料區域,這些區域都有各自的用途,各自的建立和銷燬的時間。 有的區域,隨著虛擬機器程序的啟動而存在;有些區域,則依賴使用者執行緒的啟動和結束而建立和銷燬。 我們來看一

面試經常問到springboot版本問題

一、Spring Boot 版本支援Spring BootSpring FrameworkJavaMavenGradle1.2.0之前版本63.0+1.6+1.2.04.1.3+3.2+1.12+1.2

Android View類的四個建構函式-面試問到

/**  * 從程式碼建立檢視時使用的簡單建構函式.即在程式碼中new View(context);  *  * @param context 上下文引數  */ public View(Context context) {mContext = context;mResou

@程式設計師,你記得當年高考的樣子

01、程式設計師天天 說實話,我高考的時候內心毫無波瀾,因為自己啥水平能掂量出來的,想著就是考多少分都無所謂,反正開心就好,所以高考前幾天也沒複習,該玩玩、該吃吃、該喝喝。 父母很看不慣我當時一幅“漫不經心”的姿態,威脅我說如果考砸了,就辜負了他們十幾年的心血。 考試的過程裡確實

面試說Redis是單執行緒的,噴慘了!

Redis是單執行緒的,這話擱以前,是橫著走的,誰都知道的真理。現在不一樣,Redis 變了。再說這句話,多少得有質疑的語氣來跟你辯駁一番。意志不堅定的,可能就繳械投降,順著別人走了。 到底是什麼樣的,各位看官請跟小萊一起往下: 圖注:思維導圖 Reactor模式  反應器模式,你可能

一萬四千字分散式事務原理解析,全部掌握你面試問?

### **前言** 從 CPU 到記憶體、到磁碟、到作業系統、到網路,計算機系統處處存在不可靠因素。工程師和科學家努力使用各種軟硬體方法對抗這種不可靠因素,保證資料和指令被正確地處理。在網路領域有 TCP 可靠傳輸協議、在儲存領域有 Raid5 和 Raid6 演算法、在資料庫領域有基於 ARIES

css布局,面試經常問的布局

ont 固定 idt oat 高度自適應 align min lin container 左側寬固定200,高度自適應,右側的框寬度都自適應<style> * { margin: 0; padding: 0; } h

記得早起偷菜!朋友圈曬步?藍鯨遊戲背後的極端強迫癥

強迫癥 好奇心 人民網 電子遊戲 死亡遊戲 據媒體報道,為期50天、以“做任務”形式誘導參與者完成各類自殘行為甚至自殺的死亡遊戲“藍鯨”近期已傳入國內社交平臺,到5月末,已有極少數少年深陷遊戲中,不能自拔。更有一些無良之人,開始借青少年對“藍鯨”遊戲的好奇心行詐騙之實。比如,借“帶人進藍鯨

Java面試常會問到的經典面試題,學習或者求職,你都要好好掌握

cookie 異常類 shu data 區別 origin 目的 tro jdk和jre Java現在的熱度雖然有所下降,但是,學Java的人依舊很多。。Java的崗位也是滲透很多。那麽,那些經典的Java知識點,你能看到問題就能說出一二三嗎?來一起看看。。 1.JDK和

C語言scanf執行跳過

null 是個 ase 程序 一輪 發現 控制 cas logs 運行到第二次開始遊戲時,發現GameJudge函數中的scanf無法從鍵盤中輸入數據 這種情況的出現是因為用戶在輸入結束時都會敲一下回車鍵才能讓程序繼續執行, 但是,每次printf會從用戶輸入緩沖區取出用戶