
面试
曾经的追梦少年
让优秀成为一种习惯,让乐观成为一种常态
展开
-
垃圾收集算法 面试 笔记
面试小结1、标记-清除算法标记-清除算法 是一种常见的基础垃圾收集算法,它将垃圾收集分为两个阶段标记阶段:标记出可以回收的对象清除阶段:回收被标记的对象所占用的空间缺点:1、标记和清除的效率都不算高2、容易产生大量不连续的内存碎片,碎片太多可能会导致后续没有足够的连续内存分配给较大的对象,从而提前触发新的一次垃圾收集动作2、复制算法把内存空间化为两个相等的区域,每次只使用其中一个区域。在垃圾收集时,遍历当前使用的区域,把存活对象复制到另外一个区域中,最后将当前使用的区域的可回收的对象进行回原创 2020-11-29 12:28:05 · 172 阅读 · 0 评论 -
垃圾标记算法 面试 笔记
面试小结目前有两种垃圾标记算法,引用计数算法和根搜索算法引用计数算法:基本思想就是每对象都有一个引用计数器,当对象的某处被引用的时候,它的引用计数器就加1,引用失效时就减1。当引用计数器中的值变为0,则该对象就不能被使用,变成了垃圾弊端:引用计数算法没有解决对象之间相互循环引用的问题根搜索算法: 这个算法的基本思想就是选定一些对象作为GC Roots,并组成根对象集合,然后以这些GC Roots 的对象作为起始点,向下搜索,如果目标对象到GC Roots 是连接着的,我们则称该目标对象是不可达的,如原创 2020-11-29 12:27:48 · 152 阅读 · 0 评论 -
运行时数据区域 面试 笔记
面试小结1、程序计数器每个线程都会有一个独立的程序计数器,程序计数器是java虚拟机规范中唯一没有规定任何OutOfMemoryError情况的数据区域2、java虚拟机栈java虚拟机栈和java虚拟机线程生命周期相同并同时创建,栈中存储线程中java方法调用的状态,包括局部变量、参数、返回值以及运算的中间结果等。一个java虚拟机栈报刊了多个栈帧,一个栈帧存储局部变量表、操作数栈、动态链接、方法出口等信息。当线程调用一个java方法时,虚拟机压入一个新的栈帧到该线程的java虚拟机栈中,在方法原创 2020-11-29 12:27:31 · 132 阅读 · 0 评论 -
Window 的属性面试 笔记
面试小结Window的属性 有很多种 它们分别是Type(Window 的类型)、Flag(Window 的标志) 和 SoftInputMode(软键盘相关模式)//#################################分割线 #################################################Window 的类型和显示次序Window 的类型有很多种,比如应用程序窗口、系统错误窗口、输入法窗口、PopupWindow、Toast、Dialog 等总体来原创 2020-11-28 11:02:32 · 151 阅读 · 0 评论 -
window、windowManager 和 WMS 的关系面试 笔记
面试小结window、windowManager 和 WMS 的关系Window是一个抽象类,具体实现类为PhoneWindow,它对View进行管理。WindowManager是一个接口类,继承自接口ViewManager,用来管理window的,它的实现类为WindowManagerImpl,如果我们想要对Window(View)进行添加、更新和删除操作就可以使用WindowManager,WindowMannager会将具体的工作交由WMS来处理,WindowManager和WMS 通过Bind原创 2020-11-28 11:02:12 · 359 阅读 · 0 评论 -
Activity栈管理 面试 笔记
面试小结 Activity 任务栈模型//#################################分割线 #################################################ActivityRecord 用来记录一个Activity 的所有信息,TaskRecord 中包含了一个或多个ActivityRecord,TaskRecord 用来表示Activity的任务栈,用来管理栈中的ActivityRecordActivitySta原创 2020-11-28 11:01:52 · 202 阅读 · 1 评论 -
AMS 重要数据结构 面试 笔记
面试小结//#################################分割线 #################################################ActivityRecord内部记录了Activity的所有信息,用来描述一个Activity,它是在启动Activity时被创建的,具体在ActivityStarter的startActivity方法中被创建 ActivityRecord 的部分重要成员变量 需要注意的是其中含有该Activ原创 2020-11-28 11:01:03 · 280 阅读 · 0 评论 -
AMS 的启动过程 面试 笔记
面试小结AMS的启动是在SystemServer 进程中启动frameworks/base/services/java/com/android/server/SystemServer.javastartBootstrapServices(); //引导服务,用 SystemServiceManager 启动了ActivityManagerService、PowerManagerService 、PackageManagerService 等服务startCoreServices //核心服务,启动了原创 2020-11-28 11:00:47 · 254 阅读 · 0 评论 -
ActivityManagerService 面试 笔记
面试小结Android 8.0 AMS 家族原创 2020-11-28 11:00:30 · 489 阅读 · 0 评论 -
Context 面试 笔记
Activity、Service和Application 都间接地继承自 Context,因此我们可以计算出去一个应用进程中有多少个Context,这个数量等于Activity和Service的总个数加1,1指的是Application 的数量//#################################分割线 #################################################Context关联类ContextImpl 内部包含Context类型的mBase对原创 2020-11-28 10:59:57 · 176 阅读 · 0 评论 -
Content Provider 面试 笔记
面试小结query 方法到AMS 调用过程的时序图//#################################分割线 #################################################AMS启动Content Provider 的过程时序图原创 2020-11-28 10:59:34 · 201 阅读 · 0 评论 -
广播的注册、发送和接收过程 面试 笔记
面试小结广播的动态注册时序图//#################################分割线 #################################################ContextImpl 到 AMS 的调用过程时序图//#################################分割线 #################################################AMS 到BroadcastReceiver 的调用过程时序图原创 2020-11-28 10:59:20 · 190 阅读 · 0 评论 -
Service绑定过程 面试 笔记
面试小结ContextImpl 到 AMS 的调用过程//#################################分割线 #################################################Service 的绑定过程前半部分调用关系时序图Service 的绑定过程剩余部分代码时序图原创 2020-11-27 15:41:55 · 96 阅读 · 0 评论 -
Service启动过程 面试 笔记
面试小结ContextImpl 到 AMS 的调用过程//#################################分割线 #################################################ActivityThread 启动 Service 的时序图原创 2020-11-27 15:34:25 · 126 阅读 · 0 评论 -
根Activity启动过程中涉及的进程 面试 笔记
面试小结根Activity启动过程中涉及的进程之间的关系//#################################分割线 #################################################根Activity 启动过程中进程调用时序图原创 2020-11-27 15:31:01 · 163 阅读 · 0 评论