Android技术体系汇总

2020-10-21  本文已影响0人  Android开发_Hua

        在平时工作的过程中,不断总结与完善自己的技术体系时,现在初步把android的开发技术体系分为9大技术模块,并大致列表出每个技术模块涉及到的知识点。

相关知识点汇总:(不断更新)

模块一:8大硬件模块

模块二:Android系统模块

模块三:网络通信模块

模块四:APK生成模块

模块五:应用程序构建模块

模块六:源码分析模块

模块七:内存模块

模块八:数据结构与算法模块

模块九:程序优化模块


模块一:8大硬件模块

硬件一:屏幕

1、沉浸式与SystemUi的设置(systemBarTint开源)

2、ActionBar与ToolBar

3、触摸机制(责任链模式,motionEvent类的实现,自定义手势)

4、绘制原理

5、9种动画效果

6、UI与渲染优化

7、屏幕适配方案、全面屏,曲面屏,刘海屏适配。

8、自定义ViewGroup与View(自定义控件的分类和实现思路)

9、ListView与RecyclerView区别(原理,使用,优化)

10、LinearLayout,RelativeLayout和Constrainlayout的区别与之间的关系

11、Webview控件详解(通信,内存泄露,安全性,优化,缓存)

12、Activity,window,View的关系

13、屏幕适配的演进

14、Android刷新机制

15、OpenGl Es

硬件二:电池

1、电量检查工具(battery-historian,Energy Profilter)

2、电量优化的方式

硬件三:摄像头(待扩展)

硬件四:CPU

1、线程的生命周期

2、Handler机制

3、分时调度机制与抢占式调度机制

4、CPU的硬件结构(寄存器,ALU计算元等)

5、ApplicationThread、ActivityThread、main()函数详解

6、开启线程的方式有哪些与区别(runnable,future,futureTask,Callable)

7、线程池详解(创建线程池常用函数,同步线程池,异步线程池,OI密集型,CPU密集型,混合密集型,JDK自带线程池)

8、AsyncTask的优缺点

9、CPU执行文件的生成(字节码,机器码,CPU执行指令,指令重排,分配时间片)

10、Android的7种CPU架构与so文件的适配

硬件五:内存(后面会涉及)

硬件六:GPU

1、GPU的硬件结构

2、View,SurfaceView,GlSerfaceView的区别(双缓存机制,硬件加速)

3、硬件加速的原理。(矩阵运算,浮点运算,ALU计算元)

4、Open GL ES相关知识点详解

硬件七:内部存储

1、data/data(Cache,SharePreference,DataBase,File),data/app,dalvik_cache,package文件夹/package.xml文件夹分别存放什么类型数据

2、SharePreference相关知识点详解(SPUtils,线程安全,读取原理,Commit与Apply,MMKV解决什么问题)

3、ASimplyCache,DiskLruCache,RxCache的实现(最近最少使用原理,缓存超时的原理)

4、数据库常见知识点(增,删,查,改,遍历,数据库优化,数据库操作原理,常见开源框架,是否线程安全,是否进程安全)

5、普通文件操作是否支持多线程操作

6、Apk分包处理与插件化技术实现

7、Apk安装完生成oat文件的原理

硬件八:外部存储

1、私有目录与公有目录的区别

2、磁盘缓存的实现

3、不同版本的系统对外部磁盘操作限制(Android 7.0的存储权限改变,版本适配)

4、Android中存储常见的类和接口详解(Environment)

模块二:Android系统模块

第一层:Linux内核层

1、Binder驱动(Binder通信的原理,Binder通信的四个角色,Binder通信衍生的问题:Intent传输数据最大值,Binder传输池溢出等)

2、各种系统驱动

3、Linux底层用户权限机制

4、SandBox机制详解

5、Android的多版本适配与不同版本的特性

6、Android系统源码分析

第二层:系统运行库层

1、JVM的基础知识(类加载器,类加载的过程,垃圾回收器,垃圾回收算法,判断一个对象是否存活,内存结构与内存模型,对象的创建、内存分配、内存寻址,动态分派和静态分派)

2、DVM的功能详解(DVM虚拟机的运作流程与核心机制,对象的生命周期管理,内存管理,线程调度机制,垃圾回收机制,安全与异常管理)

