README.md 13.8 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="#联系我"><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
  <a href="#公众号"><img src="https://img.shields.io/badge/PDF-Java面试突击-important.svg" alt="公众号"></a>
S
SnailClimb 已提交
12

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 31


S
SnailClimb 已提交
32
## Java
S
SnailClimb 已提交
33

S
SnailClimb 已提交
34
### 基础
S
SnailClimb 已提交
35

36 37 38 39
* [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 已提交
40

S
SnailClimb 已提交
41
### 容器
S
SnailClimb 已提交
42

S
Snailclimb 已提交
43
* **常见问题总结:**
44 45
  * [这几道Java集合框架面试题几乎必问](./Java/这几道Java集合框架面试题几乎必问.md)
  * [Java 集合框架常见面试题总结](./Java/Java集合框架常见面试题总结.md)
S
Snailclimb 已提交
46
* **源码分析:**
47 48 49 50
  * [ArrayList 源码学习](./Java/ArrayList.md) 
  * [【面试必备】透过源码角度一步一步带你分析 ArrayList 扩容机制](./Java/ArrayList-Grow.md)    
  * [LinkedList 源码学习](./Java/LinkedList.md)   
  * [HashMap(JDK1.8)源码学习](./Java/HashMap.md)  
S
SnailClimb 已提交
51

S
SnailClimb 已提交
52
### 并发
S
SnailClimb 已提交
53

54 55 56 57 58 59
* [并发编程面试必备: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 已提交
60

S
SnailClimb 已提交
61
### JVM
S
SnailClimb 已提交
62

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

S
SnailClimb 已提交
67
### I/O
S
SnailClimb 已提交
68

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

S
SnailClimb 已提交
72
### Java 8 
S
SnailClimb 已提交
73

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

S
SnailClimb 已提交
76
## 网络
S
SnailClimb 已提交
77

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

S
SnailClimb 已提交
82
## 操作系统
S
Snailclimb 已提交
83

S
SnailClimb 已提交
84
### Linux相关
S
SnailClimb 已提交
85

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

S
SnailClimb 已提交
89
## 数据结构与算法
S
Snailclimb 已提交
90

S
SnailClimb 已提交
91
### 数据结构
S
SnailClimb 已提交
92

S
SnailClimb 已提交
93
- [数据结构知识学习与面试](./数据结构与算法/数据结构.md)
S
SnailClimb 已提交
94

S
SnailClimb 已提交
95 96 97 98 99 100
### 算法

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

S
SnailClimb 已提交
102
## 数据存储
S
SnailClimb 已提交
103

S
SnailClimb 已提交
104
### MySQL
S
SnailClimb 已提交
105

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

S
SnailClimb 已提交
110
### Redis
S
SnailClimb 已提交
111

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

S
SnailClimb 已提交
116
## 系统设计
S
SnailClimb 已提交
117

S
SnailClimb 已提交
118
### 设计模式
S
Snailclimb 已提交
119

S
SnailClimb 已提交
120
- [设计模式系列文章](./Java/设计模式.md)
S
SnailClimb 已提交
121

S
SnailClimb 已提交
122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
### 常用框架

#### Spring

- [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)

#### ZooKeeper

- [可能是把 ZooKeeper 概念讲的最清楚的一篇文章](./主流框架/ZooKeeper.md)
- [ZooKeeper 数据模型和常见命令了解一下,速度收藏!](./主流框架/ZooKeeper数据模型和常见命令.md)

### 数据通信

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

### 网站架构

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

## 面试指南

### 备战面试
S
SnailClimb 已提交
151

152 153 154 155 156 157 158
* [【备战面试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 已提交
159

S
SnailClimb 已提交
160
### 常见面试题总结
S
SnailClimb 已提交
161

162 163 164 165
* [第一周(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 已提交
166

S
SnailClimb 已提交
167 168 169 170 171
### 面经

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

## 工具
S
SnailClimb 已提交
172 173 174

### Git

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

S
SnailClimb 已提交
177 178 179 180 181 182
## 资料

### 书单

- [Java程序员必备书单](./EssentialContentForInterview/PreparingForInterview/books.md)

S
SnailClimb 已提交
183
## 闲谈  
S
SnailClimb 已提交
184

185 186 187
* [选择技术方向都要考虑哪些因素](./闲谈/选择技术方向都要考虑哪些因素.md) 
* [结束了我短暂的秋招,说点自己的感受](./闲谈/2018%20%E7%A7%8B%E6%8B%9B.md) 
* [Java项目 Github Trending 月榜](./闲谈/JavaGithubTrending/JavaGithubTrending.md)
S
SnailClimb 已提交
188

S
SnailClimb 已提交
189 190
***

S
SnailClimb 已提交
191 192 193 194 195 196 197 198 199
## ToDoList(待办清单)

- [x] [Java 8 新特性总结](./Java/What's%20New%20in%20JDK8/Java8Tutorial.md)
- [ ] Java 8 新特性详解
- [ ] Java 多线程类别知识重构
- [x] [BIO,NIO,AIO 总结 ](./Java/BIO%2CNIO%2CAIO%20summary.md)
- [ ] Netty 总结
- [ ] 数据结构总结重构

S
SnailClimb 已提交
200
## 说明
S
SnailClimb 已提交
201

S
SnailClimb 已提交
202
### 介绍
S
SnailClimb 已提交
203

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

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

S
SnailClimb 已提交
210 211
### 关于转载

S
SnailClimb 已提交
212
如果你需要转载本仓库的一些文章到自己的博客的话,记得注明原文地址就可以了。
S
SnailClimb 已提交
213 214 215 216

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

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

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

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

S
SnailClimb 已提交
224
### 联系我
S
SnailClimb 已提交
225

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

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

S
SnailClimb 已提交
230
### Contributor
S
SnailClimb 已提交
231

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

S
SnailClimb 已提交
234
<a href="https://github.com/fanofxiaofeng">
S
SnailClimb 已提交
235
    <img src="https://avatars0.githubusercontent.com/u/3983683?s=460&v=4" width="45px"></a>
S
SnailClimb 已提交
236
<a href="https://github.com/Gene1994">
S
SnailClimb 已提交
237
    <img src="https://avatars3.githubusercontent.com/u/24930369?s=460&v=4" width="45px">
S
SnailClimb 已提交
238 239
</a>
<a href="https://github.com/illusorycloud">
S
SnailClimb 已提交
240
    <img src="https://avatars3.githubusercontent.com/u/31980412?s=460&v=4" width="45px">
S
SnailClimb 已提交
241 242
</a>
<a href="https://github.com/LiWenGu">
S
SnailClimb 已提交
243
    <img src="https://avatars0.githubusercontent.com/u/15909210?s=460&v=4" width="45px">
S
SnailClimb 已提交
244 245
</a>
<a href="https://github.com/kinglaw1204">
S
SnailClimb 已提交
246
    <img src="https://avatars1.githubusercontent.com/u/20039931?s=460&v=4" width="45px">
S
SnailClimb 已提交
247 248
</a>
<a href="https://github.com/jun1st">
S
SnailClimb 已提交
249
    <img src="https://avatars2.githubusercontent.com/u/14312378?s=460&v=4" width="45px">
S
SnailClimb 已提交
250 251
</a>"
<a href="https://github.com/fantasygg">  
S
SnailClimb 已提交
252 253 254 255 256 257 258
    <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 已提交
259
</a>
S
SnailClimb 已提交
260 261 262
<a href="https://github.com/Goose9527">  
    <img src="https://avatars2.githubusercontent.com/u/43314997?s=460&v=4" width="45px">
</a>
S
SnailClimb 已提交
263

S
SnailClimb 已提交
264 265
### 公众号

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

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

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

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