CS-Notes/LEARNING.md
2018-12-28 17:19:33 +08:00

236 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 算法
> **算法(第 4 版)**
[豆瓣](https://book.douban.com/subject/19952400/) 9.4 分873 人评分。
使用 Java 实现,但是不会涉及很多 Java 高级语法,因此也适合其它语言使用者学习。适合当做算法入门书籍,涉及常用数据结构和算法,建议认真学习。
Coursera 上有配套视频课程可学习:[Algorithms](https://www.coursera.org/learn/algorithms-part1),如果还没到注册时间的话,也是可以点进去观看视频,只是没有作业和证书。
> **数据结构**
[豆瓣](https://book.douban.com/subject/25859528/) 9.4 分139 分。
C++ 实现,可以结合配套视频观看:[清华大学 数据结构](https://www.xuetangx.com/courses/course-v1:TsinghuaX+30240184+sp/about)
> **剑指 Offer 题解**
[豆瓣](https://book.douban.com/subject/6966465/) 8.3 分572 人评分。
基本涵盖了面试中出现的高频算法题,刷这本书的性价比很高。
原书使用 C++ 实现,官方提供的第二版源代码仓库为:[CodingInterviewChinese2](https://github.com/zhedahht/CodingInterviewChinese2)。
推荐阅读 [剑指 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),使用 Java 实现,有相关的解题思路,对于其它语言使用者来说不会有很大的阅读障碍。
该书的刷题网站推荐 [牛客网](https://www.nowcoder.com/ta/coding-interviews)。
> **Leetcode**
[Leetcode](https://leetcode.com/problemset/algorithms/)
剑指 Offer 上的题目基本能在 Leetcode 上找到,而且更全面,所以有时间的话推荐先刷 Leetcode 再刷剑指 Offer。差不多刷 200~300 题就足够应对大多数公司的面试算法题。题目不在多,而在于归纳总结,推荐阅读 [Leetcode 题解](https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/Leetcode%20%E9%A2%98%E8%A7%A3.md)每个题型都做了简单总结。当然如果你觉得我总结的不好Github 上有多类似的项目。
最开始推荐按 Acceptance 逆序来刷,不会的题目可以先看看 Discuss 上的高票答案,先学习别人是怎么做的。推荐使用英文版,因为英文版讨论区的优质答案比较多,中文版大多数是搬运。
> **程序员代码面试指南IT 名企算法与数据结构题目最优解**
[豆瓣](https://book.douban.com/subject/26638586/) 8.9 分82 人评分。
左程云的算法书,除了算法题之外,还有一些海量数据分析的题目很值得看。适合当做 Leetcode 的辅助书籍,对一些题目讲解的不错。如果觉得书本不错的话,也可以看下他的算法课程:[直通 BAT — 求职算法精品课](https://www.nowcoder.com/courses/semester/algorithm)。
> **学习算法思想 修炼编程内功**
[慕课网](https://coding.imooc.com/class/71.html)
liuyubo 的在线视频课程,主要是 Leetcode 的题目,如果觉得 Leetcode 刷的有障碍,可以考虑看这个视频,画图和讲解都很用心。
> **挑战程序设计竞赛**
[豆瓣](https://book.douban.com/subject/24749842/) 9.0 分203 人评分。
一些大厂可能会问到一些简单 ACM 题目,所以这本书也值得看一部分内容,比如线段树、网络流等。
# 计算机网络
> **计算机网络 自顶向下方法**
[豆瓣](https://book.douban.com/subject/26176870/) 8.9 分297 人评分。
适合入门,推荐阅读前面四章内容。
> **计算机网络**
[豆瓣](https://book.douban.com/subject/24740558/) 8.0 分142 人评分。
大部分学校的教材,内容还是很不错的,可以当做上一本书的辅助书籍,结合着看。
> **TCP/IP 详解 卷 1协议**
[豆瓣](https://book.douban.com/subject/1088054/) 9.2 分1963 人评分。
TCP/IP 是网络中最重要的一部分,也是面试中常问的,所以这本书很值得看。
> **UNIX 网络编程 卷 1套接字联网 API**
[豆瓣](https://book.douban.com/subject/1500149/) 9.5 分915 人评分。
这本书UNP和 UNIX 环境高级编程APUE被称为腾讯的敲门砖应该说 C++ 岗位的同学都应该学习一下Java 或者其它岗位的同学倒是没那么高的要求。不过这两本是大部头,从头看到尾是不现实的,适合当做工具书,碰到问题的时候再去查找书中的内容。然后对于面试中经常问到的重点知识,也适合看看这本书的内容,而不是背网上所谓的面试答案。
> **Socket**
[我的笔记](https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/Socket.md) 对常见的 Socket 问题做了总结,如果觉得阅读 UNP 太慢的话可以看看这个。
> **图解 HTTP**
[豆瓣](https://book.douban.com/subject/25863515/) 8.1 分1669 人评分。
HTTP 也是网络中非常重要的部分,这本书很容易看懂,也推荐看我总结的 [笔记](https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/HTTP.md) 。
# 操作系统
> **计算机操作系统**
[我的笔记](https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/%E8%AE%A1%E7%AE%97%E6%9C%BA%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F.md) 把操作系统的一些基本概念和原理都做了总结,基本没有底层的一些细节。适合作为入门资料,很快就能看完。
> **现代操作系统**
[豆瓣](https://book.douban.com/subject/3852290/) 8.9 分656 人评分。
推荐重点阅读一下 进程与线程、死锁、存储管理 章节。
> **深入理解计算机系统**
[豆瓣](https://book.douban.com/subject/5333562/) 9.7 分2211 人评分。
没看完这本书不敢说自己计算机基础扎实,可以当做计算机导论来看,涉及方方面面的内容。很佩服作者能把这些内容写的这么通俗易懂,阅读这本书真是一种享受。不过不适合短期内提升,要是急着应付面试的话可以先挑一些内容看看。
> **UNIX 环境高级编程**
[豆瓣](https://book.douban.com/subject/1788421/) 9.4 分2187 人评分。
和 UNP 类似,都是 C++ 岗位必备书籍。
> **Linux 多线程服务端编程**
[豆瓣](https://book.douban.com/subject/20471211/) 8.8 分394 人评分。
也是推荐 C++ 岗位同学阅读。
> **Unix/Linux 编程实践教程**
[豆瓣](https://book.douban.com/subject/1219329/) 9.2 分369 人评分。
涉及 Unix 系统编程,并且教你如何实现的常用命令,适合当做 C++ 岗位的实践书籍,在写个人项目之前建议先看一下这本书。
> **鸟哥的 Linux 私房菜**
[豆瓣](https://book.douban.com/subject/4889838/) 9.1 分2604 人评分。
适合当做入门书籍,通俗易懂,不过太过通俗有点啰嗦了。后台岗位对 Linux 的基本使用还是要有一定了解,再重点看看文件系统的实现原理,还有一些 Shell 命令。
> **The Linux Command Line**
[豆瓣](https://book.douban.com/subject/6806862/) 9.3 分290 人评分。
比鸟哥的书简洁很多,有 [中文版](http://billie66.github.io/TLCL/book/) 可以阅读。
# 数据库
> **MySQL 必知必会**
[豆瓣](https://book.douban.com/subject/3354490/) 8.4 分904 人评分。
学习数据库最好先学一下 SQL 语句,而这本书主要讲解这方面内容。
> **Leetcode-Database**
学完 SQL 之后最到 [Leetcode](https://leetcode.com/problemset/database/) 上实践一下, 面试有时候也会考察手写 SQL 语句。可以结合着 [我的笔记](https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/Leetcode-Database%20题解.md) 刷题。
> **数据库系统原理**
[我的笔记](https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F%E5%8E%9F%E7%90%86.md) 对一些基本原理做了简单总结,适合入门。
> **MySQL**
[我的笔记](https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/MySQL.md) 对常见 的 MySQL 问题做了总结,适合入门。
> **高性能 MySQL**
[豆瓣](https://book.douban.com/subject/23008813/) 9.3 分408 人评分。
MySQL 是关系型数据库,这本书对 MySQL 做了很好的讲解,后台岗位的话运维相关的内容可以不看。
> **MySQL 技术内幕**
[豆瓣](https://book.douban.com/subject/24708143/) 8.7 分185 人评分。
这本书其实更适合后台岗位的同学看,对 InnoDB 存储引擎的原理做了很好的讲解。
> **Redis 设计与实现**
[豆瓣](https://book.douban.com/subject/25900156/) 8.5 分608 人评分。
Redis 作为内存型键值对非关系型数据库,主要作为缓存使用。这本书对 Redis 实现原理做了讲解推荐阅读字典、跳跃表、过期机制、持久化、事件、复制、Sentinel 、集群、发布与订阅、事务。当然有时间的话推荐都认真阅读以下。
> **Redis 实战**
[豆瓣](https://book.douban.com/subject/26612779/) 8.1 分264 人评分。
这本书偏实践,上本书偏实现原理,两本书最好结合着看。
> **大规模分布式存储系统**
[豆瓣](https://book.douban.com/subject/25723658/) 7.9 分370 人评分。
涉及分布式场景下的一些存储系统,分布式非常重要。
# 设计模式
> **Head First 设计模式**
[豆瓣](https://book.douban.com/subject/2243615/) 9.2 分2660 人评分。
很好的一本设计模式入门书籍可以把常见的几种设计模式看看比如单例模式、几个工厂模式、观察者模式、MVC。
> **设计模式**
[我的笔记](https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F.md) 简单实现了每种设计模式,如果觉得看 Head First 设计模式 太慢,可以看看我的实现。
# 系统设计
> **大型网站技术架构**
[豆瓣](https://book.douban.com/subject/25723064/) 7.9 分1295 人评分。
非常好的一本架构入门书籍,方方面面都讲解得通俗易懂。
> **从 Paxos 到 Zookeeper**
[豆瓣](https://book.douban.com/subject/26292004/) 7.8 分284 人评分。
前面几章讲解了分布式的基本原理,很适合作为分布式的入门书籍。
> **微服务设计**
[豆瓣](https://book.douban.com/subject/26772677/) 8.2 分481 人评分。
> **其它**
- [[system-design-primer][Github]](https://github.com/donnemartin/system-design-primer)
- [[Leetcode / Interview Questions][题集]](https://leetcode.com/discuss/interview-question/?orderBy=most_votes)
- [[系统设计面试题精选][Gitbook]](https://soulmachine.gitbooks.io/system-design/content/cn/)
- [[海量数据面试题]](https://samanthachen.github.io/2016/08/01/%E6%B5%B7%E9%87%8F%E6%95%B0%E6%8D%AE%E9%9D%A2%E8%AF%95%E9%A2%98/)
- [[前端经典面试题: 从输入 URL 到页面加载发生了什么?][具体问题]](https://segmentfault.com/a/1190000006879700)
- [[秒杀系统架构分析与实战][具体问题]](https://my.oschina.net/xianggao/blog/524943)
- [[微信二维码登录原理][具体问题]](https://zhuanlan.zhihu.com/p/22325152?refer=bittiger)
- [[Create a TinyURL System][具体问题]](http://blog.gainlo.co/index.php/2016/03/08/system-design-interview-question-create-tinyurl-system/)
- [[Design a Key-Value Store (Part I)][具体问题]](http://blog.gainlo.co/index.php/2016/06/14/design-a-key-value-store-part-i/)
- [[坦率地讲 服务熔断 & 服务降级][知识点]](http://lexuslee.me/2018/02/01/2018-01-18-Service-fallback/)
- [[理解 HTTP 幂等性][知识点]](https://www.cnblogs.com/weidagang2046/archive/2011/06/04/idempotence.html)
- [[接口限流算法][知识点]](https://blog.csdn.net/ljj821061514/article/details/52512943)
- [[微服务学习资料汇总][知识点]](https://www.infoq.cn/article/2014%2F07%2Fmicroservice-learning-resources)
- [[理解 RESTful 架构][知识点]](http://www.ruanyifeng.com/blog/2011/09/restful.html)
- [[MapReduce 算法][知识点]](https://github.com/xuelangZF/CS_Offer/blob/master/Others/Hadoop_Spark.md)