1. 程式人生 > >年後跳槽BAT必看:10種資料結構、演算法和程式設計課助你面試通關

年後跳槽BAT必看:10種資料結構、演算法和程式設計課助你面試通關

640?wx_fmt=jpeg


作者 | javinpaul

譯者 | 大魚

編輯 | 一一

出品 | AI 科技大本營


進入 BAT 這樣的巨頭企業工作,無疑是很多程式設計師的夢想。但事實上,能通過這些公司高難度程式設計面試的只是一小撮人,大多數人因為理論知識和專案實踐的匱乏導致在面試後很快被淘汰,沒有為面試提前做好紮實的準備工作。


年後是程式設計師扎堆跳槽的高峰時段,如何準備好這些大公司的程式設計面試?應該先準備哪些方面?需要解決哪些問題?如何解決程式設計中出現的文因以及其他相關技術問題?尤其對計算機專業的畢業生而言,這些問題對他們來說無所適從,僅依賴於課本中的程式語言和資料結構來準備面試,很明顯遠遠不夠。


程式設計師 javinpaul 對此深有體會,早年間他面臨同樣的困境,也因此錯失了 Microsoft 和 Amazon 的工作機會,所以他在部落格上分享了自己多年來總結的課程學習經驗,以幫助程式設計師在程式設計面試中做好準備。


他給出的程式設計面試“法寶”中,不僅有專門針對於程式設計面試的書,如《Crack the Coding Interview Questions》,還有線上課程和程式設計訓練營,來幫助程式設計師準備程式設計面試。


《Crack the Coding Interview Questions》:https://www.amazon.com/Cracking-Coding-Interview-6th-Edition/dp/0984782850/?tag=javamysqlanta-20


線上課程:

https://www.udemy.com/data-structure-and-algorithms-analysis/?ranMID=39197&ranEAID=JVFxdTr9V80&ranSiteID=JVFxdTr9V80-D7xMS63xqgQEy4yY4.nrNA&LSNPUBID=JVFxdTr9V80


雖然訓練營可以學習方法論、重點總結以及嚴謹練習,但它的費用有點高,並不是每個學生都能負擔得起。另一個選擇是如《Software Engineer Interview Unleashed》這樣的線上課程,既便宜又能提供類似程式設計訓練營裡面的互動指導。


Software Engineer Interview Unleashed:


https://www.udemy.com/software-engineer-interview-unleashed/?ranMID=39197&ranEAID=JVFxdTr9V80&ranSiteID=JVFxdTr9V80-XBOd9Wf4.vpVOmaGgzxwjA&LSNPUBID=JVFxdTr9V80


在諸如 Udemy 和 PluralSight 這樣一些流行的線上課程網站上,有很多可供大家選擇的程式設計面試課程,而你要選擇合適自己的課程。


Udemy:

http://javarevisited.blogspot.sg/2018/01/top-10-udemy-courses-for-java-and-web-developers.html


PluralSight:

https://javarevisited.blogspot.com/2017/12/top-10-pluralsight-courses-java-and-web-developers.html#axzz53viuJDer


十門針對程式設計面試的資料結構與演算法課


javinpaul 分享了一些有助於準備程式設計面試的優質課程,你可以根據個人的經驗和技能,從中選擇一到兩門課,從而去準備下一次工作面試。這些課程的大部分都側重於資料結構與演算法,這是所有程式設計面試中最重要的話題,但它們也會教你如何解決問題以及工作面試中其他方面的知識,如關於程式語言的問題,Java、C++、資料庫、SQL 概念及 Linux 命令等。


一旦你完成了任何一門線上培訓課程,就會具備足夠的知識去開始下一次面試,同時也會更清楚未來的努力方向。


一、資料結構與演算法分析 -- 求職面試


對於 Java 程式設計師來說,這可能是最好的程式設計面試課程。然而該課程對程式語言沒有要求,如果你不瞭解 Java,作者會教你。在該課程中,你會學習到演算法分析,如查詢、排序及其他一些演算法,還可以學習如何降低程式碼的複雜度等技能。另外,你會學習到不同型別的資料結構,以及如何選擇合適的資料結構來解決不同問題。


