面试问题总结
不以那个公司为例,只求记录问题和自己查到的解决方案。不被同一个问题难倒两次
凌晨三点的北京
行到水穷处 坐看云起时
展开
-
jvm虚拟机对象存活算法和垃圾回收算法
jvm虚拟机对象存活算法和垃圾回收算法java虚拟机是怎么判断该对象是不是可以被回收了呢?引用计数法给对象添加一个引用计数器,每当有一个地方引用了这个对象,则计数器加1,当引用失效的时候,计数器减1,当计数器个数为0,则表明这个对象已死,可以被垃圾回收器回收了。此中方式无法解决对象互相引用的问题,所以java虚拟没有采用这个方式可达性分析算法根据引用关系,判断对象是否和GCroot之前存在直接或间接的引用关系,来决定这个对象是否可以被回收。可作为GC Root 的有以下几种:虚原创 2021-01-31 10:15:18 · 90 阅读 · 0 评论 -
view#post和Handler#psot区别
v.post { } Handler().post { }View#post方法源码业务场景:当我们在activity#onCreate或是在fragment#onViewCreated方法中直接获取view的宽高为0,为什么?根据View视图的绘制流程,view的宽高只有在测量之后才能获取到,而view的测量是在activityThread的handleResumeActivity方法中,通过创建ViewRootImp,把DecoreView和Coneten...原创 2021-01-29 17:35:13 · 399 阅读 · 0 评论 -
java线程的五种状态
讲一下线程的几种状态NEW当我们创建一个线程,未启动的状态RUNNABLE 就绪状态此状态是当我们调用start()方法之后,线程处于此状态RUNNING 运行状态当run方法正在执行的时候,线程进入运行状态BLOCK 阻塞状态当我们调用wait(),等待阻塞主动阻塞,调用了sleep(),主动让出Cpu执行权同步阻塞 ,锁被其他线程占用。DEAD 终止状态run方法执行结束。...原创 2021-01-16 22:58:44 · 80 阅读 · 0 评论 -
Android 事件分发
Android 源码事件分发Activity#dispatchTouchEvent /** * Called to process touch screen events. You can override this to * intercept all touch screen events before they are dispatched to the * window. Be sure to call this implementation for原创 2021-01-15 14:49:11 · 83 阅读 · 0 评论 -
Android Message处理流程
Message处理流程Loop#loop开启无限循环不断的从消息队列里面取出消息... for (;;) { Message msg = queue.next(); // might block if (msg == null) { // No message indicates that the message queue is quitting. return;原创 2021-01-15 11:03:00 · 524 阅读 · 0 评论 -
Android 动画
Android 动画分类帧动画 view动画也叫补间动画属性动画帧动画(AnimationDrawable)使用:在xml中定义一组图片,通过getBackgroud()相关方法获取并转化为AnimationDrawable对象,执行帧动画。<?xml version="1.0" encoding="utf-8"?><animation-list xmlns:android="http://schemas.android.com/apk/res/android" a原创 2021-01-13 11:19:19 · 300 阅读 · 0 评论 -
图片加载框架Glide
为什么要用Glide链式调用,兼容系统控件imageView,使用非常简单。不必像Fresco那样得用SimpleDrawableView Glide.with(this) .load(data.teacher_image) .placeholder(R.drawable.recommend_teacher_icon) .error(R.drawable.recommend_teacher_icon)原创 2021-01-11 17:58:11 · 3931 阅读 · 4 评论 -
java线程池相关问题
allowCoreThreadTimeOut方法设置为true的含义如果设置成true,你设置的keep-alive(超时时间)不仅会作用于非核心线程,同样核心线程超过这个时间,也会被回收掉。原创 2021-01-08 12:40:56 · 80 阅读 · 0 评论 -
OkHttp源码相关面试点
首先介绍下okhttp源码涉及到的几个类okhttpClient okhttp的大管家,负责初始化一些必要参数 拦截器 超时时间等。Builder模式来创建的。Request 负责构建一个请求对象,通过你传入的url,也是通过Builder模式来创建Response 负责构建一个相应对象。Dispater 内部是线程池和两个队列,一个是存放等待发起请求的call对象,另一个是存放已经发起请求的call对象 线程池负责网络请求在子线程中执行。此类创建的线程池是核心线程数为0,线程闲置时间为60s,原创 2021-01-07 21:46:05 · 178 阅读 · 0 评论