面试

程序员面试宝典

有些问题显示出作者的视野只局限在微软平台下,有些答案在非微软平台下是不正确的,建议批判地看

书还行,不过错误太多,误人子弟,

我只能说勘误非常多,作为一本快速准备型的面试书只能说凑合,

对于c/c++的知识点覆盖还算全面,有些例子事实证明的确很经典,当然莫名其妙的错误也有不少。这本书可能不会真的帮助解决什么实质性问题,但是补补边角料,并且了解自己还有哪些方面仍需补强还是很有帮助的

给个两星吧,作者收集这么多题目也不容易,不过解释真的是乱七八糟的啊,如果牵强附会的给出解释,还不如不给,

就题目而言认真读完还是不错的,但是解答部分估计是网上照搬,经常有不知所云的情况出现;

程序员面试金典

书中最核心的还是面试中的题目了。

书中有一道习题使用了后缀树。后缀树这个特殊的结构在《算法导论》等众多书中都没有出现,可以在网上找到一些计算生物学的课件。很多匹配字符串相关的问题都可以用后缀树或者广义后缀树给出一个线性解法。但注意的是这个数据结构所占用的空间也是很大的。虽然一些情况下可以优化到线性,但这种优化在一些具体的问题中会改变问题的语意,因此不是任何时候都可以适用的。对后缀树和广义后缀树感兴趣可以参考http://book.douban.com/subject/1765938/,网上也可以找到一些相关的课件

书中有”连续子序列最大和值“和”最长递增子序列“这样的题目。但是没有包含”连续子序列最大积值“这样的题目,并且”最长递增子序列“给出的解答不是最优的,这两个题目大家可以额外思考一下,面试中也很常见。

另外,面试过程中也会遇到很多与系统相关的知识性的题目,如流水线、虚拟内存、进程线程、地址空间结构、异常处理、并发编程等等,这些内容可以参考《深入理解计算机系统》http://book.douban.com/subject/5407246/

网络相关的内容可以参考《TCP/IP详解》卷一http://book.douban.com/subject/1099252/

一些更具体的内容,如linux启动过程、linux文件系统原理、浏览器访问网址过程等,可以查看wikipedia相关页面,linux相关的内容可以访问鸟哥的私房菜基础篇的相关文章http://linux.vbird.org/linux_basic/

尤其是大厂的工作,只看这个肯定是不行的。leetcode肯定是要刷的。而且光刷都是不行的,需要非常多的消化和总结。

只是很多人对于它的期望不太合理。估计不少人期望刷完这本书之后,自己的能力能提升好几个档次,一切都豁然开朗。但是实际结果可能是就连书里刷过的题,都回头就忘了。

这其实很正常,这本书只有189道题,指望这189道题就能涵盖所有考题,本身就是不现实的。但是这189道题确实涵盖了大部分的题型,而且给出了比较常规的解题思路,读者可以根据这些题自己去找其他类似的题,而且也可以根据自己的薄弱环节去强化训练。说到强化训练,geeksforgeeks其实是个好地方。

另外这本书除了题目之外,也给出了一些针对不同编程语言的考点,以及一些系统设计的基础,这些内容几乎都是点到为止,说的很简略。这就更体现了此书的性质,其实就是个提纲。读者如果只是知道这些内容,那面试官只要稍微问的深一点点,马上就露馅了。

让你有一个比较完整清晰的印象,然后基于此去训练自己。

编程本质是思维活动,也是智力活动,重在思考问题的方法和切入问题的角度。

《编程之美》《编程珠玑》《程序员面试指南》

数据库

数据库系统概念

配合cmu15-445一起学习才不会那么理论化

是一本面面俱到深度不够偏理论性的书,无商业应用案例,实用性较弱。

在索引一章,完全可以通过他的算法加例子很好的理解索引的原理和应用,在查询处理一节,对算法的理解很透彻。

第七版:

7th针对分布式存储和分布式计算进行了大量改进,配合15-445阅读体验极佳

针对近年来分布式存储领域的进展进行了大量重要更新,

由浅入深,逐步进阶,理论指导,多加练习。书籍顺序:入门《Mysql必知必会》,进阶《高性能Mysql》,升华《Mysql技术内幕:innodb存储引擎》。

高性能MYSQL

关键就是3-6和9-11章,表结构设计,索引,分库分表,EXPLAIN+执行计划。挺全的,不过很多东西都是假设你有清晰的概念,还是配合搜索看最合适。第三章troubleshooting 的思路和第九章的对于硬件的介绍

适合DBA阅读,至于开发人员,阅读理解前7章就足够了。优先:第456章; 其次:第12378910章; 看下附录; 其他章节可忽略。 认真读,一个月就整完了。

不过内容太琐碎了需要有详略的读。mvcc,锁,索引,分区这几部分阐述的很好,在数据增量远超想象的今天,后部分构建高性能的意义不大 - - -

书中没有各种提升性能的秘籍,而是深入问题的核心,详细的解释了每种提升性能的原理,从而可以使你四两拨千斤。授之于鱼不如授之于渔,这本书做到了。

