剑知北美生活快报   版面列表   admin登录
JiansNet Logo


美国计算机Computer Science面试算法书比较

by JC, published: 2014-01-31 10:11 viewed: 7762 times
想了解更多的美国生活窍门?请订阅: JC写的剑知北美生活快报。
本文专门搜集了计算机领域面试的最佳书籍,供美国的码工们参考。

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.

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

补充一下,如果学习C++,这个C++的FAQ网站有人推荐看:
https://isocpp.org/faq
另外要看看C++ 11的东西,此外就是不懂的可以到stackoverflow找答案。
Comments (12)
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的人来说不一定合适. 作者里面有一个是台湾人.

8. linktoming 2013-11-11 19:37
正在读 Algorithms in C,很不错,作者把算法书写的很生动易读。之前读过一点Introduction to Algorithms, Master Algorithms in C,都没有坚持下去。而读了Algorithms in C,让人有一种想读The Art of Computer Programming的冲动。

美中不足的是,此系列的Part 6 -8没有如期出版,有些遗憾。
9. senbakarin 2014-01-31 06:01
java系的话读 Algorithms (4th Edition)这本很不错和那本超级经典的algorithms in C一样是Robert Sedgewick写的,内容基本一样. 作者的英语还很容易懂,有一点基础的话完全可以边看这本边学英语:)
10. JC 2014-01-31 10:11
原先还经常看算法书,现在没怎么看了。不过那本programming Pearls看了一多半,剩下的我准备继续看完。虽然暂时不换工作,但对于开阔眼界来说,还是不错的。

还有个想法就是,等我把转行计算机系列文章写完后,花时间写写学习计算机基础算法方面的心得体会。
11. JC 2015-09-22 15:52
Cracking the Tech Career: Insider Advice on Landing a Job at Google, Microsoft, Apple
这本书讲述了Google,微软等美国著名IT公司挑选人才的内幕。作者Gayle在Google engineering工作, 曾经面试过120个求职者。这本书里,她详细写了怎么准备面试,怎么包装自己,美国的这些高大上的IT公司都是怎么衡量面试者的。


12. JC 2016-07-14 09:17
如果觉得有些C++的书太大部头的话,可以看看Scott Meyers的Effective C++,再看看 template就可以了。


本文版权属于美国剑知信息网。如需转载,请先同我们联系。
订阅JC写的剑知北美生活快报,您会了解到更多的美国生活窍门。
Related Articles:
• 美国计算机面试技巧和书目 - 适合Google, 微软等的面试
• 美国计算机专业(computer science)面试如何准备
• 在美国买车, 如何砍价
• 推荐一本职场好书,帮助各位老中在每天工作中处理应对各种Difficult Situation
• 如何准备Computer Science Interview 中的算法部分?
• 关于C++书的比较
• 程序员面试书籍下载: Programming Interviews Expos
• 程序员们注意了, 40岁之前, 最好有B计划
• 如何应对微软的面试(Microsoft Job Interview Tips)
• Java编程入门及进阶推荐书籍及评价
美国职业发展 | 返回顶部 | 返回首页
About Us | Advertise with Us | Privacy Policy
Copyright © 2007-2016, All Rights Reserved.