Skip to content

Commit

Permalink
👊
Browse files Browse the repository at this point in the history
  • Loading branch information
18141924293 committed Apr 12, 2019
1 parent dda7107 commit 4d15bd1
Show file tree
Hide file tree
Showing 742 changed files with 94,397 additions and 1 deletion.
Binary file added .DS_Store
Binary file not shown.
409 changes: 408 additions & 1 deletion README.md

Large diffs are not rendered by default.

Empty file added docs/.nojekyll
Empty file.
204 changes: 204 additions & 0 deletions docs/HomePage.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,204 @@
Java后端技术交流群(限工作一年及以上,架构视频免费领取) :[![QQ群](https://img.shields.io/badge/QQ%E7%BE%A4-869815609-red.svg)](https://jq.qq.com/?_wv=1027&k=5QqyxIx)

<h1 align="center">Java 学习/面试指南</h1>
<p align="center">
<a href="https://github.com/Snailclimb/JavaGuide" target="_blank">
<img src="https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-3/logo - 副本.png" width=""/>
</a>
</p>
<h2 align="center">Special Sponsors</h2>
<p align="center">
<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>
</p>


## Java

### 基础

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

### 容器

* **常见问题总结:**
* [这几道Java集合框架面试题几乎必问](./java/这几道Java集合框架面试题几乎必问.md)
* [Java 集合框架常见面试题总结](./java/Java集合框架常见面试题总结.md)
* **源码分析:**
* [ArrayList 源码学习](./java/ArrayList.md)
* [【面试必备】透过源码角度一步一步带你分析 ArrayList 扩容机制](./java/ArrayList-Grow.md)
* [LinkedList 源码学习](./java/LinkedList.md)
* [HashMap(JDK1.8)源码学习](./java/HashMap.md)

### 并发

* [并发编程面试必备:synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比](./java/synchronized.md)
* [并发编程面试必备:乐观锁与悲观锁](./essential-content-for-interview/面试必备之乐观锁与悲观锁.md)
* [并发编程面试必备:JUC 中的 Atomic 原子类总结](./java/Multithread/Atomic.md)
* [并发编程面试必备:AQS 原理以及 AQS 同步组件总结](./java/Multithread/AQS.md)
* [BATJ都爱问的多线程面试题](./java/Multithread/BATJ都爱问的多线程面试题.md)
* [并发容器总结](./java/Multithread/并发容器总结.md)

### JVM

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

### I/O

* [BIO,NIO,AIO 总结 ](./java/BIO-NIO-AIO.md)
* [Java IO 与 NIO系列文章](./java/Java%20IO与NIO.md)

### Java 8

* [Java 8 新特性总结](./java/What's%20New%20in%20JDK8/Java8Tutorial.md)
* [Java 8 学习资源推荐](./java/What's%20New%20in%20JDK8/Java8教程推荐.md)

### 编程规范

- [Java 编程规范](./java/Java编程规范.md)

## 网络

* [计算机网络常见面试题](./network/计算机网络.md)
* [计算机网络基础知识总结](./network/干货:计算机网络知识总结.md)
* [HTTPS中的TLS](./network/HTTPS中的TLS.md)

## 操作系统

### Linux相关

* [后端程序员必备的 Linux 基础知识](./operating-system/后端程序员必备的Linux基础知识.md)
* [Shell 编程入门](./operating-system/Shell.md)

## 数据结构与算法

### 数据结构

- [数据结构知识学习与面试](./dataStructures-algorithms/数据结构.md)

### 算法

- [算法学习资源推荐](./dataStructures-algorithms/算法学习资源推荐.md)
- [算法总结——几道常见的子符串算法题 ](./dataStructures-algorithms/几道常见的子符串算法题.md)
- [算法总结——几道常见的链表算法题 ](./dataStructures-algorithms/几道常见的链表算法题.md)
- [剑指offer部分编程题](./dataStructures-algorithms/剑指offer部分编程题.md)
- [公司真题](./dataStructures-algorithms/公司真题.md)
- [回溯算法经典案例之N皇后问题](./dataStructures-algorithms/Backtracking-NQueens.md)

## 数据库

### MySQL

* [MySQL 学习与面试](./database/MySQL.md)
* [一千行MySQL学习笔记](./database/一千行MySQL命令.md)
* [【思维导图-索引篇】搞定数据库索引就是这么简单](./database/MySQL%20Index.md)
* [事务隔离级别(图文详解)](./database/事务隔离级别(图文详解).md)
* [一条SQL语句在MySQL中如何执行的](./database/一条sql语句在mysql中如何执行的.md)

### Redis

* [Redis 总结](./database/Redis/Redis.md)
* [Redlock分布式锁](./database/Redis/Redlock分布式锁.md)
* [如何做可靠的分布式锁,Redlock真的可行么](./database/Redis/如何做可靠的分布式锁,Redlock真的可行么.md)

## 系统设计

### 设计模式

- [设计模式系列文章](./system-design/设计模式.md)

### 常用框架

#### Spring

- [Spring 学习与面试](./system-design/framework/Spring学习与面试.md)
- [Spring中bean的作用域与生命周期](./system-design/framework/SpringBean.md)
- [SpringMVC 工作原理详解](./system-design/framework/SpringMVC%20%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86%E8%AF%A6%E8%A7%A3.md)

#### ZooKeeper

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

### 数据通信

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

### 网站架构

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

## 面试指南

### 备战面试

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

### 常见面试题总结

* [第一周(2018-8-7)](./essential-content-for-interview/MostCommonJavaInterviewQuestions/第一周(2018-8-7).md) (为什么 Java 中只有值传递、==与equals、 hashCode与equals)
* [第二周(2018-8-13)](./essential-content-for-interview/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](./essential-content-for-interview/MostCommonJavaInterviewQuestions/第四周(2018-8-30).md) (主要内容是几道面试常问的多线程基础题。)

### 面经

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

## 工具

### Git

* [Git入门](./tools/Git.md)

### Docker

* [Docker 入门](./tools/Docker.md)
* [一文搞懂 Docker 镜像的常用操作!](./tools/Docker-Image.md)

## 资料

### 书单

- [Java程序员必备书单](./data/java-recommended-books.md)

### Github榜单

- [Java 项目月榜单](./github-trending/JavaGithubTrending.md)

***

## 待办

- [x] [Java 8 新特性总结](./java/What's%20New%20in%20JDK8/Java8Tutorial.md)
- [x] [Java 8 新特性详解](./java/What's%20New%20in%20JDK8/Java8教程推荐.md)
- [ ] Java 多线程类别知识重构(---正在进行中---)
- [x] [BIO,NIO,AIO 总结 ](./java/BIO-NIO-AIO.md)
- [ ] Netty 总结(---正在进行中---)
- [ ] 数据结构总结重构(---正在进行中---)

## 公众号

- 如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号。
- 由本文档衍生的专为面试而生的《Java面试突击》V2.0 PDF 版本公众号后台回复 **"Java面试突击"** 即可免费领取!
- 一些Java工程师常用学习资源公众号后台回复关键字 **“1”** 即可免费无套路获取。

<p align="center">
<img src="https://user-gold-cdn.xitu.io/2018/11/28/167598cd2e17b8ec?w=258&h=258&f=jpeg&s=27334" width=""/>
</p>
10 changes: 10 additions & 0 deletions docs/_coverpage.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<p align="center">
<img src="https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-3logo-透明.png" width=""/>
</p>

<h1 align="center">Java 学习/面试指南</h1>

[常用资源](https://shimo.im/docs/MuiACIg1HlYfVxrj/)
[GitHub](<https://github.com/Snailclimb/JavaGuide>)
[开始阅读](#java)

16 changes: 16 additions & 0 deletions docs/android/Android-Interview/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Node rules:
## Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt

## Dependency directory
## Commenting this out is preferred by some people, see
## https://docs.npmjs.com/misc/faq#should-i-check-my-node_modules-folder-into-git
node_modules

# Book build output
_book

# eBook build output
*.epub
*.mobi
*.pdf
110 changes: 110 additions & 0 deletions docs/android/Android-Interview/Activity/Activity Task和Process.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
### 源码分析相关面试题

- [Volley源码分析](http://www.jianshu.com/p/ec3dc92df581)
- [注解框架实现原理](http://www.jianshu.com/p/20da6d6389e1)
- [okhttp3.0源码分析](http://www.jianshu.com/p/9ed2c2f2a52c)
- [onSaveInstanceState源码分析](http://www.jianshu.com/p/cbf9c3557d64)
- [静默安装和源码编译](http://www.jianshu.com/p/2211a5b3c37f)

### Activity相关面试题

- [保存Activity的状态](http://www.jianshu.com/p/cbf9c3557d64)
- [深刻剖析activity启动模式(一)](http://www.jianshu.com/p/b33fd8c550bf)
- [深刻剖析activity启动模式(二)](http://www.jianshu.com/p/e1ea9e542112)
- [深刻剖析activity启动模式(三)](http://www.jianshu.com/p/d13e3d552d4b)
- [Activity Task和Process之间的关系](http://www.jianshu.com/p/d13e3d552d4b)
- [service里面startActivity抛异常?activity不会](http://www.jianshu.com/p/16e880ceb3a4)

### 与XMPP相关面试题

- [XMPP协议优缺点](http://www.jianshu.com/p/2c04ac3c526a)
- [极光消息推送原理](http://www.jianshu.com/p/d88dc66908cf)

### 与性能优化相关面试题

- [内存泄漏和内存溢出区别](http://www.jianshu.com/p/5dd645b05c76)
- [UI优化和线程池实现原理](http://www.jianshu.com/p/c22398f8587f)
- [代码优化](http://www.jianshu.com/p/ebd41eab90df)
- [内存性能分析](http://www.jianshu.com/p/2665c31b9c2f)
- [内存泄漏检测](http://www.jianshu.com/p/1514c7804a06)
- [App启动优化](http://www.jianshu.com/p/f0f73fefdd43)
- [与IPC机制相关面试题](http://www.jianshu.com/p/de4793a4c2d0)

### 与登录相关面试题

- [oauth认证协议原理](http://www.jianshu.com/p/2a6ecbf8d49d)
- [token产生的意义](http://www.jianshu.com/p/9b7ce2d6c195)
- [微信扫一扫实现原理](http://www.jianshu.com/p/a9d1f21bd5e0)

### 与开发相关面试题

- [迭代开发的时候如何向前兼容新旧接口](http://www.jianshu.com/p/cbecadec98de)
- [手把手教你如何解决as jar包冲突](http://www.jianshu.com/p/30fdc391289c)
- [context的原理分析](http://www.jianshu.com/p/2706c13a1769)
- [解决ViewPager.setCurrentItem中间很多页面切换方案](http://www.jianshu.com/p/38ab6d856b56)
- [字体适配](http://www.jianshu.com/p/33d499170e25)
- [软键盘顶出去解决方案](http://www.jianshu.com/p/640bac6f58ab)与人事相关面试题
- [人事面试宝典](http://www.jianshu.com/p/d61b553ff8c9)

AMS提供了一个ArrayList mHistory来管理所有的activity,activity在AMS中的形式是ActivityRecord,task在AMS中的形式为TaskRecord,进程在AMS中的管理形式为ProcessRecord。如下图所示

![img](http://upload-images.jianshu.io/upload_images/4037105-1a0f2628f74ca65e?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

从图中我们可以看出如下几点规则:

1) 所有的ActivityRecord会被存储在mHistory管理;

2) 每个ActivityRecord会对应到一个TaskRecord,并且有着相同TaskRecord的ActivityRecord在mHistory中会处在连续的位置;

3) 同一个TaskRecord的Activity可能分别处于不同的进程中,每个Activity所处的进程跟task没有关系;

Activity启动时ActivityManagerService会为其生成对应的ActivityRecord记录,并将其加入到回退栈(back stack)中,另外也会将ActivityRecord记录加入到某个Task中。请记住,ActivityRecord,backstack,Task都是ActivityManagerService的对象,由ActivityManagerService进程负责维护,而不是由应用进程维护。

在回退栈里属于同一个task的ActivityRecord会放在一起,也会形成栈的结构,也就是说后启动的Activity对应的ActivityRecord会放在task的栈顶

执行adb shell dumpsys activity命令,发现有以下输出:

```
Task id #30
TaskRecord{7f2f34a #30 A=com.maweiqi.second U=0 sz=2}
Intent { flg=0x10000000 cmp=com.open.android.task1/.SecondActivity }
Hist #1: ActivityRecord{a0f9ded u0 com.open.android.task3/.OtherActivity t30}
Intent { flg=0x10400000 cmp=com.open.android.task3/.OtherActivity }
ProcessRecord{12090b5 27543:com.open.android.task3/u0a62}
Hist #0: ActivityRecord{1048af6 u0 com.open.android.task1/.SecondActivity t30}
Intent { flg=0x10000000 cmp=com.open.android.task1/.SecondActivity }
ProcessRecord{5bc013e 26035:com.open.android.task1/u0a59}
Task id #31
TaskRecord{dce52bb #31 A=com.open.android.task3 U=0 sz=1}
Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.open.android.task3/.MainActivity }
Hist #0: ActivityRecord{f9e58c5 u0 com.open.android.task3/.MainActivity t31}
Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.open.android.task3/.MainActivity }
ProcessRecord{12090b5 27543:com.open.android.task3/u0a62}
Task id #29
TaskRecord{5b063d8 #29 A=com.open.android.task1 U=0 sz=1}
Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.open.android.task1/.MainActivity }
Hist #0: ActivityRecord{689947d u0 com.open.android.task1/.MainActivity t29}
Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.open.android.task1/.MainActivity }
ProcessRecord{5bc013e 26035:com.open.android.task1/u0a59}
Running activities (most recent first):
TaskRecord{7f2f34a #30 A=com.maweiqi.second U=0 sz=2}
Run #3: ActivityRecord{a0f9ded u0 com.open.android.task3/.OtherActivity t30}
TaskRecord{dce52bb #31 A=com.open.android.task3 U=0 sz=1}
Run #2: ActivityRecord{f9e58c5 u0 com.open.android.task3/.MainActivity t31}
TaskRecord{7f2f34a #30 A=com.maweiqi.second U=0 sz=2}
Run #1: ActivityRecord{1048af6 u0 com.open.android.task1/.SecondActivity t30}
TaskRecord{5b063d8 #29 A=com.open.android.task1 U=0 sz=1}
Run #0: ActivityRecord{689947d u0 com.open.android.task1/.MainActivity t29}
mResumedActivity: ActivityRecord{a0f9ded u0 com.open.android.task3/.OtherActivity t30}
```

从图对应文字在对应adb输出,这几个基本概念大家估计就清楚了。

- 欢迎关注微信公众号,长期推荐技术文章和技术视频
- 微信公众号名称:Android干货程序员

![img](http://upload-images.jianshu.io/upload_images/4037105-8f737b5104dd0b5d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
Loading

0 comments on commit 4d15bd1

Please sign in to comment.