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知识体系相关推荐

  1. 安卓面试宝典,2021最新Android知识体系总结,面试资料分享

    现在的IT行业竞争压力越来越大,尤其是Android开发行业.而很多Android程序员却每天都在重复CRUD,原地徘徊! 今年年初,你就想改变现状,于是在网上刷了大量面试题,强行记下之后,开始参加面 ...

  2. 安卓软件前后端开发!2021最新Android知识体系总结,含泪整理面经

    不是安卓不行了,是你跟不上了 我的很多读者都在反馈说,现在一个岗位可以收到的简历数,是前几年的几倍.我们必须承认,僧多粥少就是 Android 行业的现状,别说初中级工程师,就是高级工程师也是一抓一大 ...

  3. Android程序员最大的悲哀是什么?,2021最新Android知识体系总结

    **③互操作性:**充分利用 JVM.Android 和浏览器的现有库. **④工具友好: **可用任何 Java IDE 或者使用命令行构建. 在 Kotlin 中要树立函数式编程思想.把函数理解为 ...

  4. 2021最新Android知识体系总结,实战篇

    本专栏专注分享大型Bat面试知识,后续会持续更新,喜欢的话麻烦点击一个关注 面试官: 组件化如何实现,组件化与插件化的差别在哪里,该怎么选型 心理分析:面试官从架构层次 了解求职者是否用过 模块化 组 ...

  5. 2021最新Android知识体系总结,小白也能看明白

    前言 Hi~,我是 2020 届物联网专业毕业生,现就读于杭州.谨以此文来记录我的秋招以及入门前端以来的学习历程,如有错误,希望大家能及时提出! 面试情况 前前后后一共面试了 14 家公司的前端岗,按 ...

  6. 专科出身,苦学Android,最终圆梦阿里,2021最新Android框架体系架构面试题

    如果没有这一段经历,那么我毕业之后将会正式成为一名流水线的螺丝工人.起初我对我未来是没有任何的想法的,和室友天天在寝室打游戏,晚上喝点酒,去酒吧玩一玩.这样的日子谁都想过,并且任何大学生都是有能力能够 ...

  7. 2021最新Android框架体系架构面试题-如何成为一个更好的Android开发者?送大厂面经一份!

    背景 本人双非渣本 今年由于疫情,上半年一直在家里.2月份本来无忧无虑,呆在家里不给国家添乱的时候,发现身边的同学找到了大厂的offer.心里开始有点慌张.本来想在3月份如果能回到学校,就开始考研之路 ...

  8. MySQL入门篇,2021最新Java知识体系总结

    一.数据库的操作 1.1显示数据库 1.2创建数据库 1.3使用数据库 1.4删除数据库 二.常用的数据类型 2.1数值类型 2.2字符串类型 2.3日期类型 三.表的操作 3.1查看表结构 3.2创 ...

  9. Android应用开发-小巫CSDN博客客户端之集成友盟社会化分享组件,2021最新Android框架体系架构面试题

    下面是详细的集成过程: 首先来到官网:http://www.umeng.com/ 选择社会化分享,进入查看这个产品的介绍,下载对应平台的SDK,笔者这里自然是选择Android平台: 笔者集成友盟社会 ...

最新文章

  1. 使用 openssl反弹加密 shell
  2. element ui 表单验证为正整数
  3. 图册图册图册图册图册图册
  4. 操作系统--用户级线程与内核级线程
  5. struts2整合uploadify插件怎样传参数
  6. Linux Shell文本处理工具集锦
  7. 直播丨 SQL大赛冠军怀晓明:深入解析Oracle存储过程中的性能瓶颈
  8. 使用QuickPart时应用自定义属性和Web Part Connection功能的演示视频
  9. UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xbd in position 198: illegal multibyte sequence
  10. Android布局--AbsoluteLayout
  11. MongoDB数据库读书笔记
  12. 为人处世之道,与君共勉!
  13. SSL双向验证--keytool实现自签名证书
  14. php根据日期判断星座if函数,js根据日期判断星座的代码
  15. 未名企鹅极客 | 医药流向的数据仓库建模
  16. 2021-2025年中国半导体硅片行业市场供需与战略研究报告
  17. Android中Settings.System的使用
  18. W: Possible missing firmware /lib/firmware/i915/kbl_guc_ver9_14.bin for module i915
  19. 地方麻将、棋牌手游的APP推广只差这项技术
  20. 人生第一篇博客,上班偷闲,来简单了解下springboot启动原理

热门文章

  1. 液晶LCD显示器为何收到市场的关注和认可?
  2. 针对以#开头,以;结尾的文档转中文的一些想法
  3. python识别花草_Python识别验证码的另一种花样玩法
  4. 2021-2027全球与中国交通运输复合材料市场现状及未来发展趋势
  5. Qt:libpng warning: iCCP: known incorrect sRGB profile
  6. 软件STM32cubeIDE下STM32F4xx使用32位定时器2(TIM2)用DMA+PWM点亮灯带WS2812-基础样例
  7. 纯 CSS 实现蜡烛融化(水滴)效果
  8. [树梅派专题笔记]树莓派忘记密码怎么办?
  9. MySQL使用存储过程批量插入数据
  10. QQrobot -- 基于Python的智能推送助手