- 01.内存相关问题汇总
- 02.崩溃相关问题汇总
- 03.网络相关问题汇总
- 04.ANR相关问题汇总
- 05.卡顿相关问题汇总
- 06.稳定性相关的问题
- 07.App启动流程优化
- 08.主流库问题大汇总
- 09.so库崩溃问题汇总
- 10.项目设计问题汇总
- 四种引用:说一下四中引用的区别和使用场景,什么情况下会导致应用内存空间不足?弱引用和软引用有什么区别?
- OOM:OOM是什么?有哪些场景会造成OOM,如何解决?那么Oom是否可以try catch?为什么?如何治理OOM?
- 引用链路:activity有个内部类handler,描述下引用关系链路,并说明为何gcRoots能访问到activity
- 鲁班压缩:图片压缩一般怎么做的?如何理解质量压缩?如何理解采样率压缩,采样率怎么计算?鲁班有哪些设计巧妙的地方?
- 崩溃流程:App发生了崩溃,说一下崩溃处理流程。系统如何统一处理App崩溃?App崩溃后如何处理信息写入文件?
- 崩溃原理:App崩溃后如何杀死进程?杀死进程的流程是什么,说一下Binder死亡通知的原理?如何避免进程崩溃?
- 崩溃治理:平常怎么做崩溃治理?如何解决系统级别Crash?如何解决三方库中的Crash呢?Crash预防做过什么措施?
- 服务端:服务器只提供数据接收接口,在多线程或多进程条件下,如何保证数据的有序到达?
- Https请求慢的解决办法(提示:DNS,携带数据,直接访问IP)
- 弱网模拟:如何模拟弱网操作,其设计思路是什么?如何模拟重定向或服务端异常?
- 耗时统计:对网络请求如何做耗时统计?其设计思路是什么?假设有10个请求,如何保证接口耗时数据是与请求接口对应对?
- 案例分析:现在下载速度很慢,试从网络协议的角度分析原因,并优化(提示:网络的5层都可以涉及)。
- ANR基础:究竟是什么是ANR?ANR产生条件是什么?说一下触发场景Activity的ANR流程?那些极端情况不会ANR?
- ANR监控:ANR是如何监控,其设计思路是什么?FileObserver和WatchDog监听ANR分别有什么特点?
- ANR查看:ANR是如何查看?trace.txt如何看?提取ANR中那些重要的信息?
- ANR解决:造成ANR的原因可能有哪些?碰到过哪一种ANR,具体是怎么解决的?
- 卡顿如何解决?UI卡顿的原因有哪些?如何优化?
- Bitmap 使用需要注意哪些问题?Bitmap.recycle() 会立即回收么?什么时候会回收?如果没有地方使用这个 Bitmap,为什么垃圾回收不会直接回收它?
- 性能优化;ConstraintLayout为什么效果好?为什么多了层级,性能可能会差很多?
- 你们做了哪些稳定性方面的优化?性能稳定性是怎么做的?项目中是如何保障业务稳定性的,针对异常问题如何止损?
- 启动优化做了哪些工作?是怎么保障优化效果的?在版本迭代中如何避免不断添加代码导致启动变慢的问题?
- 异步加载为何要这样做?可以用子线程或者线程池
- Retrofit:采用动态代理,那么什么是动态代理,有何特点?Retrofit如何加载API接口,其核心原理是什么?
- Glide:它怎么实现图片的加载进度条,Glide的缓存是怎么设计的?为什么要用弱引用。Glide 的源码设计哪里很微妙?说一下三级缓存的原理?描述一下内存缓存的容器?
- MMKV库:mmkv了解吗?它是如何存储数据的,mmap为什么比io高效,如何避免线程安全,为何进程杀死后仍然能保存好数据,是怎么做到的?如何保证多进程写入安全?
- OkHttp:官方为什么会把 HttpClient 和 HttpUrlConnection 替换为 OkHttp 默认实现?它有什么好处?
- OkHttp设计:OkHttp整体设计思路是什么样的?request和respond分别如何设计?如何设计call请求操作?
- OkHttp同步异步:如何设计同步和异步请求?同步操作做了什么?异步操作如何处理逻辑?
- OkHttp拦截器:拦截器是如何设计的?为什么需要拦截器?拦截器如何处理拦截,和向下分发逻辑?网络如何做重试机制的设计?
- OkHttp缓存:如何设计缓存?什么情况下会用到网络缓存?缓存拦截器的核心思想是什么?
- OkHttp分发器:同步和异步请求的Dispatcher是如何调度的?设计的巧妙之处是什么?
- OkHttp线程池:使用了什么线程池?是如何管理线程任务?跟普通线程池使用有何区别?
- LeakCanary:LeakCanary 的核心工作流程,它的设计思想是什么?初始化做了那些工作?如何设计组件的监听(怎么监听ViewModel,Service销毁事件)?
- LeakCanary:如何判断内存的泄漏?内存泄漏的判定条件是什么 ?检测内存泄漏的机制原理是什么?发现泄漏对象后就会触发分析吗?
- LeakCanary:检测出内存泄漏后,它又是如何生成泄漏信息的? 内存泄漏的输出轨迹是怎么得到的?为什么不能用到线上环境?