斩获BAT offer的大神,都读了哪些书

程序员书库(ID:OpenSourceTop) 整编

书单来自:https://github.com/CyC2018/CS-Notes/blob/master/other/LEARNING.md

近日,在GitHub上发现一个关于面试经验的好项目,该项目是由我国的一位程序员创建的,目前已经获得45295个Star,该项目作者经过一年左右的复习努力,参加的面试都通过了,斩获了BAT、华为等大厂的offer



于是,这位大神就将自己面试经验整理出来,和大家一起分享,这里我们主要罗列了他分享的计算机相关的书籍,供大家参考:


算法


1、《算法(第 4 版)



这是一本算法领域的经典参考书籍,使用 Java 实现,但是不会涉及很多 Java 高级语法,因此也适合其它语言使用者学习。书中涉及常用数据结构和算法,建议认真学习。Coursera 上有配套视频课程可学习:Algorithms


2、《数据结构》



按照面向对象程序设计的思想,根据作者多年的教学积累,系统地介绍各类数据结构的功能、表示和实现,对比各类数据结构适用的应用环境......书中采用C++实现,读者还能结合配套视频观看学习(视频地址:https://www.xuetangx.com/courses/course-v1:TsinghuaX+30240184+sp/about


3、《剑指 Offer 题解》



剖析了50个典型的程序员面试题,从基础知识、代码质量、解题思路、优化效率和综合能力五个方面系统整理了影响面试的5个要点。基本基本涵盖了面试中出现的高频算法题,刷这本书的性价比很高。原书使用 C++ 实现,如果你想看Java实现,推荐阅读剑指 Offer 题解(地址:https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/%E5%89%91%E6%8C%87%20offer%20%E9%A2%98%E8%A7%A3.md


4、《程序员代码面试指南:IT 名企算法与数据结构题目最优解》



这是一本程序员面试宝典!书中对IT名企代码面试各类题目的最优解进行了总结,并提供了相关代码实现。左程云的算法书,除了算法题之外,还有一些海量数据分析的题目很值得看。适合当做 Leetcode 的辅助书籍,对一些题目讲解的不错。如果觉得书本不错的话,也可以看下他的算法课程


5、《挑战程序设计竞赛》



世界顶级程序设计高手的经验总结,分为准备篇、初级篇、中级篇与高级篇4章。一些大厂可能会问到一些简单 ACM 题目,所以这本书也值得看一部分内容,比如线段树、网络流等。


计算机网络


6、《计算机网络:自顶向下方法》



适合入门,推荐阅读前面四章内容。本书采用自顶向下的方法讲解计算机网络的原理和协议,出版以来已被几百所大学和学院选用,是业界最经典的计算机网络教材之一。


7、《计算机网络》



大部分学校的教材,内容还是很不错的,全书分为10章,比较全面系统地介绍了计算机网络的发展和原理体系结构、物理层、数据链路层、网络层、运输层、应用层、网络安全、因特网上的音频/视频服务、无线网络和下一代因特网等内容。可以当做上一本书的辅助书籍,结合着看。


8、《TCP/IP 详解 卷 1:协议》



是一本完整而详细的TCP/IP协议指南,TCP/IP 是网络中最重要的一部分,也是面试中常问的,所以这本书很值得看。


9、《UNIX 网络编程 卷 1:套接字联网 API》



这本书(UNP)和 UNIX 环境高级编程(APUE)被称为腾讯的敲门砖,应该说 C++ 岗位的同学都应该学习一下,Java 或者其它岗位的同学倒是没那么高的要求。不过这两本是大部头,从头看到尾是不现实的,适合当做工具书,碰到问题的时候再去查找书中的内容。然后对于面试中经常问到的重点知识,也适合看看这本书的内容,而不是背网上所谓的面试答案。


10、《图解 HTTP》



HTTP 也是网络中非常重要的部分,这本书很容易看懂,创建者还有总结比较,查看更多本书的介绍可以点击查阅:


操作系统


11、《现代操作系统》



本书是操作系统领域的经典之作,书中集中讨论了操作系统的基本原理,推荐重点阅读一下 进程与线程、死锁、存储管理 章节。


12、《深入理解计算机系统》



没看完这本书不敢说自己计算机基础扎实,可以当做计算机导论来看,涉及方方面面的内容。很佩服作者能把这些内容写的这么通俗易懂,阅读这本书真是一种享受。不过不适合短期内提升,要是急着应付面试的话可以先挑一些内容看看。


13、《UNIX 环境高级编程》



和 UNP 类似,都是 C++ 岗位必备书籍。书中除了介绍UNIX文件和目录、标准I/O库、系统数据文件和信息、进程环境、进程控制等方面的内容,还在此基础上介绍了多个应用示例,包括如何创建数据库函数库以及如何与网络打印机通信等。


14、《Linux 多线程服务端编程》



同样推荐C++岗位的同学阅读,本书主要讲述采用现代C++ 在x86-64 Linux 上编写多线程TCP 网络服务程序的主流常规技术,重点讲解一种适应性较强的多线程服务器的编程模型,即one loop per thread。


15、《Unix/Linux 编程实践教程》



本书通过解释Unix的工作原理,循序渐进地讲解实现Unix中系统命令的方法,让读者理解并逐步精通Unix系统编程,进而具有编制Unix应用程序的能力。适合作为C++ 岗位的实践书籍,在写个人项目之前建议先看一下这本书。


16、《鸟哥的 Linux 私房菜》



适合当做入门书籍,通俗易懂,不过太过通俗有点啰嗦了。后台岗位对 Linux 的基本使用还是要有一定了解,再重点看看文件系统的实现原理,还有一些 Shell 命令。


17、《The Linux Command Line》


这本书比鸟哥的书简洁很多,书中介绍如何生存在 Linux 命令行的世界。不像一些书籍仅仅涉及一个程序,比如像 shell 程序,bash。 这本书将试着向你传授如何与命令行界面友好相处。 它是怎样工作的? 它能做什么? 使用它的最好方法是什么?(中文版地址:http://billie66.github.io/TLCL/book/


数据库


18、《MySQL 必知必会》



学习数据库最好先学一下 SQL 语句,而这本书主要讲解这方面内容。书中从介绍简单的数据检索开始,逐步深入一些复杂的内容,包括联结的使用、子查询、正则表达式和基于全文本的搜索、存储过程、游标、触发器、表约束,等等。


19、《高性能 MySQL》



这本书是mysql 领域的经典之作,拥有广泛的影响力,书中对 MySQL 做了很好的讲解,后台岗位的话运维相关的内容可以不看。


20、《MySQL 技术内幕》



本书从源代码的角度深度解析了InnoDB的体系结构、实现原理、工作机制,并给出了大量最佳实践,能帮助你系统而深入地掌握InnoDB作为国内唯一一本关于InnoDB的专著,更适合后台岗位的同学看。


21、《Redis 设计与实现》



Redis 作为内存型键值对非关系型数据库,主要作为缓存使用。这本书对 Redis 实现原理做了讲解,推荐阅读字典、跳跃表、过期机制、持久化、事件、复制、Sentinel、集群、发布与订阅、事务。当然有时间的话推荐都认真阅读以下。


22、《Redis 实战》



本书深入浅出地介绍了Redis的5种数据类型,并通过多个实用示例展示了Redis的用法。相较而言,这本书偏实践,上本书偏实现原理,两本书最好结合着看。


23、《大规模分布式存储系统》



本书是分布式系统领域的经典著作,由阿里巴巴高级技术专家“阿里日照”(OceanBase核心开发人员)撰写,涉及分布式场景下的一些存储系统,分布式非常重要。


设计模式


25、《Head First 设计模式》



这是一本很好的一本设计模式入门书籍,可以把常见的几种设计模式看看,比如单例模式、几个工厂模式、观察者模式、MVC。


系统设计


25、《大型网站技术架构》



非常好的一本架构入门书籍,方方面面都讲解得通俗易懂。


26、《从 Paxos 到 Zookeeper》



本书从分布式一致性的理论出发,向读者简要介绍几种典型的分布式一致性协议,以及解决分布式一致性问题的思路,其中重点讲解了Paxos和ZAB协议,适合作为分布式的入门书籍。


27、《微服务设计》



本书全面介绍了微服务的建模、集成、测试、部署和监控,通过一个虚构的公司讲解了如何建立微服务架构。


不知道这些书你都看过没有呢?如果没有,赶紧根据自己的需求,趁2019年读起来吧。

推荐↓↓↓
程序员书库
上一篇:程序员的职业生涯中都应该看的5本书 下一篇:最受推荐的10本C/C++书籍