gitextract_e96lsqs2/ ├── Part1/ │ ├── Android/ │ │ ├── AIDL.md │ │ ├── ANR问题.md │ │ ├── APP启动过程.md │ │ ├── Activity启动过程全解析.md │ │ ├── Android关于oom的解决方案.md │ │ ├── Android内存泄漏总结.md │ │ ├── Android几种进程.md │ │ ├── Android图片中的三级缓存.md │ │ ├── Android基础知识.md │ │ ├── Android开机过程.md │ │ ├── Android性能优化.md │ │ ├── Android系统机制.md │ │ ├── Art和Dalvik区别.md │ │ ├── Asynctask源码分析.md │ │ ├── Binder机制.md │ │ ├── Bitmap的分析与使用.md │ │ ├── EventBus用法详解.md │ │ ├── Fragment.md │ │ ├── Git操作.md │ │ ├── Handler内存泄漏分析及解决.md │ │ ├── Listview详解.md │ │ ├── MVC,MVP,MVVM的区别.md │ │ ├── MVP.md │ │ ├── Recyclerview和Listview的异同.md │ │ ├── SurfaceView.md │ │ ├── Zygote和System进程的启动过程.md │ │ ├── 事件分发机制.md │ │ ├── 开源框架源码分析.md │ │ ├── 插件化技术学习.md │ │ ├── 查漏补缺.md │ │ ├── 热修复技术.md │ │ ├── 线程通信基础流程分析.md │ │ └── 自定义控件.md │ └── DesignPattern/ │ ├── Builder模式.md │ ├── 代理模式.md │ ├── 单例模式.md │ ├── 原型模式.md │ ├── 外观模式.md │ ├── 常见的面向对象设计原则.md │ ├── 策略模式.md │ ├── 简单工厂.md │ ├── 观察者模式.md │ ├── 责任链模式.md │ └── 适配器模式.md ├── Part2/ │ ├── JVM/ │ │ ├── JVM.md │ │ ├── JVM类加载机制.md │ │ ├── Java内存区域与内存溢出.md │ │ └── 垃圾回收算法.md │ ├── JavaConcurrent/ │ │ ├── Java并发基础知识.md │ │ ├── NIO.md │ │ ├── Synchronized.md │ │ ├── Thread和Runnable实现多线程的区别.md │ │ ├── thread与runable如何实现多线程.md │ │ ├── volatile变量修饰符.md │ │ ├── 使用wait notify notifyall实现线程间通信.md │ │ ├── 可重入内置锁.md │ │ ├── 多线程环境中安全使用集合API.md │ │ ├── 守护线程与阻塞线程.md │ │ ├── 实现内存可见的两种方法比较:加锁和volatile变量.md │ │ ├── 死锁.md │ │ ├── 生产者和消费者问题.md │ │ ├── 线程中断.md │ │ └── 线程挂起、恢复与终止的正确方法.md │ └── JavaSE/ │ ├── ArrayList 、 LinkedList 、 Vector 的底层实现和区别.md │ ├── ArrayList源码剖析.md │ ├── Arraylist.md │ ├── Arraylist和Hashmap如何扩容等.md │ ├── Collection.md │ ├── HashMap源码剖析.md │ ├── HashTable源码剖析.md │ ├── Hashmap的hashcode的作用等.md │ ├── Java中的内存泄漏.md │ ├── Java基础知识.md │ ├── Java集合框架.md │ ├── LinkedHashMap源码剖析.md │ ├── LinkedList源码剖析.md │ ├── Linkedlist.md │ ├── List.md │ ├── Queue.md │ ├── Set.md │ ├── String源码分析.md │ ├── Vector源码剖析.md │ ├── hashmap和hashtable的底层实现和区别,两者和concurrenthashmap的区别。.md │ ├── 从源码分析HashMap.md │ ├── 反射机制.md │ └── 如何表达出Collection及其子类.md ├── Part3/ │ ├── Algorithm/ │ │ ├── LeetCode/ │ │ │ ├── two-sum.md │ │ │ └── zigzag-conversion.md │ │ ├── Lookup/ │ │ │ ├── 折半查找.md │ │ │ └── 顺序查找.md │ │ ├── Sort/ │ │ │ ├── 冒泡排序.md │ │ │ ├── 归并排序.md │ │ │ ├── 快速排序.md │ │ │ ├── 选择排序.md │ │ │ └── 面试中的 10 大排序算法总结.md │ │ ├── 剑指Offer/ │ │ │ ├── 1.七种方式实现singleton模式.md │ │ │ ├── 2.二维数组中的查找.md │ │ │ ├── 合并两个排序的链表.md │ │ │ ├── 旋转数组的最小数字.md │ │ │ ├── 面试题11:数值的整数次方.md │ │ │ ├── 面试题12:打印1到最大的n位数.md │ │ │ ├── 面试题44:扑克牌的顺子.md │ │ │ ├── 面试题45:圆圈中最后剩下的数字.md │ │ │ └── 面试题6:重建二叉树.md │ │ └── 程序员代码面试指南(左程云)/ │ │ ├── 1.设计一个有getMin功能的栈.md │ │ ├── 2.由两个栈组成的队列.md │ │ └── 3.如何仅用递归函数和栈操作逆序一个栈.md │ └── DataStructure/ │ ├── 数据结构(Java).md │ ├── 数组.md │ ├── 栈和队列.md │ └── 递归和非递归方式实现二叉树先、中、后序遍历.md ├── Part4/ │ ├── Network/ │ │ ├── Http协议.md │ │ ├── Socket.md │ │ ├── TCP与UDP.md │ │ └── 计算机网络基础汇总.md │ └── OperatingSystem/ │ ├── Linux系统的IPC.md │ └── 操作系统.md ├── Part5/ │ └── ReadingNotes/ │ ├── 《APP研发录》第1章读书笔记.md │ ├── 《APP研发录》第2章读书笔记.md │ ├── 《Android开发艺术探索》第一章笔记.md │ ├── 《Android开发艺术探索》第三章笔记.md │ ├── 《Android开发艺术探索》第二章笔记.md │ ├── 《Android开发艺术探索》第八章笔记.md │ ├── 《Android开发艺术探索》第十五章笔记.md │ ├── 《Android开发艺术探索》第四章笔记.md │ ├── 《Java编程思想》第一章读书笔记.md │ ├── 《Java编程思想》第二章读书笔记.md │ └── 《深入理解java虚拟机》第12章.md ├── Part6/ │ └── InterviewExperience/ │ ├── Alibaba.md │ ├── 新浪微博.md │ ├── 网易杭研.md │ ├── 美团.md │ ├── 蜻蜓FM.md │ └── 豌豆荚.md └── README.md