
面试
文章平均质量分 66
It一zhai男
Android,kotlin,Java,flutter,python,
展开
-
【IPC】Android中的进程间通信(IPC)详解
1 需要的知识点1.1 进程与线程要理解跨进程通信,首先需要理解以下几个知识点1:进程:按照操作系统的描述,进程是资源分配的最小单位,一个进程可以包含多个线程线程:线程是CPU调度的最小单位,多线程需要考虑并发问题。1.2 Android中的多进程Android多进程指的是一个应用中存在多个进程的情况,在Android中,一般一个应用存在一个进程。多进程的情况2:某个应用由于自...原创 2020-04-13 18:33:05 · 827 阅读 · 0 评论 -
【面试】Android面试题集锦
持续更新…Handler谈谈消息机制Handler作用 ?有哪些要素 ?流程是怎样的 ?一个线程能否创建多个Handler,Handler跟Looper之间的对应关系 ?Handler 引起的内存泄露原因以及最佳解决方案软引用跟弱引用的区别为什么系统不建议在子线程访问UI?Looper死循环为什么不会导致应用卡死?使用Handler的postDealy后消息队列会有什么变化?可...原创 2020-04-09 15:42:40 · 493 阅读 · 0 评论 -
【面试】Handler/Runnable造成的内存泄漏
1 内存泄漏根本原因内存泄漏的根本原因是:长生命周期的对象持有短生命周期的对象,短生命周期的对象就无法及时释放。2 Handler错误用法 private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { s...原创 2020-04-09 15:33:36 · 1601 阅读 · 2 评论 -
【面试】一个线程能否创建多个Handler,Handler跟Looper之间的对应关系 ?
1 一个线程能否创建多个Handler,Handler跟Looper之间的对应关系 ?一个线程能够创建多个Handler,Handler跟Looper没有对应关系,线程才跟Looper有对应关系,一个线程对应着一个Looper,如下所示:private static void prepare(boolean quitAllowed) { if (sThreadLocal.get() !...原创 2020-04-09 15:32:40 · 4913 阅读 · 0 评论 -
【面试】强引用、软引用、弱引用和虚引用
强引用:是指创建一个对象并把这个对象赋给一个引用变量。软引用:如果一个对象具有软引用,内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。弱引用:弱引用也是用来描述非必需对象的,当JVM进行垃圾回收时,无论内存是否充足,都会回收被弱引用关联的对象。虚引用:虚引用和前面的软引用、弱引用不同,它并不影响对象的生命...原创 2020-04-09 15:31:41 · 286 阅读 · 0 评论 -
【面试】可以在子线程直接new一个Handler吗?怎么做?
可以在子线程直接new一个Handler,不过需要在子线程里先调用Looper.prepare(),new一个Handler后,还需要调用Looper.loop()方法。 new Thread(new Runnable() { @Override public void run() { Looper.pre...原创 2020-04-09 15:21:52 · 2493 阅读 · 4 评论 -
【面试】Looper死循环为什么不会导致应用卡死?
点击app图标,首先会进入ActivityThread的main方法,这里是android程序的入口,如下所示:public static void main(String[] args) { `````` Looper.prepareMainLooper();//创建Looper和MessageQueue对象,用于处理主线程的消息 Activ...原创 2020-04-09 15:20:37 · 2577 阅读 · 1 评论 -
【面试】使用Handler的postDealy后消息队列会有什么变化?
MessageQueue里的消息会以时间顺序(执行的先后顺序)来排序,使用Handler的postDealy后,MessageQueue里的消息会进行重新排序。根据源码一步步分析:public final boolean postDelayed(@NonNull Runnable r, long delayMillis) { return sendMessageDelayed(getP...原创 2020-04-09 15:19:10 · 1742 阅读 · 0 评论 -
【Java】线程创建的四种方式
文章目录1 前言2 创建线程的四种方式2.1 实现Runnable接口创建Thread2.2 实现Callable接口来创建Thread线程2.3 继承Thread类来创建线程2.4 使用Executor框架来创建线程池1 前言线程创建线程的方法一般可以分为四类:通过实现Runnable接口来创建Thread线程通过实现Callable接口来创建Thread线程通过继承Thread类...原创 2019-06-29 16:29:05 · 138 阅读 · 0 评论 -
【Android】自定义控件
文章目录1 组合原生控件1.1 组合原生控件原理1.2 源码实现1.3 运行截图2 自己绘制控件2.1 自己绘制控件原理2.2 源码实现2.3 运行截图Android自定义控件可以有三种实现方式组合原生控件自己绘制控件继承原生控件1 组合原生控件1.1 组合原生控件原理组合原生控件就是将原生控件组合,然后封装到一个自定义的ViewGroup中,然后将这个ViewGroup作为...原创 2019-06-27 21:16:52 · 169 阅读 · 0 评论 -
Android面试题精选
目录内存相关1 导致内存泄漏的原因有哪些?2 导致内存溢出的原因有哪些?3 如何避免OOM?Android原理相关1 理解Activity、View、Window三者之间的关系2 Handler机制(消息机制、Handler原理)内容持续更新中…内存相关1 导致内存泄漏的原因有哪些?内存泄漏的根本原因是:长生命周期的对象持有短生命周期的对象,短生命周期的对象就无法及时释放。造成内存泄...原创 2019-06-25 12:17:34 · 1150 阅读 · 3 评论 -
红黑树
目录1 平衡二叉树2 平衡二叉树的左旋与右旋2.1 左旋2.2 右旋转3 红黑树3.1 红黑树简介3.2 红黑树特性3.3 红黑树示例4 参考文章1 平衡二叉树平衡二叉树性质:它的左右两个子树都是平衡数,且左右两个子树的高度差的绝对值不超过1若将二叉树节点的平衡因子BF定义为该节点的左子树的深度减去它的右子树的深度,则平衡二叉树上所有节点的平衡因子只可能为-1,0,1。只要二叉树上有...原创 2019-06-22 20:23:55 · 166 阅读 · 0 评论 -
HashMap相关知识
目录1 HashMap特点2 HashMap原理2.1 基本原理3 hashMap相关问答1 HashMap特点HashMap是一个散列表(数组+链表),它存储的内容是键值对(key-value);HashMap继承于AbstractMap,实现了Map、Cloneable、java.io.Serializable接口;HashMap 的实现不是同步的,这意味着它不是线程安全的。它的ke...原创 2019-06-23 10:09:28 · 294 阅读 · 0 评论 -
Android面试之Java相关
目录1、Java中==和equals的区别2、String、StringBuffer与StringBuilder的区别3、什么是内部类?内部类的作用。4、进程和线程的区别5、Serializable和Parcelable的区别6、静态属性和静态方法是否可以被继承?是否可以被重写?7、哪些情况下的对象会被垃圾回收机制处理掉?8、HashMap与HashTable的区别1、Java中==和equal...原创 2019-06-25 20:57:27 · 390 阅读 · 0 评论