軟體工程師面試資源整理

Jimmy Hung
Hungys.blog()
Published in
6 min readMar 6, 2016

從去年開始就有開始整理對軟體工程師面試有用的資源,尤其是針對外商公司、或是矽谷的軟體公司,臺灣的話比較具代表性的包括傳說中的大魔王群暉。我想應該網路上都找得到相關的分享,不過還是稍微記錄一下有用的資源。

這邊的內容會比較專注在資工領域的基礎能力,而不談各種前端、後端 framework 這類,畢竟不同的工作內容需要不同的 domain knowledge。

基礎知識

基本上大公司的面試都還滿看中演算法資料結構這類的基本能力,這兩項除非你是 ACM 大神不然應該都需要特別準備。

Data Structures and Algorithms in C++/Java/Python

  • 有三種版本:C++JavaPython
  • 雖然以前修課是唸聖經本,確實是寫得不錯也很 comprehensive,但我覺得編排讀起來很吃力,而這本的編排結構比較舒服。不過因為是演算法、資料結構結合成一本,所以一些比較進階的資料結構就沒有介紹到。
  • 我覺得這本比較好的地方是程式碼的 spec 會參照 STL 或 Java Collection library,跟實際使用經驗比較好連結起來。但缺點是有些實作隱含一些 design pattern 的概念,對初學者會多一層負擔。

Fundamentals of Data Structures in C/C++

  • 有兩種版本:CC++
  • 「聖經本」應該無需多言,最 comprehensive 的資料結構教科書。只是我覺得實體書的排版看起來很痛苦,真不知道以前是怎麼啃下去的。

Introduction to Algorithms

另外還有找到幾本不錯的免費電子書但還沒有時間仔細讀:

Data Structures and Algorithm Analysis

Open Data Structures

The Algorithm Design Manual

最後則是一些演算法、資料結構實作的整理:

Programming Tutorials by SourceTricks

  • http://www.sourcetricks.com/
  • 這網站乍看是不錯,但要注意印象中資料結構的實作程式碼還滿多小地方有些問題的 XD

Sorting Algorithm Animations

  • http://www.sorting-algorithms.com/
  • 整理了常見排序演算法的虛擬碼及特性,比較特別的是還有用動畫呈現各種 input 分布之下的執行過程。

Algorithms & Data Structures in C++ (by xtaci)

Big-O Algorithm Complexity Cheat Sheet

題庫

這塊在準備面試反而重要,基礎知識應該就是平常就要準備好(但我沒有…)。所謂的題庫大概就都是蒐集自實際的面試考題,畢竟面試官不可能每次一直想新題目,所以命中的機率據說是滿高的。

Cracking the Coding Interview

Elements of Programming Interviews

LeetCode ★★★★★

  • 刷題網站:https://leetcode.com/
  • 有分 Easy/Medium/Hard 三種難度,也可以對 acceptance rate 排序來刷,AC 的話還會有各種語言以及執行時間的分佈圖比較,我覺得這個功能挺好。
  • 幾乎所有主流的程式語言都支援,包含 C++、Java、Python、C、C#、JavaScript、Ruby、Swift、Go,這個順序應該也是接近用戶提交答案的比例。在看執行時間分佈時比較各語言的表現也是滿有趣的,通常都是 C/C++ 掛帥,偶爾 Python 也是會有驚人之舉 XD
  • 目前看到比較完整的參考解答:
  • 參考解答 1:https://github.com/haoel/leetcode
  • 參考解答 2:http://www.tianmaying.com/tutorials/tag/Leetcode
  • 題庫分類:http://www.douban.com/note/330562764/

其他還有像 topcoderCodeforces 之類的平台可以練習,不過我還沒試過就是。剛要開始準備的人建議還是先從 LeetCode 開始練習。

綜合資源

Awesome Interviews

GeeksforGeeks

The System Design Primer

Hacking a Google Interview (MIT)

编程之法:面试和算法心得

如果有找到更多不錯的資源會持續更新在本篇。

--

--