Android 面试专辑半栈工程师AndroidWorld

Android 中级面试题汇总(201811更)

2018-10-23  本文已影响285人  KT_11

本文主要适用于中小厂、初中级面试,供1-3年的Android开发参考


目录

(1 常问 2 偶尔问)

1-1 Activity生命周期
1-2 Service生命周期
1-3 理解Activity、View、Window三者关系
1-4 Activity四种LaunchMode启动模式及其使用场景
1-5 Touch事件传递机制
1-6 View的绘制流程
1-7 Android中的动画有哪些
1-8 谈谈你对binder机制的理解](楼主不熟)
1-9 Android中进程间通信有哪些实现方式](楼主不熟)
1-10 实现一个自定义view的基本流程
1-11 ANR是什么?怎样避免和解决ANR?
1-12 谈谈AIDL机制](楼主不熟)
1-13 Android异步消息处理机制
1-14 Android性能优化
1-15 内存泄漏和内存溢出是什么?一般怎么处理内存泄漏?
1-16 谈谈IntentService
1-17 广播注册方式与区别
1-18 如何进程保活?能否保证service不被杀死?
1-19 怎么避免OOM?怎么避免图片加载导致的OOM?
1-20 Android UI适配
1-21 JAVA GC原理
1-22 Fragment与Fragment、Activity通信的方式
1-23 RecyclerView和ListView的区别
1-24 图片框架为什么要用Glide?它和Universal-ImageLoader,Picasso,Fresco对比?
1-25 网络框架为什么要用OKhttp? 它和Xutils, Volley, Retrofit对比?
1-26 熟悉哪些设计模式?

2-1 Activity在屏幕旋转时的生命周期
2-2 怎样解决方法数65K的问题
2-3 浅谈MVC、 MVP、 MVVM区别与联系(楼主不熟)
2-4 什么是三级缓存?三级缓存的原理?
2-5 热修复的原理?
2-6 AsyncTask的内部实现、适用场景
2-7 谈谈Context


1 常问

1-1 Activity生命周期

可参考 https://www.jianshu.com/p/f2a81c6b6c00


1-2 Service生命周期

Service生命周期分为三种情况,非绑定模式、绑定模式 、混合模式

此外要注意
startService()开启Service后,调用者退出后Service仍然存在。
bindService()开启Service后,调用者退出后Service也随即退出。


1-3 理解Activity、View、Window三者关系


1-4 四种LaunchMode启动模式及其使用场景

(1)standard
默认模式,每次启动活动都重新创建一个新的实例
(2)singleTop
在配置文件activity中加入android:launchMode="singleTop"
在启动活动时如果发现返回栈的栈顶已经是该活动,则直接使用它(并调用onNewIntent方法),否则会重新创建一个新的实例
(3)singleTask
每次启动该活动时,系统首先会在返回栈中检查是否存在该活动的实例,如果发现已经存在则直接使用该实例(并调用onNewIntent方法),并把这个活动之上所有活动统统出栈,如果没有发现则会创建一个新的实例
(4)singleInstance
该模式的活动每次会请求一个新的返回栈来管理这个活动
主要适用于,当前程序和其他程序共享一个活动实例的时候才用到这个模式


1-5 Touch事件传递机制

上面只是简单的介绍流程
很多细节如三种方法各自返回true或false接下来会怎么走,这涉及到的就比较多了
如果可以的话,我宁愿画一张图,凭此图就可以说明所有可能发生的情况,也是分发机制的精髓所在
可参考这篇文章,心里过一遍流程


1-6 View的绘制流程


1-7 Android中的动画有哪些


1-8 谈谈你对binder机制的理解


1-9 Android中进程间通信有哪些实现方式


1-10 实现一个自定义view的基本流程


1-11 ANR是什么?怎样避免和解决ANR


1-12 谈谈AIDL机制


1-13 Android异步消息处理机制


1-14 Android性能优化


1-15 内存泄漏和内存溢出是什么?一般怎么处理内存泄漏?

(1)内存溢出(OOM)和内存泄露(对象无法被回收)的区别。
(2)引起内存泄露的原因
(3)内存泄露检测工具 ------>LeakCanary


1-16 谈谈IntentService

  1. 我们省去了在Service中手动开线程的麻烦,
  2. 当操作完成时,我们不用手动停止Service

1-17 广播注册方式与区别


1-18 进程保活? 能否保证service不被杀死?

进程保活
先参考这篇 https://blog.csdn.net/Go_AheadY/article/details/79420027
后面会再详细深入学习

避免service被杀掉


1-19 怎么避免内存溢出OOM?怎么避免图片加载导致的OOM?

避免内存溢出OOM

图片加载导致的OOM怎么办?


1-20 Android UI适配


1-21 JAVA GC原理


1-22 Fragment与Fragment、Activity通信的方式


1-23 RecyclerView和ListView的区别


1-24 图片框架为什么要用Glide?它和Universal-ImageLoader,Picasso,Fresco区别?


1-25 网络框架为什么要用OKhttp? 它和Xutils, Volley, Retrofit区别?


1-26 熟悉哪些设计模式?


2 偶尔问

2-1 Activity在屏幕旋转时的生命周期


2-2 怎样解决方法数65K的问题


2-3 浅谈MVC、 MVP、 MVVM区别与联系


2-4 什么是三级缓存?三级缓存的原理?


2-5 热修复的原理 (如果简历中有提到过此技术)


2-6 AsyncTask的内部实现、适用场景


2-7 谈谈Context

持续更新中......


参考

https://blog.csdn.net/zl_china/article/details/77439915
https://www.jianshu.com/p/928dbf20d927
https://blog.csdn.net/carter_yu/article/details/52517475
https://yiweifen.com/html/news/WaiYu/74088.html
https://www.jianshu.com/p/62a22dc70048
https://www.jianshu.com/p/afc54b7e90cb
https://blog.csdn.net/tomcat0916/article/details/81902189

免税

上一篇下一篇

猜你喜欢

热点阅读