编程人 cdmana.com

工作出现瓶颈,学习效率下降?通学这份Android进阶知识体系,从入门到高级只是时间问题!

 

前言

工作一段时间一般都会出现一个瓶颈,这个时候学习的效率就会大打折扣,如果找不到好的方式,花的时间就会很长,然而进步的空间却很小。那么好的方式是什么呢?答案就是知识体系的思维导图

构建自己的知识体系尤为重要,每个人都应该构建自己的知识体系,那么如何构建自己的知识体系呢?对于我来说,我是做 Android 开发的,从毕业到现在,大概六年多的时间,小公司呆过,大公司也呆过,自己独立开发过产品,同时也跟大团队一起开发过。因此基本上能经历的都会经历过,在这几年的开发时间里,我基本都会有学习总结的习惯,有的是工作上用到的,有的是平常想到的 idea ,我都会总结下来,然后抽空整理一下,写成博客。

这几天一直在准备构成大纲,前天后后大概花了四天时间来完成大纲思维导图。今天我就将它分享出来,欢迎大伙一起学习。

总纲

计算基础

  • 数据结构与算法
  • 操作系统
  • 计算机网络
  • 组成原理

编程语言

  • Java
  • ReactNative
  • Flutter

Android学习

  • 基础入门
  • 进阶
  • 高级
  • 推荐书籍

面试总结

学习思维大纲主要由以上几大部分组成,基础部分,语言部分,还有其他方面的内容,不管工作还是生活都会涉及到,由于我是做 Android 开发的,因此主要会涉及 Android 开发的内容。接下来,我们就依次展开各个部分的详细大纲进行描述:

计算机基础

在计算机基础部分中,最重要的当然属于数据结构与算法,这部分在我们实际的工作中,用到的比较多,因此本公众号会着重总结所用到的各种数据结构以及算法。

数据结构

复杂度分析

  • 时间复杂度
  • 空间复杂度

线性表

  • 数组
  • 链表
    • 单链表
    • 双向链表
    • 循环链表
    • 静态链表
  • 队列
    • 顺序存储
    • 链式存储
    • 顺序栈
    • 链式栈

散列表

  • 散列函数
  • 冲突解决

  • 二叉树
    • 平衡二叉树
    • 二叉查找树
    • 平衡二叉树(AVL树,红黑树)
  • 多路查找树
    • B树
    • B+树
    • 2-3树
    • 2-3-4树
    • 小顶堆
    • 大顶堆
    • 二项堆
    • 裴波那契堆
  • 遍历
    • 深度优先
    • 官渡优先

  • 存储
    • 邻接矩阵
    • 邻接表
    • 十字链表
  • 最小生成树
  • 遍历
  • 最短路径
  • 拓扑排序

算法

基本算法思想

  • 贪心算法
  • 分治算法
  • 动态规划
  • 回溯算法
  • 枚举算法

排序

  • O(n^2)
    • 冒泡排序
    • 插入排序
    • 选择排序
    • 希尔排序

查找

  • 线性表查找
  • 散列表查找
  • 树结构查找
  • 图查找

搜索

  • 广度优先
  • 深度优先

字串符

  • 存储
  • 模式匹配

编程语言

由于 Android 开发主要使用 Java 语言,因此对于 Java 的学习显得尤为重要,因此本公众号也会着重学习 Java 各方面的知识点,对于 Android 开发,Google 目前也主推 kotlin ,因此也会涉及到 kotlin 相关的内容。对于跨平台开发的内容,RN 和 Flutter 我们也会涉及到的。

基础

  • JDK/JRE区别
  • 数据类型
  • 自动装包拆包
  • 重载和重写区别
  • 接口
  • 多态
  • 继承
  • 内部类

高阶

集合框架

  • Collection
    • List(ArrayLlst,LinkedList,Vector)
    • set(Treeset,HashSet)
  • Map
    • HahsMap
    • HashTable
    • TreeMap
    • ArrayMap
  • 多线程容器
    • CopyonwrteArrayLlst
    • ConCurrencyHashMap

多线程/井发锁

  • 生命周期
  • 启动方式
  • 线程安全/锁
  • 线程池

进程/通信方式

  • Socket
  • 消息队列
  • 管道
  • 内存共享
  • AIDL
  • 信号量

反射
泛型
动态代理

垃圾回收和GC

  • 分代回收
  • 回收算法
  • 垃圾回收机制
  • 可达性分析
  • 引用类型

JVM虚拟机

  • classLoader
  • JVM内存模型
  • GC回收机制

注解

Android

接下来就是我们的重头戏 Android 部分的知识点,Android 部分的知识点多而且杂,因此做一个学习大纲很重要,将重要的知识点都以大纲的形式列出来,这对于我们学习 Android 开发帮助很大。

入门

Androld studio安装及插件使用

  • 安装
  • 常用插件
    • GsonFormat
    • Android Parcelable code generator
    • Lifecycle sorter
    • Adb WIFI
    • ECTranslation

四大组件

  • Actlvity
    • Activty启动过程
    • 启动模式
    • 生命周期
    • taskAtfinity
    • intent
    • onNewIntent
  • Service
    • startService
    • bindService
    • IntentService
  • ContentProvider
  • BroadCaseReceiver
    • 注册方式(动态,静态)
    • 传递方式(有序,无序)
    • 事件种类(自定义,系统)
    • 范围(全局,本地)