640?wx_fmt=jpeg

要記住,選擇合適的資料結構能夠大大提升 CPU 和應用程式的記憶體效能。比如用集合來解決重複元素問題會容易很多。你也會學習到如何求每種資料結構的複雜度。最後,你可以寫出執行更快且記憶體使用率低的程式碼,也能學習如何使用被許多程式設計師忽略的技術來分析問題。


該課程適合所以程式設計師,特別是 Java 程式設計師。如果你正在尋找關於 Java 的優質程式設計面試課程,這就是你要找的。你可以從零開始學習它,也可以在面試前先更新腦中的知識儲備。


課程連結:

https://www.udemy.com/data-structure-and-algorithms-analysis/?ranMID=39197&ranEAID=JVFxdTr9V80&ranSiteID=JVFxdTr9V80-jaUlNTlHjE8FidX6ZEWLYw&LSNPUBID=JVFxdTr9V80


二、助力軟體工程師面試


該課程是由一位前 Google 面試官製作,是最棒的程式設計面試課程之一。如果你是一位軟體工程師,正在尋找 Google、Facebook、SnapChat 或 Airbnb 等科技巨頭公司的工作機會,那麼這門課程很適合你。該課程也特別適合那些正在尋找在大型科技公司和創業公司工作機會的大學畢業生及初級開發人員。


你不僅可以學習資料結構和演算法以及其他面試的技術知識,也將有機會感受真實的電話和現場面試例項,從而看到面試官的評估標準。


課程連結:

https://www.udemy.com/software-engineer-interview-unleashed/?ranMID=39197&ranEAID=JVFxdTr9V80&ranSiteID=JVFxdTr9V80-MqLfTpFyEr28tyHtGFvpJw&LSNPUBID=JVFxdTr9V80


三、為工作面試做準備


這是另一門有關準備技術工作面試的優質課程。該課程的導師是 John Sonmez,同時也是暢銷書《Soft Skills: The software developer’s life manual》的作者,這本書講解了要通過程式設計面試的要素。該課程中,你不僅可以學到如何現場解決程式設計題目,也可以學習如何回答面試官提出的有關複雜度和優化方面的棘手問題。


課程還包含非常火爆的訓練營內容,覆蓋了資料結構、演算法、位操作和併發等電腦科學問題。總之,對準備軟體工作面試來說,這是個大禮包。


《Soft Skills: The software developer’s life manual》:

https://www.amazon.com/Soft-Skills-software-developers-manual/dp/1617292397?tag=javamysqlanta-20


課程連結:

https://www.pluralsight.com/courses/developer-job-interviews?clickid=yju2AGwpe06fQ030%3A1xskw0BUkgWkKXuYRMpRE0&irgwc=1&mpid=1193463&utm_source=impactradius&utm_medium=digital_affiliate&utm_campaign=1193463&aid=7010a000001xAKZAA2


四、程式設計面試訓練營:演算法 + 資料結構


該課程的作者花費了很多時間研究 Google、Facebook 和 Amazon 的面試題,並分享了自己解決這些問題的經驗。這門課中,你會看到大量的常見演算法問題,覆蓋了從“翻轉字串”到“查詢二叉樹的葉節點”等問題。該課程也介紹了面試中最重要的資料結構,如列表、集合、map、堆、佇列、樹等。對一些新手來說,在設計一個實際系統方面可能缺乏經驗,該課程則給出了一些系統設計面試中的實用建議。

640?wx_fmt=png

課程連結:

https://www.udemy.com/coding-interview-bootcamp-algorithms-and-data-structure/?ranMID=39197&ranEAID=JVFxdTr9V80&ranSiteID=JVFxdTr9V80-5lrxVmGjQSPbnBklVGdUeg&LSNPUBID=JVFxdTr9V80


五、突破:程式設計面試


