阿里云服务器2核4G 3年仅847元(点击查看)

Android中高级面试题汇总(2020年)

97次阅读
没有评论

Android中高级面试题汇总(2020年)

基础篇

Java基础

类加载机制,双亲委托

Android基础

Activity知识点(必问)

  • Activity启动过程全解析
  • 启动模式以及使用场景
  • onSaveInstanceState以及onRestoreInstanceState使用
  • onConfigurationChanged使用以及问题解决

Fragment知识点

Service知识点

Handler知识点(必问)

Handler Looper Message 关系是什么?
Messagequeue 的数据结构是什么?为什么要用这个数据结构?
如何在子线程中创建 Handler?
Handler post 方法原理?
Handler消息机制,postDelayed会造成线程阻塞吗?对内存有什么影响?
当访问大量数据出现线程租塞用什么技术解决?

数据存储

文件和数据库哪个效率高?

UI控件篇

事件分发与嵌套滚动

RecyclerView和ListView的区别(必问)

动态化页面构建方案

电商类的APP使用居多

网络通信篇

架构设计篇

MVP架构设计

组件化架构

业务大了代码多了会用到。
为什么要用组件化?
组件之间如何通信?
组件之间如何跳转?

性能优化篇

【面试重点】性能优化:包括启动优化(主要是冷启动)、内存优化、绘制优化、稳定性优化、安装包体积优化等,优化是面试的重中之重。
你在开发中是如何做性能优化的?

启动优化

内存优化

绘制优化

什么情况下使用 ViewStub、include、merge?
他们的原理是什么?

安装包优化

稳定性优化

源码流程篇

开源库源码分析

RxJava的实现原理,它是如何实现线程的控制?
Retrofit的框架结构是什么?底层是怎么实现的?
网络框架是如何搭建?okhttp的底层实现是什么,和Retrofit有什么不同?
图片加载框架gilde、Picasso、fresco有什么不同,各自的实现原理是什么?如何搭建一个网络框架?

Glide源码分析

【面试题】
Glide的优点有哪些?
Glide的缓存原理是什么?

Glide的优点主要包括:

  • 多种图片格式的缓存,适用于更多的内容表现形式(如Gif、WebP、缩略图、Video)
  • 生命周期集成(根据Activity或者Fragment的生命周期管理图片加载请求)Glide可以感知调用页面的生命周期,这就是优势
  • 高效处理Bitmap(bitmap的复用和主动回收,减少系统回收压力)
  • 高效的缓存策略,灵活(Picasso只会缓存原始尺寸的图片,Glide缓存的是多种规格),加载速度快且内存开销小(默认Bitmap格式的不同,使得内存开销是Picasso的一半)

LeakCanary源码分析

OkHttp源码分析

【面试问题】
如何使用OkHttp进行异步网络请求,并根据请求结果刷新UI?
可否介绍一下OkHttp的整个异步请求流程?
OkHttp对于网络请求都有哪些优化,如何实现的?
OkHttp框架中都用到了哪些设计模式?

Retrofit源码分析

RxJava源码分析

理解源码之前需要先了解一些RXJava基本知识

RxJava原理与源码分析

RxJava如何进行线程切换的?

Rxjava内存泄漏防止方案——RxLifecycle,AutoDispose,RxLife框架

Tinker源码分析

ARouter源码分析


路由框架原理:ARouter官方文档
【ARouter:现在模块化(组件化)算是比较常见的开发模式了,尤其是在大厂,所以有必要知道ARouter的实现原理,2个模块之间是怎样实现的页面跳转,以及ARouter为了优化性能做了哪些工作】
核心要点:将Route注解中的path地址和Activity.class文件的映射关系保存到它自己生成的java文件的map中
隐式跳转方案,但是一个项目中不可能所有的跳转都是隐式的,这样Manifest文件会有很多过滤配置,而且非常不利于后期维护。
反射跳转方案:需要拿到Activity的类文件,在组件开发的时候,想拿到其他module的类文件是很麻烦的,因为组件开发的时候组件module之间是没有相互引用的,你只能通过找到类的路径去反射拿到这个class。大量的使用反射跳转对性能会有影响。
APT是Annotation Processing Tool的简称,即注解处理工具。apt是在编译期对代码中指定的注解进行解析,然后做一些其他处理(如通过javapoet生成新的Java文件

Android框架层源码解析

Java层源码解析

HashMap底层实现,它和LinkHashMap有什么区别?

算法设计

新技术篇

实战问题篇

面试笔记篇

面试文档

  • AndroidGuide 这是一份 Android 开发从基础入门到进阶的完整(并不是)指南,所有文章都是本人这几年时间里一字一字码出来的,文章的更新方向和更新频率以我的学习计划为导向,会一直持续密集更新下去…..
  • LearningNotes

面试文献收藏

个人面试经验

社区网站篇

arison
版权声明:本站原创文章,由arison2020-12-28发表,共计18858字。
转载提示:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)