3、JVM,DVM,ART虚拟机的区别(垃圾回收机制方面,安装Apk方面,安装文件方面)

4、JIT与AOT技术的区别

5、系统的五种进程级别(前端进程,可见进程,服务进程,后端进程,空进程,不同进程的优先级判断)

6、进程之间的通信(信号,信号量,管道,消息队列,共享内存,socket,binder机制)

7、死锁(死锁的四个必要条件,死锁的预防,死锁的避免,解除死锁)

8、拉活与保活实现

9、进程隔离与内存映射(用户空间,内核空间,内存映射,数据的复制操作)

10、Android系统中使用的开源C,C++系统项目(相关的so库的使用与引入)

11、JNI与NDK实现(Native函数,加载so动态库)

12、Media Service Process系统进程

13、进程的组成部分(PID,UID,Sandbox)

14、多进程应用详解(AIDL,Binder,原理,使用场景,优缺点)

15、Android进程优先级ADJ算法

16、Native层相关的Crash处理

17、Navive层相关的内存泄露

第三层:应用程序框架层

1、Init进程、zygote进程、serviceManager进程、systemService进程(引导服务,核心服务,其他服务)

2、AMS系统服务详解

3、PMS系统服务详解

4、WMS系统服务详解

5、IMS系统服务详解(InputManagerService的使用)

6、Binder进程之间的通信详解

7、Zygote进程fork进程的原理与共享资源模块

8、Android包含哪些守护进程和核心系统进程,及他们的作用(LowMemorykiller,ApkInstaller等等)

第四层:应用程序层

1、系统应用与普通应用的权限区别

2、系统内置不可见应用(ApkInstaller)

3、应用的启动过程详解

4、应用的安装,更新,卸载详解

5、Activity的启动原理详解

模块三:网络通信模块

1、手机与外界的通信方式(2g,3g,4g,wifi,NFC,蓝牙)

2、HTTP与HTTPS的区别详解

3、HTTP的不同版本区别(1.0,1.1,SPDY,2.0,3.0(QUIC))

4、不同的网络请求框架的区别与使用(Android_sync_httpClient,Volley,okhttp,retrofit)

5、HttpClient,HttpUrlConnection,Okhttp的区别

6、网络七层模型相关的协议,通信数据类型,设备等(TCP,UDP,IP协议,ARP,RARP,TTL)

7、TCP/IP协议族的相关知识点(三次握手,四次挥手,流量控制,拥塞控制)

8、基于TCP的Socket通信与基于UDP的Socket通信。

9、DNS服务器作用(域名解析服务器)

10、NAT网关作用、路由器,交换机,网桥,网关的作用

11、网络数据类型与处理--文字(json,Xml)

12、网络数据类型与处理--图片(UIL,Picasso,Glide,fresco原理,区别和使用场景)

13、网络数据类型与处理--实时音视频流(实时视频播放原理与具体流程,ffmpeg,GYS,jiaoziVideo,播放器控件的实现,软解码与硬解码)

14、网络数据类型与处理--下载大文件(多线程下载的原理)

15、Cookie,SessionId,Token区别

16、IP协议详解(包含各个字段的作用,TTL的作用)

17、数据指纹,数据签名,数据证书

18、对称加密算法(RSA),非对称加密算法(AES,DES,3DES,CRC),数据校验算法(MD5,SHA1,SHA256),数据转换算法(Base64)

19、微服务网关的作用(统一接入,安全防护,流量控制,协议转换)

模块四:APK生成模块

1、Android Studio开发工具使用与相关核心功能使用(配置JDK,SDK,NDK,Android studio插件版本,Gradle版本)

2、Android build文件夹的生成原理

3、Apk包的生成原理(生成图绘制,AIDL,AAPT,javac,dx,apkbuilder,jarSigner,Ziplige等工具)

4、Apk包的签名(签名原理与使用脚本,v1,v2和v3签名的区别与改进)

5、ProGuard与AndResGuard混淆(不混淆的文件集合,混淆的过程,原理与生成文件)

6、加固原理(加固的原理与作用,常见加固平台,加固可能导致的问题,class.dex与so文件的加固)

7、多渠道APK的打包原理及配合开源框架实现(美团walle)

