最近自己再找安卓系统方面的工作,所以安卓系统整体的知识点进行了整理,内容点涉及的比较多。可以选择自己不熟的层来看跟学习,如果小伙伴还有补充或者自己遇到的题,欢迎留言。
系统应用层:
四大组件:
一. Activity
二. Service
三. ContentProvider
四. BroadCast Receiver
安卓Context:谈谈关于context的理解?
1.定义是什么?。2.能做什么?。3.继承关系,4.实现类时什么?5.问题(OOM)?
Context都没弄明白,还怎么做Android开发? - 简书
Intent:谈谈对intent的理解?
1.intent定义?。2.intent的常用属性?。3.常见应用。
Android组件系列----Intent详解 - 千古壹号 - 博客园
Handler机制:
1.画框架图。2.用在哪里?。3.分析各个类的作用。4.注意项(阻塞,target和when)。
安卓Handler机制:深入理解Looper,Handler,Message,Messge Queue内部原理_不忘初心-CSDN博客
AsyncTask和Handler+Thread机制的区别?
Android中的异步:Handler+Thread 跟AsyncTask 两种方式的区别_Crystal_xing的专栏-CSDN博客
事件传递机制:
1. 主要是三个函数。2.传递流程是什么?
Android事件分发机制面试题 - 青年程序猿 - 博客园
https://blog.csdn.net/kai_zone/article/details/80141949
Android 多线程-----AsyncTask详解:
1.作用是什么?。2.内部原理是什么(Handler+Thread)?3.怎么使用(三个泛型,四个步骤)
Android 多线程-----AsyncTask详解_不忘初心-CSDN博客
单例模式 :手写单例模式。
Java单例模式——并非看起来那么简单_viclee-CSDN博客_java单例模式是什么意思
安卓任务栈Task:
Activity的任务栈Task以及启动模式与Intent的Flag详解 - 简书
ANR产生的原因及定位分析:
掘金
Android 耗时代码(ANR)的查找检测和分析解决 TraceView的使用手册_alcoholdi的专栏-CSDN博客
内存泄漏及解决办法 :
1.定义是什么?2.常见发生情况有哪些?3.怎么避免?
Android开发中常见的内存泄漏情况和解决办法_da_caoyuan的博客-CSDN博客
Dalvik虚拟机相关问题:
1.什么是虚拟机?2.跟java虚拟机的区别?3.art虚拟机的优缺点?
JAVA虚拟机、Dalvik虚拟机和ART虚拟机简要对照 - lxjshuju - 博客园
反射:
1.class对象时什么?2.class三种获取方式。3.反射的使用步骤。
Android反射机制:手把手教你实现反射_不忘初心-CSDN博客_android 反射
JNI/NDK:
1.JNI定义?。2.安卓所用到的场景?3. 使用方法及流程?
Android JNI:深入分析安卓JNI原理_不忘初心-CSDN博客_android jni原理
JNI分别有几种注册方式?有什么不同?
两种注册方式:JNI代码两种注册编写方式_张小强的专栏-CSDN博客_jni注册方式
java虚拟机在运行包含本地方法的java应用程序时,要经过两个步骤:
1. 调用System.loadLibrary()方法,将包含本地方法具体实现的C/C++运行库加载到内存中,
2. Java虚拟机检索加载进来的库函数符号,在其中查找与java本地方法拥有相同签名的JNI本地函数符号。如找到一致的,则将java本地方法映射到具体的JNI本地方法
Java虚拟机在将本地方法与C运行库中的JNI本地函数映射到一起的时候,不会耗费很长时间,但Android framework这类复杂的系统下,拥有大量的包含本地方法的java类,
java虚拟机加载相应的运行库,再逐一检索,将各个本地方法与相应的函数映射起来,这显然会增加运行时间,降低运行效率。
为了解决这一问题,JNI机制提供了名称为RegisterNatives()的JNI函数,该函数允许C/C++开发者将JNI本地函数与Java类的本地方法直接映射起来。
当不调用RegisterNatives函数时,Java虚拟机会自动检索并将JNI本地函数与相应的Java本地方法链接在一起。
但当开发者直接调用RegisterNatives()函数进行映射时,Java虚拟机就不必进行映射处理了,这会极大的提高运行效率。
由于程序员直接将JNI本地函数与Java本地方法链接在一起,在加载运行库时,Java虚拟机不必为了识别JNI本地函数的名称与JNI支持的命名规则进行对比,即任何名称的函数都能直接链接到java本地方法。
************************************************************
安卓系统层:
Android系统架构与系统源码目录(Windous安卓源码下载):
Android系统架构与系统源码目录_BATcoder - 刘望舒-CSDN博客
不一样的Android体系架构_不忘初心-CSDN博客
安卓整个系统启动流程:
Android启动流程:上电到启动第一个APP的详细流程,_不忘初心-CSDN博客_android 启动
init启动流程:
安卓init:Android7.0系统Init原理(一)_不忘初心-CSDN博客
Zygote启动流程:
安卓Zygote:深入理解Zygote(android6.0)_不忘初心-CSDN博客_androidzygote
ServiceManager启动流程:
安卓ServiceManager启动:彻底理解ServiceManager启动流程,这一篇就够了_不忘初心-CSDN博客
SystemServer启动流程:
Android源码解析之(九)-->SystemServer进程启动流程_一片枫叶的专栏-CSDN博客
Android系统启动-SystemServer上篇_不忘初心-CSDN博客
ActivitiManagerService启动流程:
ActivityManagerService启动流程_不忘初心-CSDN博客
ActivitiManagerService框架:
https://www.jianshu.com/p/194a37755fea
如何添加硬件服务:
安卓硬件服务实例:手把手教你如何从驱动到应用添加硬件服务_不忘初心-CSDN博客
Binder系统原理:
写给 Android 应用工程师的 Binder 原理剖析 - BaronZhang - 博客园 (图显示有问题) (链接 2)
Android Binder通信一次拷贝你真的理解了吗?_IT先森-CSDN博客
这所谓的“一次拷贝”到底是发生在什么地方?
答:这所谓的“一次拷贝”发生在请求端进程向Binder接收端进程发送数据的请求端的内核层空间中。
startActivity流程:
安卓startActivity:彻底理解startActivity的启动过程这一篇就够了_不忘初心-CSDN博客_android startactivity
startService流程:
安卓startService:让你彻底理解startService过程_不忘初心-CSDN博客_startservice
安卓进程创建流程:
https://www.jianshu.com/p/b6ac0c2fa240
深入理解安卓进程创建流程_不忘初心-CSDN博客
本地服务框架个java服务框架:
《安卓框架揭秘》
安卓Android.mk语法解析?
Android.mk 文件语法详解 - 阿波伦 - 博客园
安卓几种通信的方式?大数据用什么方法?
1. AIDL 2. 广播 3. 共享文件 4. Socket 5. 内容提供者 6.handler
Android应用层使用共享内存机制进行进程间交换数据_haohaoxuexi2014的博客-CSDN博客_android 进程间共享内存
android 两个应用之间的通信与调用_Shawn_Dut的专栏-CSDN博客_android两个应用之间的通信
Android5.0 到9.0系统版本的改变:
Android从5.0到9.0版本的主要变更 - 简书
*************************************************************
语言篇:
java篇:
Android(2017-2018)BAT面试题整理(java篇,含答案)
C++面试题:
C++经典面试题(最全,面中率最高) - fcyh - 博客园
C++面试集锦( 面试被问到的问题 ) - Y1 - 博客园
其他重要知识点:
C++重点知识总结_不忘初心-CSDN博客
**************************************************************
Android APP篇:
Android(2017-2018)BAT面试题整理(Android篇,含答案)
Android知识体系总结2020(全方面覆盖Android知识结构,面试&进阶)_编程语言是方式,而思维是创造。-CSDN博客_android知识体系
**************************************************************
驱动篇:
linux驱动最新面试题(面试题整理,含答案)_不忘初心-CSDN博客_linux驱动面试题
*******************************************************************
研发岗位需求:base 杭州、武汉、上海。双击查看