美国计算机Computer Science面试算法书比较 - 面经分享 我很牛(wohenniu.com) -



美国计算机Computer Science面试算法书比较 - 面经分享 我很牛(wohenniu.com) -

本文专门搜集了计算机领域面试的最佳书籍,供美国的码工们参考。

Algorithms and Data Structures in C++

这是一本比较一般的教材,没什么好推荐。其特点是大量采用c++ template,也没太多分析,基本上直接列代码。

Introduction to Algorithms

这本被无数码工推荐。个人认为,这本书过分注重分析,如果是专门研究算法的,也许是一本好书,但是总体感觉这本书各章节缺乏内在联系,例如说,为什么要有red-black tree?有什么好处?search算法这么多,究竟是怎么演变的?既然quick sort是普遍最快,那么bubble sort这种废材还有个P用?这些问题,是这本书没有回答也没有谈的。

个人对这本书的评价是:如果你没学过算法,或者需要复习,可以读读,但是以为看了这本书就能应付软件公司(MS/Google/etc.),那就错了。大部分公司并不需要你去讲什么天花乱坠的算法,即便是DP问题也不会难到离谱,但是希望你能在谈论算法的时候能表现出对算法应用的理解,而不是背书。而这本书缺少的就是从一个software enginner的角度去讨论算法,更多是从数学的角度。

Algorithms in C

我个人非常赞这本书。之所以说这本书更实用,并非是说面试问题都是这本书里面的,而是因为这本书更多的揭示了programming/system design和算法之间的内在联系。Array和linked list的各种联系,sort算法如何发展起来,binary search/radix/rb tree之间的内在联系等等. 各种问题,可以说作者是信手拈来,像看小说一样一章一章读下去,很有意思。

上面那本书(introduction to algorithms),作为手册来参考也许还行,但实在少了脉络。而这本书看了前面几章后,就可以对基本数据结构和sort/search算法有一个很清楚的了解。这个了解并不是说你知道怎么实现或者复杂度,而是指各种算法是如何产生,针对什么问题,如何发展到另一种方法。了解了这些后,对大部分编程问题,即便你一时没有想到最优解,也仍然可以为你自己的解法拥有相当的理由---面试的人最忌你背书一样说什么什么是最佳方案,而更看重为什么你会有这个方案,背后的理由是什么。

btw,这本书也有in c++/in java的版本,不过in C比较薄一些...

Programming Pearls

经典书籍,建议不必一开始看,而在看完上面那本之后再来看这个。如果说Algorithm in C是九阴真经上卷(内功基础),Programming Pearls就是下卷(应用和技巧)。

这个没什么好说的,每一章都有让人赞叹的内容。值得提醒的是,千万不要忽略练习部分,练习中的题目在书后大多有解答和分析,很多东西并不亚于正文给人的启发。

这本是我最后读的一本算法书,作了全部练习后,就是一种"圆满完工"的感觉,剩下的就是在不断的interview中适应气氛了。这本书后面的练习题比较接近interview问题,最好动手实战code.

以上这些书也可以作为美国找计算机工作的面试技巧书.


Comments (7)
                         1#  jc 2011-06-23 19:45               
        还推荐如何移动富士山这本书, 我每页都看过, 很受启发. 感觉computer science必读. 英文是How Would You Move Mount Fuji.


作者写的很幽默,而且很多地方有启发意义。不止是智力题吸引人,书里面开始谈到了硅谷的起源和IQ test, standford university的起源等等,比干巴巴的纯智力题的书强多了.

                         2#  jc 2012-07-04 12:00               
        有人问我, 最好的算法书是哪本? 我觉得很多算法书都非常枯燥, 包括CLR的Introduction to Algorithms. 但 Programming Pearls 就不一样. 这本书中的很多算法都是以实际工作当中碰到的具体问题着手, 作者由浅入深的介绍算法得来的思路. 另外, 书里面有很多的street smart的编程技巧.

如果说其他的算法书是正规军科班出身, 理论化很强, 这本书就好比旁门左道, 会在你的实际工作当中非常受用. 同时对于面试及其启发思路. 就我来说, 这是我读过的最好的算法书.

                         3#  jc 2012-07-04 12:50               
        这本 Mastering Algorithms with C 也不错. 我也有一本, 貌似还是带小软盘的 (这年头估计有人已经不清楚啥是小软盘了), 上面有习题程序. 计算机经过汇编, C/C++, Java, Python scripting language等不同的语言的时代, 但真正要想掌握编程精髓来说, 还是要熟悉good old C programming.


                         4#  jc 2012-12-08 16:45               
        和上面那本经典的 Introduction to Algorithms 一样,这本 Algorithms (4th Edition) 算法书也非常经典。但和那个不同的是,这本书包括了用java实现的程序。这样非常有助于学生用来解决实际问题。


                         5#  jc 2013-02-18 22:02               
        如果想快速把C++过一遍的话,C++ Primer就显得太厚了。而这本 Accelerated C++: Practical Programming by Example 非常好,  是网上很多人推荐的, 350页, 复习起来很不错.



                         6#  jc 2013-03-04 10:05               
        The Google Resume: How to Prepare for a Career and Land a Job at Apple, Microsoft, Google etc.
这本书建议要提早看,里面有不少关于networking和写简历的很好的建议. 对于想进美国top tech company的同学会很有帮助.


                         7#  jc 2013-05-22 15:48               
        Elements of Programming Interviews: 300 Questions and Solutions 这本书被很多人强烈推荐. 有300道题,比 Cracking the Coding Interview多一倍。另外,和careercup相比, 这本书里面包括了很多美国大公司面试必考的题目. 缺点是对于刚刚准备面试的人来说,题目偏难;另外是用C++描述的。所以,对于用Java的人来说不一定合适. 作者里面有一个是台湾人.


转自 http://www.jiansnet.com/topic/60 ... nce-Algorithm-Books

Read full article from 美国计算机Computer Science面试算法书比较 - 面经分享 我很牛(wohenniu.com) -


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts