关注本站,零基础新手也能轻松搭建个人网站!
  1. 首页
  2. Java实战教程

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

阿里云服务器优惠

重大福利提醒:【双11活动】整个11月份阿里云服务器降价了,1核2G1年58元 3年180元。这个价格买到就是赚到。180元就可以让你建站3年,全网找不到这么低的价格了。
活动地址阿里云双11降价活动(1核2G1M3年180元) 只有阿里云新用户才能参与活动。
必读事项购买阿里云服务器必读事项(省钱有绝招)
如果你不是阿里云新用户,可以找家人,亲戚的账号重新注册为阿里云新用户。一次性买满3年,我和我朋友们都是这么干的,主要是省钱。大家看了我的教程的应该都知道,多台云服务器之间的网站备份,数据迁移很容易,不用担心数据备份和迁移问题。
问题咨询:大家遇到各种问题可以微信咨询,微信号:xzjmyk 先加微信,然后拉你入交流群。

基础篇

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

面试文献收藏

个人面试经验

社区网站篇

原创文章,作者:admin,如若转载,请注明出处:http://tencent.yundashi168.com/659.html

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code

2020年阿里云618大促活动(有香港主机)

1核/2G/1M---91元1年,三年275元;
2核/4G/1M---320元1年,三年960元;
2核/8G/1M---416元1年,三年1093元;
4核/8G/1M---465元1年,三年1396元;
1核2G(香港,不用备案)---249元1年,三年888元;点击直达
还有还有4核8G6M、8核16G10M配置,价格很低很低!

注意:这个价,只有新用户才能看到;老用户借用家人身份重新注册,这个价格重新注册也不亏!

我知道了