前言
构建一个属于自己的知识体系,能够让我们学到的知识体系化。让自己清楚哪块是自己的知识盲区,哪块已经构建起根基。然后根据实际情况,有针对性的进行模块学习。让自己成为一个合格的Android工程师。
平时看博客或者学知识,学到的东西比较零散,没有独立的知识模块概念,而且学了之后很容易忘。于是我建立了一个自己的知识体系,将平时学到的东西都归类然后放里面,需要的时候呢也方便复习。过了段时间,我觉得这样还是不够好,于是我最近花了点时间,整理了一下Android中的常见知识,更清晰地认识自己的知识边界到底在哪里,哪些东西还不足。
此知识体系呢只是一个参考,大家可以根据自己的实际情况进行增删,然后进行查漏补缺,提升自己~
一、计算机基础
1.计算机网络
计算机网络概述
- 网络七层协议
- TCP/IP四层模型
- 底层协议
- 底层设备
应用层
- HTTP协议(⭐⭐⭐)
- DHCP协议(⭐⭐⭐)
- NAT
传输层(⭐⭐⭐)
- TCP协议
- UDP协议
网络层
- IP协议
- ICMP协议
2.操作系统(⭐⭐⭐)
操作系统基本功能
- 进程管理
- 作业管理/文件管理
- 存储管理/设备管理
Linux系统
- 内存管理
- 进程管理
- 文件系统
- 常见命令操作
补充
- 自旋锁/互斥锁/读写锁/条件变量/共享文件
- 消息队列/管道/信号量
- 操作系统的用户态与内核态
- 上下文切换成本
- 进程,线程与协程
二、Java基础(⭐⭐⭐)
1.集合原理
- ArrayList
- Vector
- Stack
- LinkedList
- HashMap
- Hashtable
- TreeMap
- LinkedHashMap
- HashSet
- TreeSet
- CopyOnWriteArrayList
- ConcurrentHashMap
- LinkedBlockingQueue
- SynchronousQueue
- SparseArray
- ArrayMap
2.其他
- 面向对象
- 设计模式
- 反射
- 泛型
- 注解
三、Java并发
1.线程基础
- 实现多线程
- 启动线程
- 停止线程
- 线程的6种状态
- 各种各样的锁
- 悲观锁和乐观锁
- 共享锁和独占锁
- 公平锁和非公平锁
- 可重入锁和非可重入锁
- 可中断锁和非可中断锁
- 自旋锁和非自旋锁
- 偏斜锁/轻量级锁/重量级锁
- JVM对synchronized锁的优化
- wait/notify/sleep/join等重要方法
- 守护线程,优先级等属性
- 线程安全
- Future获取运行结果
- Fork/Join模式
- CountDownLatch
- CyclicBarrier
- Semaphore
- Condition
- Phaser
- 重排序
- 原子性
- 内存可见性
- CAS原理
- AQS框架
2.其他
并发容器
- Vector/Hashtable
- ConcurrentHashMap
- CopyOnWriteArrayList
- 阻塞队列
- 非阻塞队列
- ConcurrentSkipListMap
atomic包,6种原子类
- 分类
- 原子类与锁
- 原子类与volatile
ThreadLocal
- 使用场景
- 原理
线程池
- 优点
- 参数
- 分类
- 执行任务流程
- 拒绝策略
- 正确关闭线程池
- 线程池复用原理
四、JVM虚拟机
- 内存区域
- 内存模型
- 内存分配回收策略
- Java对象的创建、内存布局和访问定位
- GC: 引用计数及可达性分析,垃圾回收算法,G1及ZGC
- 类加载机制
- 双亲委派模型
- 编译器优化: 方法内联,逃逸分析
- 虚拟机相关: HotSpot及JIT,Dalvik,ART及AOT
- JVM执行方法
- JVM实现反射
- JVM实现泛型
- JVM实现异常
- JVM实现注解
五、数据结构与算法
1.数据结构
- 栈
- 队列
- 数组
- 链表
- Hash表
- 二叉树
- 基础排序算法
- 字符串操作
2.算法
- 分治算法
- 动态规划
- 贪心算法
- 分支限界法
3.刷题
- CS-Notes剑指Offer题解
- CS-NotesLeetCode题解
- JsonChao高频题集
六、Android基础
1.核心知识点
四大组件
- Activity
- Service
- BroadcastReceiver
- ContentProvider
布局和控件
- RelativeLayout
- FrameLayout
- LinearLayout
- ConstraintLayout
- Button
- TextView
- RecyclerView
- ......
自定义View/ViewGroup
- onMeasure
- onLayout
- onDraw
- onTouchEvent
- dispatchTouchEvent
- 自定义属性
动画和手势
- View动画
- 属性动画
- layoutAnimation视图动画
- 手势检测(GestureDetector)
- 缩放手势检测(ScaleGestureDecetor)
网络
- 请求网络
- 解析数据
图片加载
- 本地图片
- 网络图片
- 压缩图片
- 多图列表
- DiskLruCache
Handler
- Looper
- Message
- MessageQueue
- 内存泄漏
- ThreadLocal
Android各版本新特性
- Android5.0
- Android6.0
- Android7.0
- Android8.0(O)
- Android9.0(P)
- Android10.0(Q)
- Android11.0(R)
其他
- adb常用命令
- 文件和数据库
- 异步线程池
- Resources
2.开源库使用
- Retrofit/OKhttp
- RxJava
- Glide
- 注解框架
- Jetpack
3.性能优化
快-流畅的体验
- 布局优化
- 绘制优化
- 内存优化
- 启动优化
- 其他
稳-稳定
- 避免内存泄露
- 避免崩溃
省-省电/流量
- 使用JobScheduler调度任务
- 使用懒惰法则
小-安装包小
- apk构成
- 包体优化
七、Android进阶
1.核心知识点
多进程
- Binder
- AIDL
- Messenger
Activity难点
- onSaveInstanceState()和onRestoreInstanceState()
- intent-filter匹配规则
- 生命周期
- 启动模式
- Activity启动过程
- App启动过程
Service难点
- startService流程
- bindService流程
BroadcastReceiver难点
- 注册/发送/接收工作原理
ContentProvider难点
- ContentProvider启动过程
其他
- View绘制
- 事件分发
- 消息队列
- AsyncTask原理
- RemoteViews
- Window和ViewRootImpl
2.开源库原理
- OkHttp
- Retrofit
- RxJava
- Glide
- LeakCanary
- GreenDao
- ARouter
3.Gradle
- 编译
- 混淆
- 签名
- Groovy
- Gradle构建流程
- GradlePlugin
- Gradle构建优化
- App构建过程
- 差异化打包
4.初级架构
- 设计模式
- MVC,MVP,MVVM
5.JNI
- JNI基础
- NDK基础
6.动态化
前置知识
- Android打包流程
- Java字节码
- GradlePlugin
- TransformAPI
- ASM
热修复:nuwa&Tinker
- 经典-64k问题
- dex分包
- MultiDex优化
- findClass原理
- QQ空间热补丁方案
- Nuwa应用层实现
- NuwaGradle
插件化:VirtualAPK
- 加载类
- 资源访问
- 生命周期管理
7.编译插桩
- AOP
- ASM
8.Framework
系统服务
- Zygote启动
- Android系统启动
- ServiceManager启动及工作原理
应用进程
- 启动流程
- 启用Binder机制
- Application初始化流程
- Context
UI体系
- 显示原理
- UI线程启动
- 屏幕刷新机制
- surface
- vsync
进程通信
- Binder
- IPC通信流程
- Binder对象跨进程传递
- OneWay机制
线程通信
- 消息队列
- 消息传递机制
- Handler消息延迟实现
- IdleHandler原理
- 消息屏障
- ThreadLocal原理
其他
- 跨进程传递大图片
- 四大组件启动原理
八、领域专家
1.性能优化方向
- 稳定性优化
- 启动速度优化
- 绘制优化
- 内存优化
- 包体积优化
- 网络优化
- IO优化
- 存储优化
- 耗电优化
2.基础架构方向
- Android工程实践
- Gradle自动化构建
- 编译插桩技术
- Android架构
- Android热修复
- Android插件化
- Android核心源码
3.NDK、音视频
- C
- C
- JNI基础
- 编译原理与语法基础
- Linux基础
- 热修复
- Gif图实现
- 音视频基础
- ffmpeg
- WebRTC
- opengl
- vulkan
- opencv
九、其他Android相关
1.Kotlin(⭐⭐)
基础部分
- 内置类型
- 类型初步
- 表达算式
- 函数进阶
- 类型进阶
高级部分
- 泛型
- 反射
- 注解
- 协程
关于程序员系统学习
我们都很渺小,在宇宙中甚至比不上一颗尘埃,可是人为何称之为人,就是因为人懂得思考,知道学习的重要性。并且随时愿意改变自己,重新出发。我们一生都在忙忙碌碌,为自己而活的时间太少太少,努力奔跑不仅仅是为了活着,更多的是实现我们自己的理想与报复。存在即为意义,我希望大家能跟我一样坚持,你不知道下一个黄金浪潮在哪里,但是只要你在里面,总会赶上的啊!下一个Android辉煌的时刻可能就在明天呢?
目前我们要做的就是选好自己细分领域深入研究,对基础原理性内容深入理解,尽快向高级水平靠近并达到。当然也要了解新技术,拥有开放的心态去学习一些新技术,不要一开始出来一个新技术就转入学习,这样会导致啥都会一点啥都不会,当然新技术是有一个发展过程的,不会立马流行和大量应用等它稍微成熟点。
这样你会少踩很多坑,也不要排斥它,完全不去理会和了解学习,正确的方式是简单了解这个技术产生是为了解决什么问题,有什么优缺点已经目前发展成熟度和应用范围,我们还是要多抓住技术的本质和基础,这样出现了新技术学起来也会很轻松,当然机会合适了再去学习它。 所以,找准自己的定位及细分领域。
多余的话就不讲了,接下来将分享面试的一个复习路线,如果你也在准备面试但是不知道怎么高效复习,可以参考一下我的复习路线,有任何问题也欢迎一起互相交流,加油吧!
首先是超级详细得不能再详细的Android开发学习思维导图。
接下来就需要梳理知识,提升储备了!(Android移动架构师七大专题学习资源)
- 架构师筑基必备技能:深入Java泛型 注解深入浅出 并发编程 数据传输与序列化 Java虚拟机原理 反射与类加载 动态代理 高效IO
- Android高级UI与FrameWork源码:高级UI晋升 Framework内核解析 Android组件内核 数据持久化
- 360°全方面性能调优:设计思想与代码质量优化 程序性能优化 开发效率优化
- 解读开源框架设计思想:热修复设计 插件化框架解读 组件化框架设计 图片加载框架 网络访问框架设计 RXJava响应式编程框架设计 IOC架构设计 Android架构组件Jetpack
- NDK模块开发:NDK基础知识体系 底层图片处理 音视频开发
- 微信小程序:小程序介绍 UI开发 API操作 微信对接
- Hybrid 开发与Flutter:Html5项目实战 Flutter进阶
知识梳理完之后,就需要进行查漏补缺,所以针对这些知识点,我手头上也准备了不少的电子书和笔记,这些笔记将各个知识点进行了完美的总结。
然后再是通过源码来系统性地学习
只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。
真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。
刷大厂面试题备战,增加大厂通过率
历时半年,整理了这份市面上最全面的安卓面试题解析大全。
1.可以通过目录索引直接翻看需要的知识点,查漏补缺。 2.五角星数表示面试问到的频率,代表重要推荐指数
以上内容均免费分享给大家,需要完整版的朋友,点这里可以看到全部内容。