翻译一般,对Mysql有个整体认识后再看英文的。

书中的 MySQL版本较旧,可结合 MySQL官方文档阅读

第四版大改:

MySQL技术内幕

上承「SQL必知必会」,下接「高性能MySqQL」。书如其名,确实重点讲了InnoDB引擎的特性:事务、MVCC。讲REPEATABLE READ隔离级别下解决幻读那一节出现的错误蛮多,谨慎甄别。 对 ibd 文件、row formet 的解析挺有用。 log 部分讲的不行。

索引,锁,事务,这三个章节值得多读几回。重点可以放在2、5、6、7、8五章 看完第7章的事务实现基本能比较轻松理解第8章的容灾备份。之前就一直不明白怎么去解释事务,只能说出事务保证了什么,起到了什么作用等等,作者在第7章中让你明白你可以怎么和一个小白解释究竟什么是事务,如果还想了解更深入,里面还有提到事务的特性是怎么实现的:锁保证I,redolog(操作日志)保证AD,undolog(数据快照日志)保证C,了解完这些,就能明白为什么这一章开头说“事务是数据库区分于文件系统的一个关键特性”。

MySQL是怎样运行的

基本上是概念的堆砌,之前在知乎上看到说这本书有人在豆瓣上刷好评,看过以后觉得确实如此了

因为我给了差评,这作者还给我挂到朋友圈了,其人品可见一斑。和小册差不多,多了那些基本公众号可以找到。作者组织了一大帮人刷评,有微信群的。这些人当然有粉丝滤镜,就和那些明星发微博让粉丝给自己的影视作品刷好评而已,你觉得粉丝能给差评?

三年运维+两年dba经验,读后最大的感觉就是作者对于原理性的东西讲解得太难懂,这方面内容丁奇的专栏很值得看

Redis设计与实现(算是Redis入门资料吧,认真看完的话就对Redis有大概了解了,话说Redis这么火爆是有原因的,其中的一些精妙设计真的看完令人大呼过瘾,不得不承认,人与人之间真是有差距的。。。)
极客时间- Redis核心技术与实战 (中科院的研究员开设的Redis专栏,个人已经买了,非常不错)
另外再推荐基本数据库底层的书籍:数据库系统实现(华东师范大学数据学院指定数据库原理书籍)

图形学

Fundamentals of Computer Graphics