對於 Java 和 C 語言程式設計師來說,這是一門比較優質的入門課程。和之前課程類似,這門課涵蓋了一些基本概念,如指標、字串、連結串列、排序、位操作、資料結構和系統設計。大多數的解決方案都是基於 C 語言,還有部分基於 Java。對於那些想要在面試之前,溫習資料結構和演算法概念的新手工程師和資深程式設計師來說,這是一門很棒的課程。

640?wx_fmt=png

課程連結:

https://www.udemy.com/break-away-coding-interviews-1/?ranMID=39197&ranEAID=JVFxdTr9V80&ranSiteID=JVFxdTr9V80-omgKGVJwkV5ppmX_dzonwA&LSNPUBID=JVFxdTr9V80


六、動態規劃介紹 —— 程式設計面試的準備工作


如果你瞭解動態規劃,那麼很多程式設計問題就很容易解決,但許多開發者對此並不瞭解,包括一些有經驗的開發者。這門課程會教你有關動態規劃的知識,以提高演算法水平,併為軟體工程師的程式設計面試做準備。你也會學到一維和二維的動態規劃問題,以及如何推導遞迴關係,並寫出一個遞迴解法,然後在幾分鐘內完成程式設計。


640?wx_fmt=png

   這門課覆蓋的幾個動態規劃問題如下:


  • 爬樓梯

  • 股票最佳買賣時間

  • 0/1 揹包問題

  • 最長公共子串

  • 最長公共子序列


總之,這是一門學習動態規劃的絕佳課程。即使你不需要準備程式設計面試,你依然可以上這門課,以提高你在動態規劃和演算法方面的知識儲備。這門課使用了 Java 和 Python,所以它對使用這些語言的開發者很適用。


課程連結:

https://www.udemy.com/dynamic-programming/?ranMID=39197&ranEAID=JVFxdTr9V80&ranSiteID=JVFxdTr9V80-0rYrbMACaYa1Kd_tkHT3dA&LSNPUBID=JVFxdTr9V80


七、面向資料結構、演算法和麵試的 Python 課程


這是一門特別為 Python 開發者設計的資料結構、演算法及程式設計面試課,它側重於如何利用 Github 和 LinkedIn 來打動招聘者。該課程也可以幫你建立優秀簡歷,這一點很容易被大多數程式設計師忽略。要記住,是簡歷給你面試的機會,如果你的簡歷不夠好,那很難有好的面試結果。該課程中,你不僅可以學習所有重要的資料結構和演算法,還包括有關虛擬面試的內容。對 Python 程式設計師來說,這是最好的程式設計面試課程之一。      

640?wx_fmt=png

課程連結:

https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/?ranMID=39197&ranEAID=JVFxdTr9V80&ranSiteID=JVFxdTr9V80-fOz25XXf53jVhfaGb92blw&LSNPUBID=JVFxdTr9V80


八、11 個重要的面試程式設計問題 + 程式設計練習


直到你可以解決大多數面試中的常見問題,才能說你做好了面試準備。這門課程介紹瞭如何一步步解決 11 個常見問題。該課程很短,建議你配合其他課程一起學,但它很利於學習如何基於現有的資料結構與演算法知識去解決一個全新問題。


640?wx_fmt=png


課程連結:

https://www.udemy.com/11-essential-coding-interview-questions/?ranMID=39197&ranEAID=JVFxdTr9V80&ranSiteID=JVFxdTr9V80-F4bvNQmD1SG9LXaAk9DL3Q&LSNPUBID=JVFxdTr9V80


九、200+ 個 SQL 面試問題


程式設計面試中,有關 SQL 查詢語句和資料庫的問題十分常見,因此對一個電腦科學專業的畢業生或程式設計師來說,提前準備 SQL 問題很重要。這門課提供了 200 多個有關 SQL 語句的程式設計面試問題。


640?wx_fmt=png


課程連結:

https://www.udemy.com/sql-interview-questions/?ranMID=39197&ranEAID=JVFxdTr9V80&ranSiteID=JVFxdTr9V80-lL2z7mtHccWgSMPKhoKlPQ&LSNPUBID=JVFxdTr9V80


十、200+ 適用於初學者的 Java 面試問題


