README.md 15.4 KB
Newer Older
S
SnailClimb 已提交
1
<h1 align="center">Java 学习/面试指南</h1>
S
SnailClimb 已提交
2 3

<p align="center">
S
SnailClimb 已提交
4
<img src="https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-3/logo - 副本.png" width=""/>
S
SnailClimb 已提交
5 6 7
</p>

<p align="center">
S
SnailClimb 已提交
8
  <a href="https://gitee.com/SnailClimb/JavaGuide"><img src="https://img.shields.io/badge/chat-微信群-blue.svg" alt="微信群"></a>
S
SnailClimb 已提交
9
  <a href="https://gitee.com/SnailClimb/JavaGuide"><img src="https://img.shields.io/badge/%E7%A0%81%E4%BA%91-SnailClimb-brightgreen.svg" alt="码云地址"></a>
S
SnailClimb 已提交
10
  <a href="#公众号"><img src="https://img.shields.io/badge/%E5%85%AC%E4%BC%97%E5%8F%B7-JavaGuide-lightgrey.svg" alt="公众号"></a>
S
SnailClimb 已提交
11 12
  <a href="#公众号"><img src="https://img.shields.io/badge/PDF-Java面试突击-important.svg" alt="公众号"></a>
  
S
SnailClimb 已提交
13
</p>
S
SnailClimb 已提交
14

S
SnailClimb 已提交
15
<h2 align="center">Special Sponsors</h3>
S
SnailClimb 已提交
16 17

<p align="center">
S
SnailClimb 已提交
18 19 20
<a href="https://e.coding.net/?utm_source=JavaGuide" target="_blank">
  <img src="https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-3/Coding Devops.png" width=""/>
 </a>
S
SnailClimb 已提交
21
</p>
S
SnailClimb 已提交
22

S
SnailClimb 已提交
23

