2021 最新Android知识体系
0. 背景
构建一个属于自己的知识体系,能够让我们学到的知识体系化.让自己清楚哪块是自己的知识盲区,哪块已经构建起根基.然后根据实际情况,有针对性的进行模块学习.让自己成为一个合格的Android工程师.
平时看博客或者学知识,学到的东西比较零散,没有独立的知识模块概念,而且学了之后很容易忘.于是我建立了一个自己的笔记仓库 (一个我长期维护的笔记仓库,感兴趣的可以点个star~你的star是我写作的巨大大大大的动力),将平时学到的东西都归类然后放里面,需要的时候呢也方便复习.过了段时间,我觉得这样还是不够好,于是我最近花了点时间,整理了一下Android中的常见知识,画了一张思维导图.更清晰地认识自己的知识边界到底在哪里,哪些东西还不足.
此知识体系呢只是一个参考,大家可以根据自己的实际情况进行增删(先将笔记保存到幕布,然后就可以进行修改了).然后进行查漏补缺,提升自己~
1. 计算机基础
1.1 计算机网络
1.1.1 计算机网络概述
网络七层协议
TCP/IP四层模型
底层协议
底层设备
1.1.2 应用层
HTTP协议(⭐⭐⭐)
DHCP协议(⭐⭐⭐)
NAT
1.1.3 传输层(⭐⭐⭐)
TCP协议
UDP协议
1.1.4 网络层
IP协议
ICMP协议
1.2 操作系统(⭐⭐⭐)
1.2.1 操作系统基本功能
进程管理
作业管理/文件管理
存储管理/设备管理
1.2.2 Linux系统
内存管理
进程管理
文件系统
常见命令操作
1.2.3 补充
自旋锁/互斥锁/读写锁/条件变量/共享文件
消息队列/管道/信号量
操作系统的用户态与内核态
上下文切换成本
进程,线程与协程
2. Java基础(⭐⭐⭐)
2.1 集合原理
ArrayList
Vector
Stack
LinkedList
HashMap
Hashtable
TreeMap
LinkedHashMap
HashSet
TreeSet
CopyOnWriteArrayList
ConcurrentHashMap
LinkedBlockingQueue
SynchronousQueue
SparseArray
ArrayMap
2.2 其他
面向对象
设计模式
反射
泛型
注解
3. Java并发
3.1 线程基础
实现多线程
启动线程
停止线程
线程的6种状态
各种各样的锁
悲观锁和乐观锁
共享锁和独占锁
公平锁和非公平锁
可重入锁和非可重入锁
可中断锁和非可中断锁
自旋锁和非自旋锁
偏斜锁/轻量级锁/重量级锁
JVM对synchronized锁的优化
wait/notify/sleep/join等重要方法
守护线程,优先级等属性
线程安全
Future获取运行结果
Fork/Join模式
CountDownLatch
CyclicBarrier
Semaphore
Condition
Phaser
重排序
原子性
内存可见性
CAS原理
AQS框架
3.2 其他
3.2.1 并发容器
Vector/Hashtable
ConcurrentHashMap
CopyOnWriteArrayList
阻塞队列
非阻塞队列
ConcurrentSkipListMap
3.2.2 atomic包,6种原子类
分类
原子类与锁
原子类与volatile
3.2.3 ThreadLocal
使用场景
原理
3.3.4 线程池
优点
参数
分类
执行任务流程
拒绝策略
正确关闭线程池
线程池复用原理
4. JVM虚拟机
内存区域
内存模型
内存分配回收策略
Java对象的创建、内存布局和访问定位
GC: 引用计数及可达性分析,垃圾回收算法,G1及ZGC
类加载机制
双亲委派模型
编译器优化: 方法内联,逃逸分析
虚拟机相关: HotSpot及JIT,Dalvik,ART及AOT
JVM执行方法
JVM实现反射
JVM实现泛型
JVM实现异常
JVM实现注解
5. 数据结构与算法
5.1 数据结构
栈
队列
数组
链表
Hash表
二叉树
基础排序算法
字符串操作
5.2 算法
分治算法
动态规划
贪心算法
分支限界法
5.3 刷题
CS-Notes剑指Offer题解
CS-NotesLeetCode题解
JsonChao高频题集
6. Android基础
6.1 核心知识点
6.1.1 四大组件
Activity
Service
BroadcastReceiver
ContentProvider
6.1.2 布局和控件
RelativeLayout
FrameLayout
LinearLayout
ConstraintLayout
Button
TextView
RecyclerView
......
6.1.3 自定义View/ViewGroup
onMeasure
onLayout
onDraw
onTouchEvent
dispatchTouchEvent
自定义属性
6.1.4 动画和手势
View动画
属性动画
layoutAnimation视图动画
手势检测(GestureDetector)
缩放手势检测(ScaleGestureDecetor)
6.1.5 网络
请求网络
解析数据
6.1.6 图片加载
本地图片
网络图片
压缩图片
多图列表
DiskLruCache
6.1.7 Handler
Looper
Message
MessageQueue
内存泄漏
ThreadLocal
6.1.8 Android各版本新特性
Android5.0
Android6.0
Android7.0
Android8.0(O)
Android9.0(P)
Android10.0(Q)
Android11.0(R)
6.1.9 其他
adb常用命令
文件和数据库
异步线程池
Resources
6.2 开源库使用
Retrofit/OKhttp
RxJava
Glide
注解框架
Jetpack
6.3 性能优化
6.3.1 快-流畅的体验
布局优化
绘制优化
内存优化
启动优化
其他
6.3.2 稳-稳定
避免内存泄露
避免崩溃
6.3.3 省-省电/流量
使用JobScheduler调度任务
使用懒惰法则
6.3.4 小-安装包小
apk构成
包体优化
7. Android进阶
7.1 核心知识点
7.1.1 多进程
Binder
AIDL
Messenger
7.1.2 Activity难点
onSaveInstanceState()和onRestoreInstanceState()
intent-filter匹配规则
生命周期
启动模式
Activity启动过程
App启动过程
7.1.3 Service难点
startService流程
bindService流程
7.1.4 BroadcastReceiver难点
注册/发送/接收工作原理
7.1.5 ContentProvider难点
ContentProvider启动过程
7.1.6
View绘制
事件分发
消息队列
AsyncTask原理
RemoteViews
Window和ViewRootImpl
7.2 开源库原理
OkHttp
Retrofit
RxJava
Glide
LeakCanary
GreenDao
ARouter
7.3 Gradle
编译
混淆
签名
Groovy
Gradle构建流程
GradlePlugin
Gradle构建优化
App构建过程
差异化打包
7.4 初级架构
设计模式
MVC,MVP,MVVM
7.5 JNI
JNI基础
NDK基础
7.6 动态化
7.6.1 前置知识
Android打包流程
Java字节码
GradlePlugin
TransformAPI
ASM
7.6.2 热修复:nuwa&Tinker
经典-64k问题
dex分包
MultiDex优化
findClass原理
QQ空间热补丁方案
Nuwa应用层实现
NuwaGradle
7.6.3 插件化:VirtualAPK
加载类
资源访问
生命周期管理
7.7 编译插桩
AOP
ASM
7.8 Framework
7.8.1 系统服务
Zygote启动
Android系统启动
ServiceManager启动及工作原理
7.8.2 应用进程
启动流程
启用Binder机制
Application初始化流程
Context
7.8.3 UI体系
显示原理
UI线程启动
屏幕刷新机制
surface
vsync
7.8.4 进程通信
Binder
IPC通信流程
Binder对象跨进程传递
OneWay机制
7.8.5 线程通信
消息队列
消息传递机制
Handler消息延迟实现
IdleHandler原理
消息屏障
ThreadLocal原理
7.8.6 其他
跨进程传递大图片
四大组件启动原理
8. 领域专家
8.1 性能优化方向
稳定性优化
启动速度优化
绘制优化
内存优化
包体积优化
网络优化
IO优化
存储优化
耗电优化
8.2 基础架构方向
Android工程实践
Gradle自动化构建
编译插桩技术
Android架构
Android热修复
Android插件化
Android核心源码
8.3 NDK、音视频
C
C++
JNI基础
编译原理与语法基础
Linux基础
热修复
Gif图实现
音视频基础
ffmpeg
WebRTC
opengl
vulkan
opencv
8.4 大前端
8.4.1 前端基础
HTML
CSS
JavaScript
8.4.2 Flutter(⭐⭐)
Dart入门
Flutter入门
开发
工程管理
线上运维
发布
测试调试
8.4.3 其他
ReactNative
小程序
性能优化
9. 其他Android相关
9.1 Koltin(⭐⭐)
9.1.1 基础部分
内置类型
类型初步
表达算式
函数进阶
类型进阶
9.1.2 高级部分
泛型
反射
注解
协程
9.2 Python(⭐)
基础
函数
高级特性
函数式编程
模块
面向对象编程
错误,调试,测试
IO编程
进程和线程常用内建模块
常用第三方模块
网络编程
数据库
异步IO
写了个python脚本,将幕布思维导图转成markdown并标上序号. 有兴趣的可以在这里看源码https://github.com/xfhy/x-toolset/blob/main/lib/addNumber.py
作者:潇风寒月
链接:https://juejin.cn/post/6919037176038555662
关注我获取更多知识或者投稿
2021 最新Android知识体系相关推荐
- 安卓面试宝典,2021最新Android知识体系总结,面试资料分享
现在的IT行业竞争压力越来越大,尤其是Android开发行业.而很多Android程序员却每天都在重复CRUD,原地徘徊! 今年年初,你就想改变现状,于是在网上刷了大量面试题,强行记下之后,开始参加面 ...
- 安卓软件前后端开发!2021最新Android知识体系总结,含泪整理面经
不是安卓不行了,是你跟不上了 我的很多读者都在反馈说,现在一个岗位可以收到的简历数,是前几年的几倍.我们必须承认,僧多粥少就是 Android 行业的现状,别说初中级工程师,就是高级工程师也是一抓一大 ...
- Android程序员最大的悲哀是什么?,2021最新Android知识体系总结
**③互操作性:**充分利用 JVM.Android 和浏览器的现有库. **④工具友好: **可用任何 Java IDE 或者使用命令行构建. 在 Kotlin 中要树立函数式编程思想.把函数理解为 ...
- 2021最新Android知识体系总结,实战篇
本专栏专注分享大型Bat面试知识,后续会持续更新,喜欢的话麻烦点击一个关注 面试官: 组件化如何实现,组件化与插件化的差别在哪里,该怎么选型 心理分析:面试官从架构层次 了解求职者是否用过 模块化 组 ...
- 2021最新Android知识体系总结,小白也能看明白
前言 Hi~,我是 2020 届物联网专业毕业生,现就读于杭州.谨以此文来记录我的秋招以及入门前端以来的学习历程,如有错误,希望大家能及时提出! 面试情况 前前后后一共面试了 14 家公司的前端岗,按 ...
- 专科出身,苦学Android,最终圆梦阿里,2021最新Android框架体系架构面试题
如果没有这一段经历,那么我毕业之后将会正式成为一名流水线的螺丝工人.起初我对我未来是没有任何的想法的,和室友天天在寝室打游戏,晚上喝点酒,去酒吧玩一玩.这样的日子谁都想过,并且任何大学生都是有能力能够 ...
- 2021最新Android框架体系架构面试题-如何成为一个更好的Android开发者?送大厂面经一份!
背景 本人双非渣本 今年由于疫情,上半年一直在家里.2月份本来无忧无虑,呆在家里不给国家添乱的时候,发现身边的同学找到了大厂的offer.心里开始有点慌张.本来想在3月份如果能回到学校,就开始考研之路 ...
- MySQL入门篇,2021最新Java知识体系总结
一.数据库的操作 1.1显示数据库 1.2创建数据库 1.3使用数据库 1.4删除数据库 二.常用的数据类型 2.1数值类型 2.2字符串类型 2.3日期类型 三.表的操作 3.1查看表结构 3.2创 ...
- Android应用开发-小巫CSDN博客客户端之集成友盟社会化分享组件,2021最新Android框架体系架构面试题
下面是详细的集成过程: 首先来到官网:http://www.umeng.com/ 选择社会化分享,进入查看这个产品的介绍,下载对应平台的SDK,笔者这里自然是选择Android平台: 笔者集成友盟社会 ...
最新文章
- 使用 openssl反弹加密 shell
- element ui 表单验证为正整数
- 图册图册图册图册图册图册
- 操作系统--用户级线程与内核级线程
- struts2整合uploadify插件怎样传参数
- Linux Shell文本处理工具集锦
- 直播丨 SQL大赛冠军怀晓明:深入解析Oracle存储过程中的性能瓶颈
- 使用QuickPart时应用自定义属性和Web Part Connection功能的演示视频
- UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xbd in position 198: illegal multibyte sequence
- Android布局--AbsoluteLayout
- MongoDB数据库读书笔记
- 为人处世之道,与君共勉!
- SSL双向验证--keytool实现自签名证书
- php根据日期判断星座if函数,js根据日期判断星座的代码
- 未名企鹅极客 | 医药流向的数据仓库建模
- 2021-2025年中国半导体硅片行业市场供需与战略研究报告
- Android中Settings.System的使用
- W: Possible missing firmware /lib/firmware/i915/kbl_guc_ver9_14.bin for module i915
- 地方麻将、棋牌手游的APP推广只差这项技术
- 人生第一篇博客,上班偷闲,来简单了解下springboot启动原理
热门文章
- 液晶LCD显示器为何收到市场的关注和认可?
- 针对以#开头,以;结尾的文档转中文的一些想法
- python识别花草_Python识别验证码的另一种花样玩法
- 2021-2027全球与中国交通运输复合材料市场现状及未来发展趋势
- Qt:libpng warning: iCCP: known incorrect sRGB profile
- 软件STM32cubeIDE下STM32F4xx使用32位定时器2(TIM2)用DMA+PWM点亮灯带WS2812-基础样例
- 纯 CSS 实现蜡烛融化(水滴)效果
- [树梅派专题笔记]树莓派忘记密码怎么办?
- MySQL使用存储过程批量插入数据
- QQrobot -- 基于Python的智能推送助手