-
Notifications
You must be signed in to change notification settings - Fork 211
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
dda7107
commit 4d15bd1
Showing
742 changed files
with
94,397 additions
and
1 deletion.
There are no files selected for viewing
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,204 @@ | ||
Java后端技术交流群(限工作一年及以上,架构视频免费领取) :[](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> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | ||
110 changes: 110 additions & 0 deletions
110
docs/android/Android-Interview/Activity/Activity Task和Process.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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。如下图所示 | ||
|
||
 | ||
|
||
从图中我们可以看出如下几点规则: | ||
|
||
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干货程序员 | ||
|
||
 |
Oops, something went wrong.