8、Build.gradle的项目配置详解与grovvy语言学习(Gradle相关文件作用,Gradle生命周期,Gradle核心技术详解)

9、面向切面编程的思想与使用实例(AOP)

10、面向切面编程三剑客在Android中的使用(APT,AspectJ,JavaAssisit,动态生成代码,动态代理,字节码生成技术)

11、Android编译时生成代码原理

12、Git常见指令的使用与Git在Android studio中图形化的使用

13、一个Android studio点击build生成Apk所做的事情(准备依赖包,合并资源和处理清单,编译,后期处理,包装和发布)

14、Android studio常用的插件介绍

15、JDK相关语法深入了解(try,catch,finally语法,静态代码块的执行,常用系统注释,抽象类与接口的区别)

16、应用程序项目的组成,包含四种配置文件和十种代码文件

17、Adb常见指令的使用

18、Gradle常见指令的使用

19、Charles工具的使用

20、SwitchHosts工具的使用

21、AndroidX与support依赖库的区别

22、Proguard文件相关语法实现(-keep相关语法)

模块五:应用程序构建模块

一:项目常见知识点

1、反射

2、Crash

3、ANR

4、异常

5、静态代理,动态代理与Hook技术

6、动态生成代码技术(apt实现)

二:常见编程思想

1、命名规范与注解

2、JAVA与Android阿里开发手册的建议

3、理解高内聚,低耦合,易复用思想

4、理解封装,继承,多态思想

5、熟悉23种设计模块(创建型5种,结构型7种,行为型11种),并能汇总出UML图,理解demo代码,主要解决什么问题及项目中的实例(包含JDK,SDK与开源项目)

6、理解面向对象的七大设计原则,并在代码中有意识的实现(开闭原则,里式替换原则,接口隔离原则,最少知道原则,单一职责原则,合成聚合原则,依赖导致原则)

三:四大组件及相关核心类解析

1、Activity相关知识点详解(生命周期,重要函数理解与使用,配置文件的设置,主要使用场景及功能)

2、Service相关知识点详解(原理,使用场景,重要函数等等)

3、BroadcaseReceiver相关知识点详解

4、ContentProvider相关知识点详解

5、Application相关知识点详解

6、Intent知识点详解

7、Fragment知识点详解

8、Context知识点详解

四:Android应用开发的演进

1、MVC,MVP,MVVM程序架构的演进(解耦,中介者模式,单元测试,优缺点)

2、模块化(根据功能区分)

3、插件化(宿主包与插件包,主要主要解决什么技术问题,技术的演进及相关开源项目)

4、组件化(优缺点,需要解决什么问题,相关开源框架介绍)

5、多进程(主要解决什么问题,应用场景与实例)

7、跨平台技术开发模式(优缺点,选择原因,使用场景)

8、Jetpack与AAC架构详解

模块六:源码分析模块

一:JDK与SDK相关源码分析

1、Handler源码解析

2、Asynctask源码解析

3、List与RecyclerView源码解析(原理,使用场景,对比,优化)

4、LinearLayout,RelativeLayout,ContrainLayout的比较

5、Binder源码解析

6、ViewPager与ViewPager2的区别

二:开源项目分析

性能检测工具开源项目

1、LeakCanacary

2、BlockedCanaery

程序整体架构设置开源项目

1、MVPArms

2、ArmComponent

3、MvvmHabit

4、MVVMComponent

三:项目常见技术开源项目

1、EventBus的使用与源码分析

2、ARouter的使用与源码分析

3、glide的使用与源码分析

4、RxJava相关开源框架

5、Retrofit的使用与源码分析

UI相关的开源项目:(不断更新)

1、Loadsir

2、BaseRecyclerViewAdapterHelper

3、ProgressTimerBar

4、FlowLayout

模块七:内存模块

多线程并发相关

1、Synchronized(Monitor enter,Monitor exit)

2、Lock

3、Atomic

4、Volatile

5、threadLocal

6、常见并发集合(HashTable,Vector,concurrentHashMap,Collections.sync)

7、Wait,Notify,NotifyAll

8、Join

9、Synchronized与Lock的区别

10、Synchronized与Volatile的区别

Java内存模式相关

1、HappenBefore

2、指令重排(内存的指令重排,JVM虚拟机的指令重排,编译器的指令重排)

3、As if serial

4、内存屏蔽

5、原子性,可见性,有序性

Java主内存相关:

1、主内存的分区(新生区,老年区,永久区,伊甸一区,伊甸二区)

2、四种引用方式及相关引用的作用(强,软,弱,虚)

3、垃圾回收算法(标记清除算法,标记整理算法,复制算法,分代收集算法)

4、垃圾回收器

5、判断一个对象是否存活(引用计数算法,可达性分析算法)

6、内存模型

7、内存对象三种属性(原子性、可见性、一致性)

8、内存泄漏

9、内存抖动

10、内存溢出

11、内存优化手段与场景

12、Object对象的主要方法有哪些与相关知识点(equal,hashcode,toString,clone,finally,wait,notify,notifyAll)

13、内存中对象主要存放的数据有哪些与作用(数组,堆,栈,队列树,图,链表,散列表,字符串,二进制)

14、一个JAVA对象的组成与对象头相关字段的含义(对象头,实例数据,填充区域)

15、创建对象的方式(new,clone,放射,反序列化)

16、内存结构(虚拟机栈,本地方法栈,程序计数器,方法区,静态常量池,堆)

模块八:数据结构与算法模块

1、Java中的三个常见集合Set,List,Map的主要区别

2、常见的八种数据结构:数组(ArrayList)、堆(Heap)、栈(stack)、队列(queue)、树(Tree)、图、链表(LinkedList)、散列表(HashMap),它们的使用场景有哪些,使用它的理由

3、数组相关:

3.1、无序数组与有序数组的八种排序算法,分别的时间复杂度、空间复杂度和稳定性

3.2、二分查找的的实现与时间复杂度

4、堆相关:

4.1、大顶堆与小顶堆的实现(学校重点班案例)

4.2、堆的形象图(treeNode)

4.3、TopK算法的实现(处理海量数据)

4.4、树的深度优先遍历(前序,中序,后序,递归)

4.5、树的广度优先遍历(递归实现)

5、栈相关:

5.1、堆的pop()、push()、peek()、min()方法的实现

5.2、堆的形象图

5.3、堆与链表的组合实现相关功能

6、队列详解:

6.1、队列的形象图(queueNode)

6.2、队列的pop()、push()、peek()的方法实现

7、树详解:

7.1、二叉树与多叉树的区别

7.2、红黑树与平衡二叉树的区别

7.3、哈夫曼树的作用(最小生成树,做数据压缩)

7.4、二叉搜索树

7.5、23树,234树,B,B+树的区别与使用场景

7.6、树的深度优先遍历(前序,中序,后序,递归)

7.7、树的广度优先遍历

8、图详解:

8.1、无向图

8.2、有向图

8.3、权重图

8.4、最小生成树算法

9、散列表详解:

9.1、HashMap的存储结构分析

9.2、SparseArray与ArrayMap的存储结构与好处

9.3、LinkedHashMap(lruCache)的作用与好处

9.4、HashTable的作用与好处

9.5、ConcurrentHashMap的作用与好处(锁分段技术)

9.6、Collection.synchronized()做线程同步

9.7、treeMap的作用与好处

10、相关学习网址与书籍

10.1、剑指offer

10.2、编程之美

10.3、编程珠玑

10.4、牛客网

10.5、leetcode

11、算法相关的小知识点汇总

12、常见算法相关概念

12.1、递归

12.1、动态规划

12.1、回溯算法

12.1、斐波那契数列

12.1、约瑟夫环

12.1、贪婪算法

12.1、分治法

模块九:程序优化模块

1、UI与界面渲染方面检测工具与优化

2、界面流畅性与卡顿方面的检测工具与优化

3、手机电量的检测工具与优化

4、CPU与代码执行效率的检测工具与优化

5、内存相关的检测工具与优化

6、Apk包体大小(apk瘦身)检测工具与优化

7、应用启动速度的检测工具与优化

8、网络通信相关的检测工具与优化

9、程序优化的三部曲:

步骤一:使用优化相关的检查工具,并能看懂相关的输出信息(logcat,图形等输出信息)。

步骤二:通过分析检查工具的输出信息,找出相关性能问题。

步骤三:针对相关的性能问题,对症下药,解决问题。

上一篇下一篇

猜你喜欢

热点阅读