Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/pengxurui/androidfamily

🔥【Android 面经 + Android 学习指南】一份帮助 Android 开发者知识积累与能力进阶的学习路线
https://github.com/pengxurui/androidfamily

android application computer-science datastructures-algorithms flutter framework google interview java jetpack jvm kotlin ndk network study-guide

Last synced: 14 days ago
JSON representation

🔥【Android 面经 + Android 学习指南】一份帮助 Android 开发者知识积累与能力进阶的学习路线

Awesome Lists containing this project

README

        

# AndroidFamily

![](https://github.com/pengxurui/AndroidFamily/blob/master/images/Android_Banner.png)






























**这是一份帮助 Android 开发者知识积累与能力进阶的学习路线,主要集中在 Java、Android、计算机基础、Flutter、NDK、产品和软实力等话题。**

小彭的整个 Android 知识体系是参考了杜威十进制的知识分类思想进行分级整理,未来小彭也会按照这个体系去输出内容。有很多细节的地方,考虑到不是很完善的地方,大家可以提 Issue 给意见(别忘记 Star 哟)。

## 使用方法

**1、⭐ 先给一个 Star:** 你的支持对我非常重要,我的内容质量绝对对得起你的 Star,给我一点创作的动力,感谢。

**2、进小彭的 Android [交流群](https://github.com/pengxurui/AndroidFamily/blob/master/images/%E4%B8%AA%E4%BA%BA%E5%BE%AE%E4%BF%A1.jpeg):** 加我微信进群,我们对群质量有要求,你可以在这里找到志同道合的朋友。群里可以讨论技术、分享文章、聊天、吐槽,允许适当发招聘广告,不受欢迎的行为是严格禁止的:

**3、关注我的 [公众号](https://github.com/pengxurui/Android-NoteBook/raw/master/images/搜一搜公众号.png):** 坚持高质量原创内容,不人云亦云,公众号后续是我主要的内容更新平台;

**4、关注我的 [掘金](https://juejin.cn/user/1063982987230392)、[知乎](https://www.zhihu.com/people/pengxurui) 和 [《AndroidFamily》](https://github.com/pengxurui/AndroidFamily) 专栏:** 掘金上有我历史发布过的所有文章;

**5、关注 [AndroidFamilyDemo](https://github.com/pengxurui/AndroidFamilyDemo) 项目:** 该项目作为 《AndroidFamily》 专栏配套 “示例程序” 而存在,旨在帮助读者更直观感性地理解纸面上的知识点,进一步提高学习效率;

**6、催文:** 我会优先输出大多数读者朋友感兴趣的内容,你可以在 Issue 里提出你的需求,小彭会按照大家普遍的需求调整方向。当然同时能请小彭喝一杯速溶咖啡的话,你就是很 Nice 的 boy!

## 如何成为有高度的移动开发工程师?

很快的,再过几个月就已经是工作四年的老同学了。这几年和不少同学共事过,发现不少人(包括我在内)平时看起来工作努力,也有足够的能力“应付”需求,但一旦跳出舒适区,到更高的要求去解决问题, 却不一定能游刃有余。为什么会这样,我想原因是多方面的:

- **1、缺乏深度,不知其所以然:** 懂得运用技术去解决问题,但没有思考过选择这些技术背后的逻辑,对技术背后的底层原理也知之甚少。这种状态在遇到有一定深度的任务时,会束手无策或南辕北辙。

- **2、知识碎片化,不成体系:** 对每项技术都有所涉猎,但却无法站在更高 / 更深的角度理解使用的技术,也无法完整且有条理地描述出项目中使用到的技术。这种状态很难说有能力胜任复杂业务 / 复杂系统设计。

是什么原因导致出现这种状态,是公司的原因吗?也许。在初创团队,会更多地奉行 “拿来主义”,很多问题直接使用第三方 SDK 解决。只有在大型团队,才有机会真正参与到基础平台的研发。事实确实如此,业务和团队的限制因素的确存在并且影响巨大,但这是决定因素吗?我想,我们需要问自己是否真正地去努力了吗?既然在小厂,那么就更加应该坚持学习,持续探索技术深度,在自己的能力边界疯狂试探,这些行为会在将来晋升或者跳槽时称为自己的筹码和亮点。我会推荐你读读看张绍文(前微信工程师)的[《做一名有高度的移动开发工程师》](https://time.geekbang.org/column/article/86258),包括整个专栏,很多内容会激发你的思考。

回到主题,如何成为有高度的移动开发工程师呢?首先需深度和广度:能站在客户端的角色上,深入钻研一个问题在客户端技术上的实现细节,并且持续打磨,同时又能横向全面地思考每个细节 / 边界。然而,移动开发已经不是单兵作战的时代,随着业务复杂性提升,单纯的客户端优化已经不能解决业务述求,这个时候就需要跳出客户端的角色范畴,站在更高的角度思考问题,清楚每个端能够做和不能做的事情,而不局限在客户端这一亩三分地。

很多 Android 开发者有焦虑和浮躁的心态,这似乎已经称为一种普遍的现象,更不用说还待在小厂的同学。的确,移动开发已经不再是 “风口”,很多初级移动开发的岗位在减少,一线大厂对候选人的要求也变得越来越严格,对算法和计算机底层知识也有深入的考察。难吗,你是不是在羡慕那些当年选择了前端或服务端的同学?但是据我观察,往往是服务端羡慕客户端,前端看着服务端眼馋,而客户端又盯着服务端手中的蛋糕。我不知道谁在说心里话,也许,别人碗里的饭就是香一点,更别提 AI、算法、音视频这些香饽饽。

有的人选择了转行,结果是站在风口上被吹到天上,还是在任何方向都没有深度积累,最终没有竞争力。我没有经历过,所以我也看不到最终的结果。我们唯一能看到的结果是:“风口是等来的,而不是追来的”,人家之所以能站在风口上,原因是有多年的积累,最终等来的风口。站在当前时代,我们首先要做的,就是抛弃焦虑,焦虑解决不了任何问题。唯有无所畏惧地往前冲,才能留有一席之地,那些落后于时代的移动开发者必将被淘汰。看过王争(前 Google 工程师)在文章里写过:“每一个优秀的人,都有一段沉默的时光,那段时光是付出了很多努力的,却得不到结果的日子,我们把它叫做扎根。” 你经历过这个阶段吗?





# Android Family 知识体系(善用 Ctrl+F)

## 最新文章

[![](https://github-readme-juejin-recent-article-flywith24.vercel.app/juejin/1063982987230392/0?width=550)](https://github-readme-juejin-recent-article-flywith24.vercel.app/juejin/1063982987230392/0)[![](https://github-readme-juejin-recent-article-flywith24.vercel.app/juejin/1063982987230392/1?width=550)](https://github-readme-juejin-recent-article-flywith24.vercel.app/juejin/1063982987230392/1)[![](https://github-readme-juejin-recent-article-flywith24.vercel.app/juejin/1063982987230392/2?width=550)](https://github-readme-juejin-recent-article-flywith24.vercel.app/juejin/1063982987230392/2) | [![](https://github-readme-juejin-recent-article-flywith24.vercel.app/juejin/1063982987230392/3?width=550)](https://github-readme-juejin-recent-article-flywith24.vercel.app/juejin/1063982987230392/3)[![](https://github-readme-juejin-recent-article-flywith24.vercel.app/juejin/1063982987230392/4?width=550)](https://github-readme-juejin-recent-article-flywith24.vercel.app/juejin/1063982987230392/4)[![](https://github-readme-juejin-recent-article-flywith24.vercel.app/juejin/1063982987230392/5?width=550)](https://github-readme-juejin-recent-article-flywith24.vercel.app/juejin/1063982987230392/5)
---|---

## 000 Java

- 010 Java 编程

- [010.1 · 金九银十,收下这份 Java String 面试题](https://juejin.cn/post/6909066772721172488)

- 020 Kotlin 编程

- [020.1 · 金三银四必备,全面总结 Kotlin 面试知识点](https://juejin.cn/post/7076744947440812062)

- [020.2 · 扩展函数(终于知道为什么 with 用 this,let 用 it)](https://juejin.cn/post/6935027613542907941)

- [020.3 · by 委托机制 & 原理 & 应用](https://juejin.cn/post/6958346113552220173)

- 030 Java 虚拟机

- 031 Java 虚拟机内存管理

- 031.1 内存分布模型

- 031.2 垃圾回收机制

- 031.3 对象创建过程

- [031.4 吊打面试官:对象的内存分为哪几个部分?](https://juejin.cn/post/7130508389175853087)

- [031.5 吊打面试官:说一下 Java 的四种引用类型](https://juejin.cn/post/7130652285817847844)

- [031.6 吊打面试官:为什么 finalize() 方法只会执行一次?](https://juejin.cn/post/7131027741163388958)

- [内存分配模型](https://juejin.cn/post/6917796881196122120)

- [垃圾回收机制](https://juejin.cn/post/6918740822163161095)

- [拿放大镜看对象](https://juejin.cn/post/6918257137806376968)

- [Java 虚拟机面试题](https://www.jianshu.com/p/846d05fc5e45)

- 032 Java 编译过程

- 032.1 Java 编译过程

- 032.2 Class 文件结构

- 032.3 APT 注解处理器

- 032.4 注解

- 032.5 类加载机制

- 032.6 泛型机制

- [Class 文件结构](https://www.jianshu.com/p/14c969b8add2)

- [编译过程(编译前端 & 编译后端)](https://juejin.cn/post/6867124787576373256)

- [类加载机制](https://www.jianshu.com/p/f4318e626a22)

- [泛型(含Kotlin)](https://juejin.cn/post/6888345234653052941)

- [注解(含 Kotlin)](https://www.jianshu.com/p/5871e1186840)

- [为什么 Java 实现了平台无关性?](https://juejin.cn/post/6866716238207254536)

- 033 Java 虚拟机执行系统

- 033.1 方法调用与方法返回

- 033.2 重载与重写

- 033.3 反射机制

- 033.4 异常机制

- [方法调用的本质(含重载与重写区别)](https://juejin.cn/post/6867481742723268615)

- [反射机制(含 Kotlin)](https://juejin.cn/post/6889833658669072397)

- 034 并发编程

- [034.01 全网最全的 ThreadLocal 原理详细解析 —— 原理篇](https://juejin.cn/post/7166202551782604837)

- [034.02 全网最全的 ThreadLocal 原理详细解析 —— 源码篇](https://juejin.cn/post/7166202801470013476)

- 035 Java 集合

- [035.1 Java 数据结构:ArrayList:ArrayList 可以完全替代数组吗?](https://juejin.cn/post/7161731329078329381)

- [035.2 Java 数据结构:CopyOnWriteArrayList 是如何保证线程安全的?](https://juejin.cn/post/7162035643785150472)

- [035.3 Java 数据结构:说一下 ArrayList 和 LinkedList 的区别?](https://juejin.cn/post/7162203434014212109)

- [035.4 Java 数据结构:说一下 ArrayDeque 和 LinkedList 的区别?](https://juejin.cn/post/7162819765361672199)

- [035.5 Java 数据结构:万字 HashMap 详解,基础(优雅)永不过时 —— 原理篇](https://juejin.cn/post/7163985718417555487)

- [035.6 Java 数据结构:万字 HashMap 详解,基础(优雅)永不过时 —— 源码篇](https://juejin.cn/post/7164024676618862622)

- [035.7 Java 数据结构:如何使用 LinkedHashMap 实现 LRU 缓存?](https://juejin.cn/post/7164348785512939551)

- [035.8 Java 数据结构:WeakHashMap 和 HashMap 的区别是什么,何时使用?](https://juejin.cn/post/7165044834590261256)

---
## 100 Android

- 110 Android 四大组件

- 111 Activity

- 112 Service

- 113 BroadcastReceiver

- 114 ContentProvider

- [114.1 ContentProvider 基础](https://juejin.cn/post/6929518871921557512)

- [114.2 ContentProvider 原理](https://www.jianshu.com/p/e144079840b3)

- [114.3 ContentProvider 案例:无侵入获取 Context 进行初始化](https://juejin.cn/post/6887980244389593096)

- [114.4 ContentProvider 案例:Jetpack · App Startup](https://juejin.cn/post/6898738809895125006)

- 115 Intent

- 115.1 Intent 基础

- [115.2 Android 面试题:说一下 PendingIntent 和 Intent 的区别](https://juejin.cn/post/7122767360976486413)

- 116 Context

- [116.1 一个进程有多少个 Context 对象(答对的不多)](https://www.jianshu.com/p/51d63a1ffb95)

- [116.2 View & Fragment & Window 的 getContext() 一定返回 Activity 吗?](https://juejin.cn/post/6886857116787687438)

- 120 Android 核心原理

- 121 Android IPC 通信

- 122 Android 虚拟机

- [Android 从类加载到程序执行](https://juejin.cn/post/6919121581180616718)

- 123 Android 系统层服务

- 123.1 Android 系统架构

- 123.2 Android 系统启动过程

- 123.3 应用安装过程

- 123.4 四大组件启动过程

- 124 Android 应用层机制

- 124.1 Handler 机制

- 124.2 事件分发机制

- 124.3 Window 机制

- 124.4 视图框架

- 124.5 布局解析

- 124.6 绘制机制

- 124.7 ANR 机制

- [带你探究 LayoutInflater 布局解析原理](https://juejin.cn/post/6886052422260228103)

- 125 Android 编译过程

- 125.1 APK 编译过程

- 125.2 APK 文件格式

- 125.3 DEX 文件格式

- 125.4 so 文件格式

- 126 Android 资源管理机制

- 126.1 资源基础

- 126.2 资源编译过程

- 126.3 资源匹配过程

- 126.4 资源案例:换肤

- 126.5 资源案例:插件化

- 126.6 资源案例:组件化资源冲突

- [说说从 android:text 到 TextView 的过程(主题&样式)](https://juejin.cn/post/6889029050753531917)

- 130 Android 核心特性

- 131 Android 版本适配

- [131.1 做了这么多年 Android,你对系统特性有多熟悉?](https://juejin.cn/post/7092381934810038279)

- [131.2 Android 12 还没用上,Android 13 已经来了!](https://juejin.cn/post/7088731887945908260)

- [131.3 还没适配 Android 12 的要抓紧了](https://juejin.cn/post/7088731887945908260)

- 132 权限机制

- 132.1 权限基础

- 132.2 动态权限

- 132.3 特殊权限 - 设备管理器

- 132.4 特殊权限 - 无障碍服务

- 132.5 特殊权限 - 通知使用权限

- 133 系统通知

- 134 持久化存储

- 134.1 键值对存储 - SharedPreference

- 134.2 键值对存储 - MMKV

- 134.3 键值对存储 - DataStore

- 135 网络请求

- [135.1 网络案例:飞书前端提到的竞态问题,在 Android 上怎么解决?](https://juejin.cn/post/7130144715063689253)

- 136 桌面微件 Widget

- 140 Android 组件原理

- 141 Jetpack 组件

- [141.01 Lifecycle:生命周期感知型组件的基础](https://juejin.cn/post/7120472134853328909/)

- [141.02 为什么 LiveData 会重放数据,怎么解决?](https://juejin.cn/post/7121621553670225957)

- [141.03 为什么 Activity 都重建了 ViewModel 还存在?](https://juejin.cn/post/7121998366103306254/)

- [141.04 有小伙伴说看不懂 LiveData、Flow、Channel,跟我走](https://juejin.cn/post/7077149853876224013)

- [141.05 Android UI 架构演进:从 MVC 到 MVP、MVVM、MVI](https://juejin.cn/post/7072020104212381732)

- [141.06 ViewBinding 与 Kotlin 委托双剑合璧](https://juejin.cn/post/6960914424865488932)

- [141.07 AndroidX Fragment 核心原理分析](https://juejin.cn/post/6970998913754988552)

- 141.08 RecyclerView:可复用型列表视图

- 141.09 Navigation:单 Activity 多 Fragment 的导航方案

- [141.10 从 Dagger2 到 Hilt 玩转依赖注入(一)](https://juejin.cn/post/6947655947875516424)

- 141.11 Hilt:从 Dagger2 到 Hilt 玩转依赖注入(二)

- [141.12 OnBackPressedDispatcher:Jetpack 处理回退事件的新姿势](https://juejin.cn/post/6967039557220958244)

- [141.13 食之无味!App Startup 可能比你想象中要简单](https://juejin.cn/post/6898738809895125006)

- 141.14 DataStore:新一代键值对存储方案

- 141.15 Room:ORM 数据库访问框架

- 141.16 WindowManager:加强对多窗口模式的支持

- 141.17 WorkManager:加强对后台任务的支持

- 141.18 Compose:新一代视图开发方案

- 142 网络组件

- 142.1 OkHttp

- 142.2 Retrofit

- 142.3 Glide

- [142.4 EventBus 这是一份详细的 EventBus 使用教程](https://juejin.cn/post/6930562700128813070)

- [142.5 适可而止!看 Glide 如何把生命周期安排得明明白白](https://juejin.cn/post/6900548494818279432)

- [142.6 Android IO 框架 Okio 的实现原理,到底哪里 OK?](https://juejin.cn/post/7167757174502850597/)

- [142.7 Android IO 框架 Okio 的实现原理,如何检测超时?](https://juejin.cn/post/7168097359807971342)

- 143 序列化组件

- [143.1 Android 序列化框架 Gson 的实现原理](https://juejin.cn/post/7160359176282538015)

- 143.2 Protobuf

- 144 持久化组件

- [144.1 Android 初代 K-V 存储框架 SharedPreferences,旧时代的余晖?(上)](https://juejin.cn/post/7169263929510592519)

- [144.2 Android 初代 K-V 存储框架 SharedPreferences,旧时代的余晖?(下)](https://juejin.cn/post/7169265620306165790/)

- 145 调优组件

- [144.1 为什么各大厂自研的内存泄漏检测框架都要参考 LeakCanary?因为它是真强啊!](https://juejin.cn/post/7134728428003000356)

- 146 其他

- [145.1 Android 内存缓存框架 LruCache 的实现原理](https://juejin.cn/post/7166476725981806628)

- 150 Android UI 开发

- 151 Android UI 基础

- 151.1 Material Design

- [151.2 老生常谈!屏幕适配原理 & 方案总结笔记](https://juejin.cn/post/6903344875136745479)

- 151.3 自定义 View 基础

- 152 文本

- 152.01 TextView 文本控件

- 152.02 Html 富文本

- 152.03 Span 富文本

- 152.04 IconFont 图标文字

- 153 图片

- 153.01 图片控件

- 153.02 ImageView 使用详解

- 153.03 Bitmap 使用详解

- 153.04 Drawable 使用详解

- 153.05 资源图片加载过程

- [153.06 高低版本 Bitmap 内存分配与回收原理对比]()

- 153.07 图片解码过程

- 153.08 Bitmap 复用机制

- 153.09 Bitmap 硬件位图

- 153.10 计算图片内存占用

- 153.11 常见图片类型解析

- 153.12 图片优化概述

- 153.13 图片优化案例 - NativeBitmap

- 153.14 图片优化案例 - 大图加载

- 153.15 图片优化案例 - 大图监测

- 153.16 图片优化案例 - 图片慢响应排查

- 154 动画

- 154.1 动画基础

- 154.2 Lottie 动画

- 155 交互

- 156 高级组件

- 156.1 SurfaceView

- 156.2 NestedScrollView

- 156.3 RecyclerView

- 其他
- 端内数据状态同步方案VM-Mapping

- 160 Android 性能优化

- 170 Android 工程化

- 171 Gradle 构建工具

- [171.1 为什么说 Gradle 是 Android 进阶绕不去的坎](https://juejin.cn/post/7092367604211253256)

- [171.2 手把手带你自定义 Gradle 插件](https://juejin.cn/post/7098383560746696718)

- 171.3 Gradle 依赖管理

- [171.4 使用 Maven 实现组件化发布](https://juejin.cn/post/6963633839860088846)

- [171.5 Gradle 插件案例:一键检索未适配 64 位架构的 so 文件](https://juejin.cn/post/7034201332500135966)

- 172 AGP 插件

- 172.1 AGP 构建过程

- 172.2 AGP 常用配置项

- [172.3 其实 Gradle Transform 就是个纸老虎](https://juejin.cn/post/7098752199575994405)

- [172.4 代码混淆到底做了什么?](https://juejin.cn/post/6930648501311242248)

- [172.5 一篇文章看懂 v1/v2/v3 签名机制](https://juejin.cn/post/6906882748909092871)

- 172.6 AGP 案例:多渠道打包

- 173 组件化开发

- [173.1 方案积累:有赞、蘑菇街、得到、携程、支付宝、手淘、爱奇艺、微信、美团](https://juejin.cn/post/6896099703474749453)

- 173.2 组件化基础

- 173.3 ARouter 原理分析

- 173.4 组件化案例 - 通用方案

- [173.5 组件化案例 - 美团组件化事件总线方案改进:ModularEventBus](https://juejin.cn/post/7137602073188630535)

- 173.6 组件化案例 - Key-Value

- 174 AOP 面向切面

- 174.01 AOP 基础

- 174.02 Java 注解

- 174.03 Java APT 注解处理器

- [174.04 JDK 动态代理的原理其实很简单](https://juejin.cn/post/6974018412158664734)

- [174.05 JDK 服务发现框架 ServiceLoader](https://juejin.cn/post/6916161542492782605)

- 174.06 AspectJ

- 174.07 Javassist

- 174.08 ASM

- 174.09 JavaPoet

- 174.10 KotlinPoet

- [174.11 AOP 案例 - 使用 AspectJ 限制按钮快速点击](https://juejin.cn/post/6889239355307753485)

- 175 应用测试

- 175.1 单元测试基础

- 175.2 Android 调试基础

- 176 动态化

- 177 安全与逆向

- 180 Compose

---
## 200 计算机基础

- 210 计算机组成原理

- 211 计算机组成结构

- [211.1 从图灵机到量子计算机,计算机可以解决所有问题吗?](https://juejin.cn/post/7148390668614762503/)

- [211.2 一套用了 70 多年的计算机架构 —— 冯·诺依曼架构](https://juejin.cn/post/7148723199818072095/)

- 211.3 学习计算机组成原理,到底在学什么?

- [211.4 图解计算机内部的高速公路 —— 总线系统](https://juejin.cn/post/7158122900355022855)

- 212 数制和编码

- [212.1 为什么计算机中的负数要用补码表示?](https://juejin.cn/post/7169966346753540103/)

- [212.2 今天一次把 Unicode 和 UTF-8 说清楚](https://juejin.cn/post/7126396251322449934)

- [212.3 为什么浮点数运算不精确?](https://juejin.cn/post/6860445359936798734)

- 213 处理器系统

- [213.1 CPU 中央处理器 程序员学习 CPU 有什么用?](https://juejin.cn/post/7166625448254767118)

- 213.2 CPU 如何执行任务

- 213.3 从源码到程序执行

- 213.4 GPU 图形处理器

- 214 存储器系统

- [214.1 计算机的存储器金字塔长什么样?](https://juejin.cn/post/7157033848344150053)

- [214.2 我把 CPU 三级缓存的秘密,藏在这 8 张图里](https://juejin.cn/post/7157288161578745869)

- [214.3 12 张图看懂 CPU 缓存一致性与 MESI 协议,真的一致吗?](https://juejin.cn/post/7158395475362578462)

- [214.4 已经有 MESI 协议,为什么还需要 volatile 关键字?](https://juejin.cn/post/7159127308492603400)

- 214.5 内存屏障

- [214.6 面试官:什么是伪共享,如何避免?](https://juejin.cn/post/7159964489621635109)

- 215 IO 系统

- 220 计算机网络

- 221 计算机网络基础

- 221.1 计算机网络基础概念

- [221.2 认为 Base64 是加密算法吗?](https://juejin.cn/post/6887498543494660109)

- 222 底层网络协议

- 222.01 TCP

- 222.02 UDP

- 223 应用层网络协议

- [223.01 图解 DNS & HTTPDNS 原理](https://juejin.cn/post/6884183177926033416)

- 223.02 HTTP 协议

- [223.03 安全传输模型 - 加密、摘要、签名、证书,一次说明白!](https://juejin.cn/post/6995549209348816909)

- 223.04 HTTPS 协议

- [223.05 MQTT 协议:为什么每份 Android 简历都说 “熟悉 MQTT 协议”?](https://juejin.cn/post/6984379979962253342)

- 224 网络技术

- 224.1 CDN

- 224.2 Nginx 代理服务

- 225 网络调试工具

- 225.1 网络调试命令

- [225.2 从原理到实战,全面总结 Android HTTPS 抓包](https://juejin.cn/post/7083761008321232933)

- 225.3 Postman

- 225.4 WireShark

- 230 操作系统

- 231 操作系统基础

- 232 操作系统启动过程

- 233 进程管理

- 234 内存管理

- 235 文件管理

- 236 IO 管理

- 237 进程间通信

- [操作系统 | 中断 & 系统调用浅析](https://juejin.cn/post/6894225735265206286)

- 240 数据结构与算法

- 241 基础数据结构

- 241.1 线性表

- [241.2 散列表:如何实现一个优秀的 HashTable 散列表?](https://juejin.cn/post/7163301919316934693)

- 241.3 队列

- 241.4 栈

- [214.5 什么是二叉树?](https://juejin.cn/post/7170767634445631525)

- [241.6 二叉树:二叉树高频题型汇总](https://juejin.cn/post/6917131822711341070)

- 242 高级数据结构

- [242.01 使用前缀和数组解决"区间和查询"问题](https://juejin.cn/post/7147962276534812685)

- [242.02 差分数组]

- [242.03 线段树(区间查询):面试被问到线段树,已经这么卷了吗?](https://juejin.cn/post/6984052900901158943)

- 242.04 树状数组(区间查询)

- 242.05 字典树

- [242.06 使用单调队列解决 “滑动窗口最大值” 问题](https://juejin.cn/post/7144939559489372168)

- [242.07 使用单调栈解决 “下一个更大元素” 问题](https://juejin.cn/post/7144769422882766885)

- [242.08 并查集(动态连通):如何使用并查集解决朋友圈问题?](https://juejin.cn/post/7143880364233064455)

- [242.09 二叉堆:微博 Top 10 热搜是怎么计算出来的?](https://juejin.cn/post/6904691545493274637)

- 242.10 图

- 242.11 布隆过滤器(大数据判存)

- 243 算法设计基础

- 243.01 复杂度分析

- [243.02 为什么你学不会递归?谈谈我的经验](https://juejin.cn/post/7145888770410151967)

- 243.03 分治算法

- 243.04 DFS、BFS

- [243.05 回溯算法:回溯算法解题框架](https://juejin.cn/post/6882928981268496398)

- 243.06 贪心算法

- 243.07 动态规划

- 244 算法应用

- [244.01 二分查找算法:下次面试遇到二分查找,别再写错了](https://juejin.cn/post/6933241413341708296)

- 244.02 排序算法

- 245 编程技巧

- 246 经典题目

- [246.01 高楼丢鸡蛋(动态规划)](https://juejin.cn/post/6938389793760313375)

- [246.02 计算器(逆波兰表达式)](https://juejin.cn/post/6938387752811495455)

- [246.03 链表](https://juejin.cn/post/6882370280946302983)

- [246.04 相交链表 & 环形链表](https://juejin.cn/post/6881580736428638215)

- 247 思维逻辑题

- [247.01 我知道你不知道,我到底知不知道](https://juejin.cn/post/6902829580013436942)

- [247.02 至少要几个砝码,可以称出 1g ~ 40g 重量](https://juejin.cn/post/6903460612886495245)

- [247.03 舞会上有多少顶黑帽?](https://juejin.cn/post/6903524335193948167)

- [247.04 25 匹马 5 条赛道,最快需要几轮求出前 3 名?](https://juejin.cn/post/6903861591188783112)

- 248 竞赛

- 250 数据库

- 260 设计模式

---
## 300 Flutter 开发

---
## 400 NDK 开发

- 410 C/C++ 基础

- 410.1 NDK 开发概述

- 410.2 C 语言基础

- 410.3 C/C++ 语言基础

- 410.4 C/C++ 编译过程

- [C 语言复习笔记](https://juejin.cn/post/6939477843088769032)

- [C++ 复习笔记](https://juejin.cn/post/6947657958419333151)

- 420 JNI 基础

- [420.1 JNI 基础:JNI 从入门到实践,万字爆肝详解!](https://juejin.cn/post/7125338583959306248)

- [420.2 注册 JNI 函数:说一下注册 JNI 函数的方式和时机](https://juejin.cn/post/7125021894562349092)

- [420.3 so 文件加载过程:说说 so 库从加载到卸载的全过程](https://juejin.cn/post/6892793299427491854)

- [420.4 System.getProperty(...) 获取系统属性](https://juejin.cn/post/6892294041632210957)

- 430 NDK 基础

- 430.1 NDK 编译基础:ndk-build & CMake

- 420.2 so 文件格式

- [420.3 NDK 案例 - 一键检索未适配 64 位架构的 so 文件](https://juejin.cn/post/7034201332500135966)

- 420.4 NDK 案例 - so 文件动态化

- 420.5 NDK 案例 - so 文件精简

- 420.6 NDK 案例 - Native 内存泄漏监控

- 440 音视频基础理论

- 440.1 视频基础理论

- 440.2 音频基础理论

- 440.3 H.264 视频压缩编码

- 440.4 音频压缩编码

- 440.5 FFMPEG 基础

- 440.6 OPENSL ES 基础

- [440.7 PNG 图片格式:PNG 除了无损压缩你还知道什么?](https://juejin.cn/post/6905635070397612039)

---
## 500 DevOps

- 510 Git 版本控制

- 520 CI/CD 持续集成

- [520.1 你的第一个 Jenkins 项目,从这里开始](https://juejin.cn/post/7077957170121146376)

- 530 开源

- [530.1 发布开源组件到 MavenCentral 仓库超详细攻略](https://juejin.cn/post/7135457823055413278)

---
## 600 后端

- [600.1 客户端同学应该理解的 ELK Stack 组件知识](https://juejin.cn/post/6947712552390361119)

---
## 700 项目实践

- 地图

- [WGS84、GCJ-02、BD-09都是什么鬼?](https://www.jianshu.com/p/559029832a67)

- 日志

- 数据

- [落地西瓜视频埋点方案,埋点从未如此简单](https://juejin.cn/post/7010797094151651365)

- IM 即时通信

- 账号体系

- 推送

- 社交分享

- 红包

- 设备

- [IMEI 弃用!收下这份保姆级的 OAID 集成教程](https://juejin.cn/post/7072741392178479140)

- 信息流

- [列表分页接口有哪些方案,你知道吗?](https://juejin.cn/post/7084996711998816292)

- 搜索

- 应用网关

- Hybird

- 深度链接

- [Android Deep Link 深度链接,看看你在第几层?](https://juejin.cn/post/7073731278612201509)

- 隐私

- [还在见招拆招?先看懂 APP 个人信息保护治理机制](https://juejin.cn/post/7078940840009302052)

---
## 800 产品 & 设计 & 市场 & 运营

---
## 900 软实力

- [一个菜鸟管理的学习和思考(一)](https://juejin.cn/post/7106065076313915405)

- [一个菜鸟管理的学习和思考(二)](https://juejin.cn/post/7106531274458103821)

- [明天 520,说说两性之间的那些事](https://juejin.cn/post/7099395743210815502)

- [自媒体 | 使用Markdown高效率编写文档](https://juejin.cn/post/6844903901548789773)

- [什么是原创?独立完成就是原创吗?](https://juejin.cn/post/7145112711796359205/)

## 思维导图

![](https://github.com/pengxurui/AndroidFamily/blob/master/images/AndroidFamily_2022_09_06.png)

## 小彭的其它开源项目

- [AndroidFamily](https://github.com/pengxurui/AndroidFamily) 【Android 面经 + Android 学习指南】一份帮助 Android 开发者知识积累与能力进阶的学习路线;🔥
- [AndroidPlatforms](https://github.com/pengxurui/AndroidPlatforms) 每个 Android 开发都要收藏的系统适配手册,带你全面体系化地解读 Android 系统更新;🔥
- [ModularEventBus](https://github.com/pengxurui/ModularEventBus) 一个 Android 事件总线框架,为你解决事件总线 “滥用” 问题;
- [EasyTrack](https://github.com/pengxurui/EasyTrack) 基于西瓜视频前端视图树埋点方案实现的埋点方案;
- [EasyPrivacy](https://github.com/pengxurui/EasyPrivacy) 一个帮助开发者快速解决整改问题的工具;
- [LeetCode-Kotlin](https://github.com/pengxurui/LeetCode-Kotlin) LeetCode 高频题解 - Kotlin 版本。

## Donate

如果本仓库对你有帮助,可以请小彭喝杯速溶咖啡。

![](https://github.com/pengxurui/AndroidFamily/blob/master/images/%E8%AF%B7%E5%B0%8F%E5%BD%AD%E5%96%9D%E6%9D%AF%E9%80%9F%E6%BA%B6%E5%92%96%E5%95%A1.png)

## License

Copyright [2022] [Peng Xurui]

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

[http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.