S
SnailClimb 已提交
24
1. **码云地址:** 如果访问速度比较慢的话,可以考虑访问本仓库的码云地址:<https://gitee.com/SnailClimb/JavaGuide> ,Gitee 和 都是同步更新的。
S
SnailClimb 已提交
25 26
1. **关于贡献者:** 对本仓库提过有价值的 issue 或 pr 的小伙伴将出现在 [Contributor](#Contributor) 这里。
1. **欢迎投稿:** 由于我个人能力有限,很多知识点我可能没有涉及到,所以你可以对其他知识点进行补充。**对于不错的原创文章我根据你的选择给予现金(50-300)、付费专栏或者任选书籍进行奖励!所以,快提 pr 或者邮件的方式(邮件地址在主页)给我投稿吧!** 当然,我觉得奖励是次要的,最重要的是你可以从自己整理知识点的过程中学习到很多知识。
S
SnailClimb 已提交
27

S
SnailClimb 已提交
28 29
## 目录

S
SnailClimb 已提交
30
* [Java](#java)
S
SnailClimb 已提交
31 32 33 34 35 36
  * [基础](#基础)
  * [集合框架](#集合框架)
  * [多线程](#多线程)
  * [BIO,NIO,AIO](#bionioaio)
  * [JVM](#jvm)
  * [Java8 New Features](#java8-new-features)
S
SnailClimb 已提交
37
  * [设计模式](#设计模式)
S
SnailClimb 已提交
38
* [数据结构与算法](#数据结构与算法)
S
SnailClimb 已提交
39 40
  * [数据结构](#数据结构)
  * [算法](#算法)
S
SnailClimb 已提交
41
* [计算机网络与数据通信](#计算机网络与数据通信)
S
SnailClimb 已提交
42 43
  * [网络相关](#网络相关)
  * [数据通信\(RESTful,RPC,消息队列\)总结](#数据通信restfulrpc消息队列总结)
S
SnailClimb 已提交
44
* [操作系统](#操作系统)
S
SnailClimb 已提交
45
  * [Linux相关](#linux相关)
46
* [主流框架](#主流框架)
S
SnailClimb 已提交
47 48
  * [Spring](#spring)
  * [ZooKeeper](#zookeeper)
S
SnailClimb 已提交
49
* [数据存储](#数据存储)
S
SnailClimb 已提交
50 51
  * [MySQL](#mysql)
  * [Redis](#redis)
S
SnailClimb 已提交
52 53
* [架构](#架构)
* [面试必备\(Essential content for the interview\)](#面试必备essential-content-for-the-interview)
S
SnailClimb 已提交
54
  * [备战面试\(Preparing for an interview\)](#备战面试preparing-for-an-interview)
55
  * [BATJ真实面经\(BATJ real interview experience\)](#batj真实面经batj-real-interview-experience)
S
SnailClimb 已提交
56
  * [最常见的Java面试题总结\(Summary of the most common Java interview questions\)](#最常见的java面试题总结summary-of-the-most-common-java-interview-questions)
S
SnailClimb 已提交
57 58
* [开发常用工具](#开发常用工具)
  * [Git](#Git)
S
SnailClimb 已提交
59 60
* [闲谈](#闲谈)
* [说明](#说明)
S
SnailClimb 已提交
61

S
SnailClimb 已提交
62
## ToDoList(待办清单)
S
SnailClimb 已提交
63

64
* [x] [Java 8 新特性总结](./Java/What's%20New%20in%20JDK8/Java8Tutorial.md)
S
SnailClimb 已提交
65
* [ ] Java 8 新特性详解
S
SnailClimb 已提交
66
* [ ] Java 多线程类别知识重构
67
* [x] [BIO,NIO,AIO 总结 ](./Java/BIO%2CNIO%2CAIO%20summary.md)
S
SnailClimb 已提交
68 69
* [ ] Netty 总结
* [ ] 数据结构总结重构
S
SnailClimb 已提交
70
  
S
SnailClimb 已提交
71
## Java
S
SnailClimb 已提交
72

S
SnailClimb 已提交
73
### 基础
S
SnailClimb 已提交
74

75 76 77 78
* [Java 基础知识回顾](./Java/Java基础知识.md)
* [J2EE 基础知识回顾](./Java/J2EE基础知识.md)
* [Collections 工具类和 Arrays 工具类常见方法](./Java/Basis/Arrays%2CCollectionsCommonMethods.md)
* [Java常见关键字总结:static、final、this、super](./Java/Basis/final、static、this、super.md) 
S
SnailClimb 已提交
79

S
SnailClimb 已提交
80
### 集合框架
S
SnailClimb 已提交
81

S
Snailclimb 已提交
82
* **常见问题总结:**
83 84
  * [这几道Java集合框架面试题几乎必问](./Java/这几道Java集合框架面试题几乎必问.md)
  * [Java 集合框架常见面试题总结](./Java/Java集合框架常见面试题总结.md)
S
Snailclimb 已提交
85
* **源码分析:**
86 87 88 89
  * [ArrayList 源码学习](./Java/ArrayList.md) 
  * [【面试必备】透过源码角度一步一步带你分析 ArrayList 扩容机制](./Java/ArrayList-Grow.md)    
  * [LinkedList 源码学习](./Java/LinkedList.md)   
  * [HashMap(JDK1.8)源码学习](./Java/HashMap.md)  
S
SnailClimb 已提交
90

S
SnailClimb 已提交
91
### 多线程
S
SnailClimb 已提交
92

93 94 95 96 97 98
* [并发编程面试必备:synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比](./Java/synchronized.md)
* [并发编程面试必备:乐观锁与悲观锁](./EssentialContentForInterview/面试必备之乐观锁与悲观锁.md)
* [并发编程面试必备:JUC 中的 Atomic 原子类总结](./Java/Multithread/Atomic.md)
* [并发编程面试必备:AQS 原理以及 AQS 同步组件总结](./Java/Multithread/AQS.md)
* [BATJ都爱问的多线程面试题](./Java/Multithread/BATJ都爱问的多线程面试题.md)
* [并发容器总结](./Java/Multithread/并发容器总结.md)
S
SnailClimb 已提交
99

S
SnailClimb 已提交
100
### JVM
S
SnailClimb 已提交
101

102 103 104
* [可能是把Java内存区域讲的最清楚的一篇文章](./Java/可能是把Java内存区域讲的最清楚的一篇文章.md)
* [搞定JVM垃圾回收就是这么简单](./Java/搞定JVM垃圾回收就是这么简单.md)
* [《深入理解Java虚拟机》第2版学习笔记](./Java/Java虚拟机(jvm).md)
S
SnailClimb 已提交
105

S
SnailClimb 已提交
106
### BIO,NIO,AIO
S
SnailClimb 已提交
107

108 109
* [BIO,NIO,AIO 总结 ](./Java/BIO%2CNIO%2CAIO%20summary.md)
* [Java IO 与 NIO系列文章](./Java/Java%20IO与NIO.md)
S
SnailClimb 已提交
110

S
SnailClimb 已提交
111 112
### Java8 New Features

113
* [Java 8 新特性总结](./Java/What's%20New%20in%20JDK8/Java8Tutorial.md)
S
SnailClimb 已提交
114

S
SnailClimb 已提交
115
### 设计模式
S
SnailClimb 已提交
116

117
* [设计模式系列文章](./Java/设计模式.md)
S
Snailclimb 已提交
118

S
SnailClimb 已提交
119
## 数据结构与算法
S
SnailClimb 已提交
120

S
SnailClimb 已提交
121
### 数据结构
S
Snailclimb 已提交
122

123
* [数据结构知识学习与面试](./数据结构与算法/数据结构.md)
S
Snailclimb 已提交
124

S
SnailClimb 已提交
125
### 算法
S
SnailClimb 已提交
126

127 128 129 130
* [算法学习与面试](./数据结构与算法/算法.md)  
* [常见安全算法(MD5、SHA1、Base64等等)总结](./数据结构与算法/常见安全算法(MD5、SHA1、Base64等等)总结.md)
* [算法总结——几道常见的子符串算法题 ](./数据结构与算法/搞定BAT面试——几道常见的子符串算法题.md)
* [算法总结——几道常见的链表算法题 ](./数据结构与算法/Leetcode-LinkList1.md)   
S
Snailclimb 已提交
131

S
SnailClimb 已提交
132
## 计算机网络与数据通信
S
SnailClimb 已提交
133

S
SnailClimb 已提交
134
### 网络相关
S
SnailClimb 已提交
135

136 137 138
* [计算机网络常见面试题](./计算机网络与数据通信/计算机网络.md)
* [计算机网络基础知识总结](./计算机网络与数据通信/干货:计算机网络知识总结.md)
* [HTTPS中的TLS](./计算机网络与数据通信/HTTPS中的TLS.md)
S
SnailClimb 已提交
139

S
SnailClimb 已提交
140
### 数据通信(RESTful,RPC,消息队列)总结
S
SnailClimb 已提交
141

142 143 144 145
* [数据通信(RESTful、RPC、消息队列)相关知识点总结](./计算机网络与数据通信/数据通信(RESTful、RPC、消息队列).md)
* [Dubbo 总结:关于 Dubbo 的重要知识点](./计算机网络与数据通信/dubbo.md)
* [消息队列总结:新手也能看懂,消息队列其实很简单](./计算机网络与数据通信/message-queue.md)
* [一文搞懂 RabbitMQ 的重要概念以及安装](./计算机网络与数据通信/rabbitmq.md)
S
SnailClimb 已提交
146

S
SnailClimb 已提交
147
## 操作系统
S
Snailclimb 已提交
148

S
SnailClimb 已提交
149
### Linux相关
S
SnailClimb 已提交
150

151 152
* [后端程序员必备的 Linux 基础知识](./操作系统/后端程序员必备的Linux基础知识.md)  
* [Shell 编程入门](./操作系统/Shell.md)  
153 154

## 主流框架
S
Snailclimb 已提交
155

S
SnailClimb 已提交
156
### Spring
S
SnailClimb 已提交
157

158 159 160
* [Spring 学习与面试](./主流框架/Spring学习与面试.md)
* [Spring中bean的作用域与生命周期](./主流框架/SpringBean.md)
* [SpringMVC 工作原理详解](./主流框架/SpringMVC%20%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86%E8%AF%A6%E8%A7%A3.md)
S
SnailClimb 已提交
161

S
SnailClimb 已提交
162
### ZooKeeper
S
SnailClimb 已提交
163

164 165
* [可能是把 ZooKeeper 概念讲的最清楚的一篇文章](./主流框架/ZooKeeper.md)
* [ZooKeeper 数据模型和常见命令了解一下,速度收藏!](./主流框架/ZooKeeper数据模型和常见命令.md)
S
SnailClimb 已提交
166
  
S
SnailClimb 已提交
167
## 数据存储
S
SnailClimb 已提交
168

S
SnailClimb 已提交
169
### MySQL
S
SnailClimb 已提交
170

171 172 173
* [MySQL 学习与面试](./数据存储/MySQL.md)
* [【思维导图-索引篇】搞定数据库索引就是这么简单](./数据存储/MySQL%20Index.md)
* [一千行MySQL学习笔记](./数据存储/一千行MySQL命令.md)
S
SnailClimb 已提交
174

S
SnailClimb 已提交
175
### Redis
S
SnailClimb 已提交
176

177 178 179
* [Redis 总结](./数据存储/Redis/Redis.md)
* [Redlock分布式锁](./数据存储/Redis/Redlock分布式锁.md)
* [如何做可靠的分布式锁,Redlock真的可行么](./数据存储/Redis/如何做可靠的分布式锁,Redlock真的可行么.md)
S
SnailClimb 已提交
180

S
SnailClimb 已提交
181
## 架构
S
SnailClimb 已提交
182

183 184 185
* [一文读懂分布式应该学什么](./架构/分布式.md)
* [8 张图读懂大型网站技术架构](./架构/8%20张图读懂大型网站技术架构.md)
* [【面试精选】关于大型网站系统架构你不得不懂的10个问题](./架构/【面试精选】关于大型网站系统架构你不得不懂的10个问题.md)
S
Snailclimb 已提交
186

S
SnailClimb 已提交
187
## 面试必备(Essential content for the interview)
S
SnailClimb 已提交
188

S
SnailClimb 已提交
189
### 备战面试(Preparing for an interview)
S
SnailClimb 已提交
190

191 192 193 194 195 196 197
* [【备战面试1】程序员的简历就该这样写](./EssentialContentForInterview/PreparingForInterview/程序员的简历之道.md)
* [【备战面试2】初出茅庐的程序员该如何准备面试?](./EssentialContentForInterview/PreparingForInterview/interviewPrepare.md)
* [【备战面试3】7个大部分程序员在面试前很关心的问题](./EssentialContentForInterview/PreparingForInterview/JavaProgrammerNeedKnow.md)
* [【备战面试4】Java程序员必备书单](./EssentialContentForInterview/PreparingForInterview/books.md)
* [【备战面试5】Github上开源的Java面试/学习相关的仓库推荐](./EssentialContentForInterview/PreparingForInterview/JavaInterviewLibrary.md)
* [【备战面试6】如果面试官问你“你有什么问题问我吗?”时,你该如何回答](./EssentialContentForInterview/PreparingForInterview/如果面试官问你“你有什么问题问我吗?”时,你该如何回答.md)
* [【备战面试7】美团面试常见问题总结(附详解答案)](./EssentialContentForInterview/PreparingForInterview/美团面试常见问题总结.md)
S
SnailClimb 已提交
198

199 200
### BATJ真实面经(BATJ real interview experience)

201
* [5面阿里,终获offer(2018年秋招)](./EssentialContentForInterview/BATJrealInterviewExperience/5面阿里,终获offer.md)
202

S
SnailClimb 已提交
203
### 最常见的Java面试题总结(Summary of the most common Java interview questions)
S
SnailClimb 已提交
204

205 206 207 208
* [第一周(2018-8-7)](./EssentialContentForInterview/MostCommonJavaInterviewQuestions/第一周(2018-8-7).md) (为什么 Java 中只有值传递、==与equals、 hashCode与equals)
* [第二周(2018-8-13)](./EssentialContentForInterview/MostCommonJavaInterviewQuestions/第二周(2018-8-13).md)(String和StringBuffer、StringBuilder的区别是什么?String为什么是不可变的?、什么是反射机制?反射机制的应用场景有哪些?......)
* [第三周(2018-08-22)](./Java/这几道Java集合框架面试题几乎必问.md) (Arraylist 与 LinkedList 异同、ArrayList 与 Vector 区别、HashMap的底层实现、HashMap 和 Hashtable 的区别、HashMap 的长度为什么是2的幂次方、HashSet 和 HashMap 区别、ConcurrentHashMap 和 Hashtable 的区别、ConcurrentHashMap线程安全的具体实现方式/底层具体实现、集合框架底层数据结构总结)
* [第四周(2018-8-30).md](./EssentialContentForInterview/MostCommonJavaInterviewQuestions/第四周(2018-8-30).md) (主要内容是几道面试常问的多线程基础题。)
S
SnailClimb 已提交
209

S
SnailClimb 已提交
210 211 212 213
## 开发常用工具

### Git

214
* [Git入门看这一篇就够了](./DevelopCommonTools/GitIntroduce.md)
S
SnailClimb 已提交
215

S
SnailClimb 已提交
216
## 闲谈  
S
SnailClimb 已提交
217

218 219 220 221
* [选择技术方向都要考虑哪些因素](./闲谈/选择技术方向都要考虑哪些因素.md) 
* [结束了我短暂的秋招,说点自己的感受](./闲谈/2018%20%E7%A7%8B%E6%8B%9B.md) 
* [【2018总结】即使平凡,也要热爱自己的生活](./闲谈/2018%20summary.md)
* [Java项目 Github Trending 月榜](./闲谈/JavaGithubTrending/JavaGithubTrending.md)
S
SnailClimb 已提交
222

S
SnailClimb 已提交
223 224
***

S
SnailClimb 已提交
225
## 说明
S
SnailClimb 已提交
226

S
SnailClimb 已提交
227
### 介绍
S
SnailClimb 已提交
228

S
SnailClimb 已提交
229 230 231
*  **对于 Java 初学者来说:** 本文档倾向于给你提供一个比较详细的学习路径,让你对于Java整体的知识体系有一个初步认识。另外,本文的一些文章
也是你学习和复习 Java 知识不错的实践;
*  **对于非 Java 初学者来说:** 本文档更适合回顾知识,准备面试,搞清面试应该把重心放在那些问题上。要搞清楚这个道理:提前知道那些面试常见,不是为了背下来应付面试,而是为了让你可以更有针对的学习重点。
S
SnailClimb 已提交
232

S
SnailClimb 已提交
233 234
本文档 Markdown 格式参考:[Github Markdown格式](https://guides.github.com/features/mastering-markdown/),表情素材来自:[EMOJI CHEAT SHEET](https://www.webpagefx.com/tools/emoji-cheat-sheet/)

S
SnailClimb 已提交
235 236
### 关于转载

S
SnailClimb 已提交
237
如果你需要转载本仓库的一些文章到自己的博客的话,记得注明原文地址就可以了。
S
SnailClimb 已提交
238 239 240 241

### 如何对该开源文档进行贡献

1. 笔记内容大多是手敲,所以难免会有笔误,你可以帮我找错别字。
S
SnailClimb 已提交
242
2. 很多知识点我可能没有涉及到,所以你可以对其他知识点进行补充。(**对于不错的原创文章我根据你的选择给予现金奖励、付费专栏或者书籍进行奖励!快提 pr 给我投稿吧!**)
S
SnailClimb 已提交
243 244 245 246
3. 现有的知识点难免存在不完善或者错误,所以你可以对已有知识点的修改/补充。

### 为什么要做这个开源文档?

S
SnailClimb 已提交
247
初始想法源于自己的个人那一段比较迷茫的学习经历。主要目的是为了通过这个开源平台来帮助一些在学习 Java 或者面试过程中遇到问题的小伙伴。
S
SnailClimb 已提交
248

S
SnailClimb 已提交
249
### 联系我
S
SnailClimb 已提交
250

S
SnailClimb 已提交
251
添加我的微信备注“Github”,回复关键字 **“加群”** 即可入群。
S
SnailClimb 已提交
252

S
SnailClimb 已提交
253
![我的微信](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-2/JavaGuide.jpg)
S
SnailClimb 已提交
254

S
SnailClimb 已提交
255
### Contributor
S
SnailClimb 已提交
256

S
SnailClimb 已提交
257 258
下面是笔主收集的一些对本仓库提过有价值的pr或者issue的朋友,人数较多,如果你也对本仓库提过不错的pr或者issue的话,你可以加我的微信与我联系。下面的排名不分先后!

S
SnailClimb 已提交
259
<a href="https://github.com/fanofxiaofeng">
S
SnailClimb 已提交
260
    <img src="https://avatars0.githubusercontent.com/u/3983683?s=460&v=4" width="45px"></a>
S
SnailClimb 已提交
261
<a href="https://github.com/Gene1994">
S
SnailClimb 已提交
262
    <img src="https://avatars3.githubusercontent.com/u/24930369?s=460&v=4" width="45px">
S
SnailClimb 已提交
263 264
</a>
<a href="https://github.com/illusorycloud">
S
SnailClimb 已提交
265
    <img src="https://avatars3.githubusercontent.com/u/31980412?s=460&v=4" width="45px">
S
SnailClimb 已提交
266 267
</a>
<a href="https://github.com/LiWenGu">
S
SnailClimb 已提交
268
    <img src="https://avatars0.githubusercontent.com/u/15909210?s=460&v=4" width="45px">
S
SnailClimb 已提交
269 270
</a>
<a href="https://github.com/kinglaw1204">
S
SnailClimb 已提交
271
    <img src="https://avatars1.githubusercontent.com/u/20039931?s=460&v=4" width="45px">
S
SnailClimb 已提交
272 273
</a>
<a href="https://github.com/jun1st">
S
SnailClimb 已提交
274
    <img src="https://avatars2.githubusercontent.com/u/14312378?s=460&v=4" width="45px">
S
SnailClimb 已提交
275 276
</a>"
<a href="https://github.com/fantasygg">  
S
SnailClimb 已提交
277 278 279 280 281 282 283
    <img src="https://avatars3.githubusercontent.com/u/13445354?s=460&v=4" width="45px">
</a>
<a href="https://github.com/debugjoker">  
    <img src="https://avatars3.githubusercontent.com/u/26218005?s=460&v=4" width="45px">
</a>
<a href="https://github.com/zhyank">  
    <img src="https://avatars0.githubusercontent.com/u/17696240?s=460&v=4" width="45px">
S
SnailClimb 已提交
284
</a>
S
SnailClimb 已提交
285 286 287
<a href="https://github.com/Goose9527">  
    <img src="https://avatars2.githubusercontent.com/u/43314997?s=460&v=4" width="45px">
</a>
S
SnailClimb 已提交
288

S
SnailClimb 已提交
289 290
### 公众号

S
SnailClimb 已提交
291
如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号。
S
SnailClimb 已提交
292

S
SnailClimb 已提交
293 294 295 296
**《Java面试突击》:** 由本文档衍生的专为面试而生的《Java面试突击》V2.0 PDF 版本[公众号](#公众号)后台回复 **"Java面试突击"** 即可免费领取!

**Java工程师必备学习资源:** 一些Java工程师常用学习资源[公众号](#公众号)后台回复关键字 **“1”** 即可免费无套路获取。 

S
SnailClimb 已提交
297
![我的公众号](https://user-gold-cdn.xitu.io/2018/11/28/167598cd2e17b8ec?w=258&h=258&f=jpeg&s=27334)