![](https://cdn.jsdelivr.net/gh/c-parrot/source/img/blog/书籍/Fundamenta-ls of Computer Graphics.png)

上来就看这本书的话,知识方面存在太多断层,这会很影响阅读体验以及收获感。当通过一本更入门的书写了一些自己的图形程序之后,才会对这本书里头介绍的光栅化算法等等更感兴趣吧。

内容全面,但作为入门级书未免有些事无巨细缺少系统性,且对比计算机领域的一些经典书籍练习不足;若是作为进阶图书又缺少具体的原理或是算法解释。

目前见过的最好的一本图形学教材,从线代、矩阵和视图的大幅数学基础入手,管线、信号、shader、mapping、sample等概念都花了巨额内容来解释。图形学入门我只推荐这一本书;并且原版书籍的英文并不难读,都是很清晰很直观的表达

行文略啰嗦,讲的偏数学/符号化,编程练习很少;用作“了解大图景的入门书”应该算是合适的。

纯理论书,入门精品。最后几章知识点有点零散,不太能看得进去。

第4版前八章是基础的基础,图形领域从业人员都必须知道的,读完大致算入门了

3D游戏编程大师技巧

前作windows游戏编程大事技巧的续集,主要针对3D游戏,关键就只是个光栅化算法。目的是搭建软渲染器,对gpu部分讲解较少。内容有些过时。挑着看有用的部分即可。

有用的部分:三角形光栅化,平滑插值,纹理采样算法,屏幕空间透视校正

其他部分基本可以不看,另外书中的采用的透视投影算法是有错误的。自己写代码的时候,可以到google上搜索”soft render”,可以搜到很多高质量的渲染器,帮助理解图形管线。

最爽的就是一步步将软光栅给实现出来。这样很多概念就具体化了。边看原理边看代码,是工程师绝佳的学习方式!写软光栅是图形学入门的第一步。当然,不推荐入门者直接写,这里面知识点太多,不好把握分寸。

数学基础方面建议阅读《3D数学基础》

Real-Time Rendering

![](https://cdn.jsdelivr.net/gh/c-parrot/source/img/blog/书籍/Real-Time Rendering.png)

广泛地介绍了实时领域相关的各种问题,而且对最新的研究和工业应用都有充分的关注,属于不得不看的好书。正如作者所期望的,这本书协助你 catch up 实时渲染的前沿;看完这广泛而细致的导论后,你就对接下来的真正的研究之路做好准备了。

这是本计算机图形学关于实时绘制方面的词典大全类书籍,每个领域的survey,大而全,对于实际编程不一定有效,但是对于了解整个领域的知识或者查找资料,必备一本,www.realtimerendering.com也包含了很多有用的链接。

不适合做入门教程,需要有一定的基础,本书可作为参考来阅读。但是因为大部分技术点都是在索引的论文了,所以说只读本书也只能懂个皮毛。

这本书对于了解实时渲染的各个方面相当好用,不过最精华的部分应该不是概述的内容,而是列出的相关参考文献哈哈哈。

这本书读起来感觉要补很多基础和paper里面的知识后才能继续,而且这个本来就是个大杂烩,可以理解是现代图形学发展史介绍

这本书最大的特点在于全面,对初学者不友好。适合有过一定CG开发经验的人夯实基础用!即便读完了即便之后,仍然适合放在厕所里,以便日日温习!

Game Engine Architecture, Third Edition

![](https://cdn.jsdelivr.net/gh/c-parrot/source/img/blog/书籍/Game Engine Architecture, Third Edition.png)

关于引擎的各个方面都有涉及,问题就是定位不清。需要写引擎的,或者能够写引擎的,这本书就是科普读物。刚游戏开发入门的,这本书又偏理论,什么都涉及,什么都不深入,远不如自己下个unity或者UE4玩玩更能理解什么是游戏引擎,游戏引擎应该做些什么东西。总之,就是书籍的读者定位就是个谜。

试图讲很多东西,但都讲的很浅,适合感兴趣的人作为一个入门索引,如果你初学者,学不到什么实质的内容;如果你是有经验的,也不用看这些内容了。

对我而言,这本书比较有价值的部分只有第一章,其余章节都很一般了,偶尔有一些有价值的东西,但改变不了我对整本书的评价。
第一章是游戏的架构,主要的部分就是图1.11,可以对游戏的架构有个直观的了解。对于入门来说,这一章很有价值。

第二章和第三章是编译工具(visual studio)和c++蜻蜓点水式的介绍。说实话,这两章没什么新意,既不深入,也不浅出。

第四章是数学基础部分,谈及比较基础的矢量,矩阵,变换,四元数等概念。这部分也是浮光掠影式的介绍,。大部分的内容线性代数都有介绍,除了四元数外。但这部分仅仅写了四元数的一些运算公式,缺乏推导,甚至缺乏解释。这一章还有硬件加速的单指令多数据运算,也就是一个硬件优化,我对之不感兴趣。

第五章是所谓的游戏支持系统,看起来是讨论游戏,实则不然,说白了,就是讨论如何生成对象,有那几种内存分配方式,容器(对,就是STL里面的容器),字符串,配置文件等内容。里面有人对配置文件内容中的Scheme定义觉得眼前一亮,但一方面这个只有一页的内容,另一方面,如果你了解领域特定语言(DSL)的话,这个也就泛泛了。附加一句,不要看Martin Flower的那本书《领域特定语言》,《领域专用语言实战》可能好一些。

第六章是资源及文件系统,谈到一些管理游戏资源的工具。其实我最想知道的是如何在游戏资源(尤其是Maya,PS等生成的资源)和游戏之间交互,但这个章节上讲一些特定的工具,下讲资源在游戏中应该怎么管理和分配,就缺我想知道的,郁闷。这一章36页,占1/20的内容。

第七章是游戏循环和实时模拟。总算进入游戏主题部分了。主要就是讲游戏中的主循环结构应该怎么讲,怎么样调控帧率。我看完之后更加郁闷了,抽离了要循环的内容讨论循环,离开了要讨论的帧谈帧率,是不是早了点?当然这本书也不会讨论具体的帧。附加说一句,这本书的代码更加鸡肋,就像推荐序1说的“我们不认为这些代码有直接取来使用的价值”,但估计推荐者不好意思说的过火了,接着说代码“极大地帮助了读者理解书中的技术点”。我认为正好相反,这本书的代码不但没有取来直接使用的便利,更没有帮读者理解技术点的价值。这一章28页,占1/20的内容。

第八章讲人体接口设备,大致介绍了各种游戏设备;第九章讲调试和开发工具。这两章均没有亮点。两章合起来50页,占书的1/15。

OK,接下来更简洁了:

第十章:渲染引擎,第十一章动画系统,第十二章刚体动力学,三章加起来大约有250页左右。这也是我认为写的最差的部分。

尤其是第十章(渲染引擎)和第十二章(刚体动力学),包含大量未解释的术语和复杂过程,我最不满意的就是对于复杂的细节和过程仅仅口头叙述一下,而没有直观的图解和例解!

第十一章写的尚可,这也是译者认为精彩的一章,如果精彩是尚可的讳语的话,或许是吧。

第十三章和第十四章分别是游戏性系统简介和运行时游戏性基础系统,在我看来,这不过是C++的再次讨论罢了。译者认为第十三章也比较精彩,我看不出来。

可以同时参考Snow的评论:http://book.douban.com/review/6564996/

中文目录,游戏引擎架构 第二版:https://book.douban.com/subject/34864920/