组件持有的Context和Appllcation区别

fragment

  • 懒加载
  • 与Activity/fragment通信

view的基础知识

  • 工作原理
    • onMeasure
    • onDraw(palnt,Bltmap,Canvas,Matrix,PorterDuftXtermode)
    • onL ayout
  • 基础
    • 查看工具(GestureDetector,VelootyTracker,VlewConfiguration)
    • 监听(onTouch,onTouchEvent,onCllck,执行顺序)
  • 滑动
    • 事件分发(dispatchTouchEvent,onInterceptTouchEvent,onTouchEvent)
    • 滑动冲突解决

常用控件/布局

  • Recyclerview
  • SupportLibrary
    • v4
    • v7
    • v11
  • Webview
    • JSBridge
    • Deeplink
    • 首屏加速
    • 内存泄漏
  • Surfaceview
  • Dialog
  • SnackBar
  • Notitication
  • ActlonBar
  • 约束布局

基础动画

  • 属性动画
  • 帧动画
  • Animation补问动画
  • MaterialDesign动画

MaterialDesign

  • 状态栏/导航栏/沉漫式设计

资源

  • 单位
  • theme
  • Layout
  • Drawable
    • .9patchEH
    • Shape(gradient,size,stroke,padding,corners)
    • selector
  • 适配

进阶

进程/线程/事件

  • 线程通信
    • Handler
    • Timer/TimerTask
    • Thread/ThreadPoolExcutor
    • AsyncTask
    • IntentServlce
  • 进程
    • 优先级(可见进程,服务进程,后台进程,空进程,前台进程)
    • 进程间通信(Messager,AIDL,BInder,序列化,匿名共享内存)
  • 事件
    • 事件总线
  • 应用保活
    • 白色保活
    • 黑色保活
    • 灰色保活

数据持久化

  • 本地存储
    • Sqlite
    • sharedPreterence
    • 文件
  • 数据格式
    • Json
    • xml
  • 跨进程
    • Serlalzable
    • Parcelable

性能优化

  • 内存优化
  • 电量优化
  • 数据传输优化
  • 网络优化
  • 缓存优化
  • 其他优化(启动时间优化,布局优化,apk大小优化)

架构设计

  • MVP
  • MVC
  • MVVM
  • Androld Architecture Components
  • Androld Jetpack

开源框架

  • ORM数据库框架/GreenDao
  • 图片缓存框架/Glide/Fresco/UlL/picasso
  • 文件框架
  • 网络框架/RetrofitlVolley/OKhttp
  • 注入依赖/ButterKnite/Dagger2
  • 序列化(gson/tastjson)
  • 路由ARouter
  • Rxjava
  • 事件总銭EventBus

高级

Framework层源码

  • UI组件
    • 四大组件
    • fragment
    • context/application
    • window
    • webvlew
    • recyclervlew
  • 系统服务
    • ActlvityManagerService
    • Window/WIndowManager
    • WindowManagerService
    • ServlceManager
  • 流程
    • Androld系统启动流程
    • 应用启动流程
    • apk安装过程
    • apk打包过程
  • Androld系统
    • 内存管理机制
    • 任务管理机制
    • 消息通信机制
    • 安全机制

逆向安全

  • root原理
  • small字节码
  • dex
  • 加固和反加固
  • hook
  • ndk
  • 混渐
  • 签名

虚拟机

  • Dalvlk虚拟机
  • ART虚拟机

热门技术

  • 插件话原理
  • 组件化原理
  • 热修复原理

 

结尾

对于其他部分的内容,我将准备部分涉及到,作为平常学习的润滑剂,主要的还是上面的三大部分,如果能将上面三大部分通学一遍,从入门到高级应该只是时间的问题。接来下的文章我们会分篇将对以上部分的大纲进行详细的记录学习总结。

关于程序员系统学习

我们都很渺小,在宇宙中甚至比不上一颗尘埃,可是人为何称之为人,就是因为人懂得思考,知道学习的重要性。并且随时愿意改变自己,重新出发。我们一生都在忙忙碌碌,为自己而活的时间太少太少,努力奔跑不仅仅是为了活着,更多的是实现我们自己的理想与报复。存在即为意义,我希望大家能跟我一样坚持,你不知道下一个黄金浪潮在哪里,但是只要你在里面,总会赶上的啊!下一个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文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。

 

《486页超全面Android开发相关源码精编解析》

刷大厂面试题备战,增加大厂通过率

历时半年,整理了这份市面上最全面的安卓面试题解析大全。

1.可以通过目录索引直接翻看需要的知识点,查漏补缺。
2.五角星数表示面试问到的频率,代表重要推荐指数

 

《379页Android开发面试宝典》

以上内容均免费分享给大家,需要完整版的朋友,点这里可以看到全部内容

最后还有耗时一年多整理的一系列Android学习资源:Android源码解析、Android第三方库源码笔记、Android进阶架构师七大专题学习、历年BAT面试题解析包、Android大佬学习笔记等等,这些内容均免费分享给大家,需要完整版的朋友,点这里可以看到全部内容

Scroll to Top