这是 herongwei 的第 87 篇原创
阅读本文大概需要 8.8 分钟。
对于大部分知识,最好的学习资料还是书籍,因为书籍经过了长期的检验,质量有保证。而且书籍的知识体系更加完善,这是传统网络上的博客文章所不具备的,所以我认为,系统的看书学习比零散的看博客文章更有用。
最近发现有一个开源的编程类中文开源电子书合集
https://openingsource.org/1137/
几乎无所不包,知识体系也很完善,而且内容简洁易懂。可以先看这个博客入门学习,然后某些内容再看书进行补充学习。
纸质书的另一个好处就是阅读起来对眼睛好,排版好。但是不方便携带和查阅,不方便做笔记而且价格也更高。
电子书优缺点基本和纸质书相反。建议某些很经典的书籍还是买纸质书,毕竟要经常翻。而那些就打算看几次,或者当做参考的书,可以买电子书,方便很多。如果有非常高质量的电子书,也比较推荐电子书。
在电商网站上买纸质书经常有满 几百减几百 的活动,会便宜很多,比如 618、双 11,当当网站这些。
其它电子书资料可以直接使用 Google 搜 xxx pdf、xxx mobi 进行查找。
在二手交易平台买书也不错,不推荐买盗版书,不要因为一时的便宜,而影响阅读体验,我以前也会偶尔买一些盗版书,但是现在越来越倾向于买正版的了,买了盗版,心里会有一种莫名的负罪感,而且纸张质量很差。
1、数据结构与算法
1.1 《算法》豆瓣 9.4 分
非常适合作为数据结构与算法的入门书籍,比算法导论容易理解得多。使用 Java 实现,但不会涉及太多的 Java 高级语法,因此也适合其它语言使用者使用。Google 搜一下 Coursera 上有配套视频课程:Algorithms。
1.2《数据结构》豆瓣 9.3 分
清华大学教材,使用 C++ 实现,可以结合配套视频学习:学堂在线网站-清华大学数据结构。
1.3《剑指 offer 》豆瓣 9.1 分
找工作刷题神书,基本涵盖了高频代码面试题,C++ 实现,在面试之前,推荐至少刷 3 遍以上!
配套专题训练:牛客网-剑指offer。
1.5 LeetCode
剑指 Offer 上的题目基本能在 Leetcode 上找到,而且 Leetcode 更全面,如果时间充足的话建议先刷 Leetcode 再刷剑指 Offer。刷 200 题左右就足够应对大多数公司的代码面试题。
最开始可以按照顺序来刷,如果时间紧张,可以按照 Top 100的题目来刷,不会的题目可以先看看 Discuss 上的高票答案,先学习别人是怎么做的。建议使用 Leetcode 英文版,因为英文版 Discuss 上的优质答案比较多。
1.6 《程序员代码面试指南》
适合当做 Leetcode 的辅助书籍,对一些题目讲解的不错。除了算法题之外,还有一些海量数据分析的题目很值得看一下。
1.7 玩转算法面试
慕课网的在线视频课程,主要讲解 LeetCode 上面的题目,画图和讲解都很认真。
https://coding.imooc.com/class/82.html
1.8 《挑战程序设计竞赛》
大厂可能会出一些简单的 ACM 题目,这本书,也值得看一部分内容,比如线段树,网络流之类的。
1.9 《大话数据结构》
以一个计算机教师教学为场景,讲解数据结构和相关算法的知识。通篇以一种趣味方式来叙述,大量引用了各种各样的生活知识来类比。
2、计算机网络
2.1 《计算机网络自顶向下方法》
适合当做入门书籍,重点阅读前四章内容。
2.2 《TCP-卷1-2-3》
TCP/IP 是网络中最重要的一部分,对于某些面试高频知识点,建议阅读这本书的相应章节进行深入学习。
2.3 《图解TCP-IP》
一本图文并茂的网络管理技术书籍,旨在让广大读者理解TCP/IP的基本知识、掌握TCP/IP的基本技能。
2.4《UNIX 网络编程卷1-2》
UNIX 网络编程(UNP)和 UNIX 环境高级编程(APUE)被称为腾讯的敲门砖,C++ 岗位的同学都应该学习一下。非常之经典!
2.5 《Linux 多线程服务端编程》
陈硕大佬的书籍,比上面几本大块头更贴近实践,如果对 Web Server 这些项目感兴趣的话,建议先看这本书。
2.7《Linux高性能服务器编程》
搭配上一本书,从网络协议、服务器编程核心要素、原理机制、工具框架等多角度全面阐释了编写高性能Linux服务器应用的方法、技巧和思想。不仅理论全面、深入,抓住了重点和难点,还包含两个综合性案例,极具实战意义。
3、操作系统
下面这些书籍也值得推荐。
非常经典的书籍,都是 C++ 岗位必备书籍。
4、数据库
4.1 《MySQL 必知必会》
学习数据库第一步是学习 SQL,这本书很适合当做 SQL 的入门书籍,实践性很强。
4.2 Leetcode-Database && 牛客网-SQL 专题
学完 SQL 之后最好去 Leetcode 或者牛客网 SQL 专题再实践一下,面试有时候也会考察手写 SQL 语句。
4.3 《高性能 MySQL》
比较偏向于 DBA 书籍,而且理论性比较强,重点看看第一章数据库系统原理相关的内容、第五章索引、第六章查询优化。
4.4 《MySQL 技术内幕》
建议阅读第二章 InnoDB 存储引擎、第五章 索引与算法、第六章 锁、第七章 事务、第九章 性能优化。
4.5 《Redis 设计与实现》
从 Reids 源码角度去分析实现原理,推荐阅读字典、跳跃表、过期机制、持久化、事件、复制、Sentinel、集群、发布与订阅、事务。
4.6 《Redis 实战》
这本书偏实践,最好动手做一下书上的一些小项目。
4.7 《大规模分布式存储系统》
非常适合当做存储系统和分布式系统的入门书籍。
5、设计模式
5.1 《大话设计模式》
以情景对话的形式,用多个小故事或编程示例来组织讲解。
5.2 《Head First 设计模式》
Head First 系列的图书都很适合当做入门书籍,包含了大量图示,内容也很有意思。
6、C++
C++ 经典的书籍很多
可以看看虚函数的实现,C++设计者的思考。
7、Java
Java 的经典书籍也有很多:
《JAVA 核心技术》《Java 编程思想》 《Effective java 中文版》 《深入理解 Java 虚拟机》 《Java 并发编程实战》 《精通 Spring 4.x》 《Spring 揭秘》等。
8、系统设计
8.1 《大型网站技术架构》
非常好的网站架构入门书籍,在做网站项目之前建议先看一下这本书,然后在这本书中找几个技术用在你的项目中,比如缓存、集群等。
日积月累,方能聚沙成塔!加油鸭!
认真的人,自带光芒!