該課程是特別為正在找 Java 開發工作的 Java 程式設計師或開發者設定的。由於 Java 的內容太多,所以不可能準備得面面俱到,尤其在比較短的準備時間內,這也是這門課的亮點。該課程提供了 200+ Java 面試問題,涵蓋了 Java 的各個方面。對於你可能在實際面試中遇到的 Java 問題來說,這個合集是極具代表性的。


640?wx_fmt=png


以上是一些有關準備程式設計面試的優質課程。作者認為,對於求職面試來說,致勝的關鍵點是思考問題和實際程式設計的能力。你需要付出許多努力才能達到這個境界。幸運的是,有許多可以供你使用的刷題網站。一旦你學習過這些課程中的某一門,你就可以嘗試解決列表中的 50 個程式設計問題了。


現在你已經做好參加程式設計面試的準備了


有許多有關準備程式設計面試的優質課程。它們會教你資料結構和演算法的知識,幫你在面試中很好的表現。


作者在部落格上分享過許多程式設計面試問題,如果你對此感興趣,可以去搜索檢視。如果你想要通過任何公司及任何水平的求職面試,就需要搞懂常見的程式設計、資料結構和演算法問題。


部落格連結:http://java67.com/


如果你正在找程式設計或軟體開發工作,則可以從這個演算法列表和求職面試課程開始。對於成功的程式設計面試來說,完備的資料結構及演算法知識儲備至關重要,這是你應該集中精力的部分。


最後,給出其它的程式設計面試資源:


  • 50+ 資料結構和演算法問題:

    https://hackernoon.com/50-data-structure-and-algorithms-interview-questions-for-programmers-b4b1ac61f5b0



  • 30+ 程式設計面試中的連結串列問題:

    http://javarevisited.blogspot.sg/2017/07/top-10-linked-list-coding-questions-and.html#axzz4xXS86IVo


  • 30+基於陣列的程式設計問題:

    http://javarevisited.blogspot.sg/2015/06/top-20-array-interview-questions-and-answers.html#axzz4tUeeQOAU


  • 10 個程式設計面試的常見語句:http://www.java67.com/2013/04/10-frequently-asked-sql-query-interview-questions-answers-database.html


  • 50+ 電面程式設計問題:https://javarevisited.blogspot.com/2015/02/50-programmer-phone-interview-questions-answers.html#axzz5C5tt0mTL


  • 資料結構與演算法 —— 深入 Java:

    https://www.udemy.com/data-structures-and-algorithms-deep-dive-using-java/?ranMID=39197&ranEAID=JVFxdTr9V80&ranSiteID=JVFxdTr9V80-uIAsXo8oee5pDf1btLL9Bw&LSNPUBID=JVFxdTr9V80


  • 每個程式設計師都應該讀的 10 本書:

    http://www.java67.com/2015/09/top-10-algorithm-books-every-programmer-read-learn.html


  • 適用於 Java 開發者的資料結構與演算法書 Top 5:

    http://javarevisited.blogspot.sg/2016/05/5-free-data-structure-and-algorithm-books-in-java.html#axzz4uXETWjmV


  • 從 0 到 1 —— 基於 Java 的資料結構與演算法:

    https://www.udemy.com/from-0-to-1-data-structures/?ranMID=39197&ranEAID=JVFxdTr9V80&ranSiteID=JVFxdTr9V80-t5PMt80qbjGYhd3O5t8_Yw&LSNPUBID=JVFxdTr9V80


原文連結:

https://hackernoon.com/10-data-structure-algorithms-and-programming-courses-to-crack-any-coding-interview-e1c50b30b927


(*本文為 AI科技大本營編譯文章,轉載請聯絡微信 1092722531


公開課預告

全雙工語音對話



本期公開課中,微軟小冰全球首席架構師及研發總監周力博士將介紹微軟小冰在全雙工語音對話方面的最新成果,及其在智慧硬體上的應用和未來將面臨的更多技術產品挑戰。


新增小助手微信csdnai2,回覆:全雙工語音對話,加入課程交流群,課程回放以及PPT將在群內分享。


640?wx_fmt=jpeg


推薦閱讀: