面试
文章平均质量分 95
Zhongyi_Li
这个作者很懒,什么都没留下…
展开
-
Java基础知识
java中的每个类、接口,被加载后,jvm都会给一个类生成一个Class类的对象,也就是说所有类加载进内存都会变成Class类的对象,这个Class类和Object类没有区别,就是一个类而已。Class类是支持泛型的,Class<InputStream> isClass = InputStream.class,也可以使用通配符Class<?> isClass = Input...原创 2020-02-18 17:39:49 · 148 阅读 · 0 评论 -
Android(Java)线程使用规范
java线程池ThreadPoolExecutor类使用详解Java线程池ExecutorServicejava并发编程:Executor、Executors、ExecutorServiceExecutorService详解Thread 的源码和原理也得学习一下...原创 2020-01-22 21:57:03 · 282 阅读 · 0 评论 -
java 基础 - WeakReference 和 ReferenceQueue
java 源码系列 - 带你读懂 Reference 和 ReferenceQueue原创 2020-01-22 17:02:32 · 1193 阅读 · 0 评论 -
java基础 equals和hashCode、HashMap
我们知道equals和hashCode都是Object的方法,equals是比较对象是否相同的,默认的是比较地址值,hashCode是获取哈希码的,获取哈希码是有一套哈希算法的,具体没研究,每个版本的java都有些不一样。equals和hashCode的关系更多的是一种约定,equals相同时,hashCode一定是相同的,equals不同时,hashCode也可能是相同的。所以才会有,重写e...原创 2020-01-22 17:02:07 · 280 阅读 · 0 评论 -
二分查找
704. Binary Searchclass Solution { public int search(int[] nums, int target) { if (nums == null || nums.length == 0) return -1; int left = 0; int right = num...原创 2020-01-17 16:08:02 · 321 阅读 · 0 评论 -
Activity Window View、View事件传递机制
Activity 包含Window,Window是一个抽象类,它的唯一实例是PhoneWindow,所以Activity的mWindow指向的就是PhoneWindow对象。setContentView方法调用的就是PhoneWindow的setContentView方法,我们知道的DecorView就是在PhoneWindow里面,setContentView就是把我们自己写的布局放到Decor...原创 2020-01-15 16:56:24 · 429 阅读 · 0 评论 -
进程间通信
先学习一下AIDL,仔细看下面这篇文章就大概明白了。aidl其实就是对Binder和序列化反、序列化的封装,这样方便开发者开发。Binder虽说是用在跨进程调用的,可是也是可以用在一个进程中的,而且很常用,看这篇文章Android中bindService的使用及Service生命周期。aidl也是可以用在一个进程中的,只要Service不设置其它进程就行,这个时候获取到的Binder是一个本地接口...原创 2020-01-14 15:49:04 · 148 阅读 · 0 评论 -
JVM相关知识和gc过程
java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。jvm屏蔽了与具体操作系统平台相关的信息,使java程序只需生成在java虚拟机上运行的目标代码(字节码),就可以在多平台上不加修改地运行。jvm在执行字节码时,实际上最终还是把字节码解释称具体平台上的机器指令执行。JVM由哪些部分组成1、Class Loader 类加载器类加载器的作用是加载类...原创 2019-11-15 15:58:29 · 192 阅读 · 0 评论 -
面试准备题
Android基础知识:(1)Lru算法(2)Binder机制(3)EventBus实现原理和为什么不能跨进程 (重点,多次被问)(4)Handler (必须掌握的) a、Handler如何在handleMessage方法拦截之前发出的message b、Handler机制 c、HandlerThread的原理 ...原创 2019-11-06 15:52:30 · 172 阅读 · 0 评论 -
android MVC MVP MVVM的理解
先说一下MVC的概念:View层是界面,Model层是业务逻辑,Controller层用来调度View层和Model层,将用户界面和业务逻辑合理的组织在一起,起粘合剂的效果。所以,Controller中的内容能少则少,这样才能提供最大的灵活性。控制器的用来将不同的View和Model组织在一起,顺便提双方传递消息,仅此而已。对于Android MVC的理解,目前理解到一句话的程度:An...原创 2019-03-20 17:35:48 · 549 阅读 · 0 评论 -
Android中为什么主线程不会因为Looper.loop里的无限循环ANR?
这解释这个问题我们得知道Looper.loop()里的无限循环和ANR分别是什么?ANR 应用无响应,有两种情况会导致ANR(1)事件没有得到处理(2)事件正在处理,但是没有及时完成所以说在实际使用中Activity生命周期onCreate/onStart/onResume等方法中做了耗时操作会导致ANR。这也是以下情况会导致ANR的根本原因Activity响应时间超过5s...原创 2019-10-31 18:25:48 · 411 阅读 · 0 评论 -
Android消息循环机制(一)android app 是怎么启动起来的以及Looper、MessageQueue和Handler机制的源码分析
我们都知道点击icon图标可以启动app,那这个过程到底做了什么呢?展示所有app icon图标的app叫launcher,也是一个app,点击某个app的icon,逻辑在launcher的进程中处理,其实就是调用startActivity,startActivity其实封装了binder机制,实现进程调用,通知到ActivityManagerService(AMS,AMS是framework...原创 2019-05-24 00:46:49 · 935 阅读 · 0 评论 -
Android消息循环机制(二)Meassage、MessageQueue源码解析
分析Message源码需要学到:(1)消息缓冲池相关知识其实这个消息缓冲池的目的是不需要每次都创建新的message,因为message在app运行过程中使用的会很多,每次都创建资源消耗很大,缓冲最大50个。其实实现很简单,就是用一个单向链表实现的,获取(obtain)和回收(recycle)都是对链表头进行操作的。(2)消息的分类:同步消息、异步消息和屏障(barrier)消息,下面...原创 2019-11-01 11:54:12 · 635 阅读 · 0 评论