- 作者: Gayle Laakmann McDowell
- 原书名称:Cracking the Coding Interview: 189 Programming Questions and Solutions
- 译者:F8F-1BearCat
译者摸鱼的时候喜欢逛一亩三分地论坛,在 终身学习>刷题
板块里偶然发现了 CtCI 这本书。本书被誉为北美码农求职面试经典书籍,因书中包含 189 道编码题,所以也被称为 CC189,更早的版本为 CC150。
这本书介绍了 Microsoft、Google 等一线互联网公司的面试流程,讲解了该怎样准备面试、怎样回答技术问题,还单独拿出一些篇幅教你如何评估选择 Offer 以及如何跟 HR 进行 Negotiation。 当然,有关时间复杂度、空间复杂度以及具体的面试题目才是本书的重点。
本书的 189 道题目以数据机构和算法为主,其题目及答案占据了本书绝大部分的内容。此外,分别有一个章节涵盖分布式系统设计、C/C++、Java、数据库、多线程等知识性的内容,但是这些内容几乎都是浅尝辄止,旨在为读者提供一个简略却系统的知识框架,让读者可以根据自己的薄弱环节有目的的去强化训练。这 189 道题涵盖了编程面试中你可能遇到的大部分题型,题目有易有难,且所有题目都给出了比较常规的解题思路和答案,其中算法题目的实现使用了 Java 语言。当然有些解法不是最优,如果你有兴趣的话可以在此基础上自己尝试给出最优解。
就好比考 GMAT 之前要看 OG 一样,本书是针对编程面试的入门书籍。如果你工作多年,需要重新将数据结构和算法捡起来的话,本书很适合你;但如果你是打过 ACM 等算法比赛的大牛,或者从事与算法相关的工作,那这本书就可以直接跳过了。由于是面向编码面试的,本书自然不能避免其功利性,如果纯粹是想学习算法,可以去看一看 Programming Pearls 等书。本书的题目与实际面试相比还是稍简单的,如果你想进一步提升的话,建议到 Leetcode 上刷题,并自己消化总结。
顺便一提,一亩三分地论坛还经常提到另一本书:Programming Interview Exposed,这本书更基础一点,非科班零基础的小白可以尝试先从这本书入手。
最后,译者在此建议,有能力的读者最好还是去阅读本书的英文原版。
数据结构
概念和算法
- Chapter 5 I 位操作
- Chapter 6 I 数学和逻辑难题
- Chapter 7 I 面向对象的设计
- Chapter 8 I 递归和动态规划
- Chapter 9 I 系统设计和可扩展性
- Chapter 10 I 排序与搜索
- Chapter 11 I 测试
基础知识
附加复习题
注:本书的 X. 答案
部分为编码答案,本项目中不做翻译收录,需要阅读的同学可以阅读英文原版,或者 CareerCup 的这个项目:https://github.com/careercup/CtCI-6th-Edition 。
《中华人民共和国著作权法》 第四节 权利的限制 第二十二条 在下列情况下使用作品,可以不经著作权人许可,不向其支付报酬,但应当指明作者姓名、作品名称,并且不得侵犯著作权人依照本法享有的其他权利: (六)为学校课堂教学或者科学研究,翻译或者少量复制已经发表的作品,供教学或者科研人员使用,但不得出版发行;
本项目是出于个人兴趣及学习目的而建立,仅供交流与学习研究之用,严禁公开传播发行或用于商业用途。有能力阅读英文书籍者请购买原版支持。
APPEND:经 v2ex 网友提醒,本书官方中文版本已出版,中文名为程序员面试金典(译者在此忍不住吐槽此译名),第六版发行日期为 19 年 9 月份,难怪译者当时没找到。所以在此译者建议大家有需要的话通过官方渠道购买书籍,本项目可以做译文对比、沟通交流之用,感谢大家的支持。
本项目中的文档是根据 CC BY-NC-SA 4.0 许可协议授权的,该协议鼓励您共享这些文档。