2022最新版《Android高级开发面试题大全》开源分享

Activity基础相关

说下Activity生命周期 ?

Activity A 启动另一个Activity B 会调用哪些方法?如果B是透明主题的又或则是个DialogActivity呢 ? 说下onSaveInstanceState()方法的作用 ? 何时会被调用?

说下 Activity的四种启动模式、应用场景 ?

了解哪些Activity常用的标记位Flags?

说下 Activity跟window,view之间的关系?

横竖屏切换的Activity生命周期变化?

如何启动其他应用的Activity?

Activity的启动过程?(重点)

Fragment基础相关

谈一谈Fragment的生命周期 ?

与Activity生命周期的不同 ?

谈谈Activity和Fragment的区别?

Fragment中add与replace的区别(Fragment重叠) getFragmentManager、getSupportFragmentManager 、getChildFragmentManager之间的区别?

FragmentPagerAdapter与FragmentStatePagerAdapter的区别与使用场景

Service基础相关

谈一谈Service的生命周期?

Service的两种启动方式?区别在哪?

如何保证Service不被杀死 ? 能否在Service开启耗时操作 ?怎么做 ?

用过哪些系统Service ?

了解ActivityManagerService吗?发挥什么作用(重点)

Broadcast Receiver基础相关

广播有几种形式 ? 都有什么特点 ?

广播的两种注册方式 ?

广播发送和接收的原理了解吗 ?(Binder机制、AMS)

ContentProvider基础相关

ContentProvider了解多少?

ContentProvider的权限管理?

说说ContentProvider、ContentResolver、ContentObserver 之间的关系?

数据存储相关

描述一下Android数据持久存储方式?

SharedPreferences的应用场景?注意事项?

SharedPrefrences的apply和commit有什么区别?

了解SQLite中的事务操作吗?是如何做的 使用SQLite做批量操作有什么好的方法吗?

如何删除SQLite中表的个别字段?

使用SQLite时会有哪些优化操作?

IPC(重点)

Android中进程和线程的关系?区别?

如何开启多进程 ?应用是否可以开启N个进程 ?

为何需要IPC?

多进程通信可能会出现的问题?

Android中IPC方式、各种方式优缺点,为什么选择Binder?

Binder机制的作用和原理?

Binder框架中ServiceManager的作用?

Bundle传递对象为什么需要序列化?Serialzable和Parcelable的区别?

讲讲AIDL?原理是什么?如何优化多模块都使用AIDL的情况?

View相关

讲下View的绘制流程?

MotionEvent是什么?包含几种事件?什么条件下会产生?

描述一下View事件传递分发机制?

如何解决View的事件冲突 ?举个开发中遇到的例子 ?

scrollTo()和scollBy()的区别?

Scroller是怎么实现View的弹性滑动?

invalidate()和postInvalidate()的区别 ?

SurfaceView和View的区别?

自定义View如何考虑机型适配 ?

Handler相关

谈谈消息机制Handler ? 作用 ?有哪些要素 ?流程是怎样的 ?

一个线程能否创建多个Handler,Handler跟Looper之间的对应关系 ?

软引用跟弱引用的区别 Handler 引起的内存泄露原因以及最佳解决方案

为什么系统不建议在子线程访问UI Looper死循环为什么不会导致应用卡死

使用Handler的postDealy后消息队列会有什么变化 ?

可以在子线程直接new一个Handler吗 ?怎么做 ?

Message可以如何创建 ?哪种效果更好 ?为什么 ?

线程(重点)相关

线程池的好处?

线程池的几个参数的理解,四种线程池的使用场景 Android中还了解哪些方便线程切换的类?

讲讲AsyncTask的原理 IntentService有什么用 ?

直接在Activity中创建一个thread跟在service中创建一个thread之间的区别

ThreadPoolExecutor的工作策略 ?

Handler、Thread和HandlerThread的差别?

ThreadLocal的原理 多线程是否一定会高效(优缺点) 多线程中,

让你做一个单例,你会怎么做

除了notify还有什么方式可以唤醒线程

什么是ANR ? 什么情况会出现ANR ?如何避免 ?

在不看代码的情况下如何快速定位出现ANR问题所在 ?

Bitmap相关

Bitmap使用需要注意哪些问题 ?

Bitmap.recycle()会立即回收么?

什么时候会回收?如果没有地方使用这个Bitmap,为什么垃圾回收不会直接回收?

一张Bitmap所占内存以及内存占用的计算 Android中缓存更新策略 ?

LRU的原理 ?

性能优化(重点)

图片的三级缓存中,图片加载到内存中,如果内存快爆了,会发生什么?怎么处理?

内存中如果加载一张500*500的png高清图片.应该是占用多少的内存?

WebView的性能优化 ?

Bitmap如何处理大图,如一张30M的大图,如何预防OOM 内存回收机制与GC算法(各种算法的优缺点以及应用场景);GC原理时机以及GC对象

内存泄露和内存溢出的区别 ?

AS有什么工具可以检测内存泄露

性能优化,怎么保证应用启动不卡顿?

黑白屏怎么处理?

强引用置为null,会不会被回收?

ListView跟RecyclerView的区别, ListView的adapter是什么adapter ?

LinearLayout、FrameLayout、RelativeLayout性能对比,为什么?

JNI相关

对JNI是否了解 如何加载NDK库 ?

如何在JNI中注册Native函数,有几种注册方法 ?

你用JNI来实现过什么功能 ?怎么实现的 ?(加密处理、影音方面、图形图像处理)

设计模式相关

你所知道的设计模式有哪些?

谈谈MVC、MVP和MVVM,好在哪里,不好在哪里 ?

封装p层之后.如果p层数据过大,如何解决 是否能从Android中举几个例子说说用到了什么设计模式 ?

装饰模式和代理模式有哪些区别 ?

实现单例模式有几种方法 ?

懒汉式中双层锁的目的是什么 ?两次判空的目的又是什么?

用到的一些开源框架,介绍一个看过源码的,内部实现过程。

Fragment如果在Adapter中使用应该如何解耦?

Android高级开发面试题以及答案整理

下面就是这份足足1296页的“Android高级开发面试题大全”,涵盖了BAT一线大厂高频出现的大部分面试题。

获取方式

Handler相关知识

Handler Looper Message关系是什么?
Messagequeue 的数据结构是什么?为什么要用这个数据结构?
如何在子线程中创建Handler?
Handler post方法原理?
Android消息机制的原理及源码解析
Handler 都没搞懂,拿什么去跳槽啊?
Android Handler消息机制(解惑篇)
Android消息机制
Handler 引起的内存泄露原因以及最佳解决方案
为什么我们能在主线程直接使用Handler,而不需要创建Looper ?
主线程的Looper 不允许退出
Handler 里藏着的Callback 能干什么?
创建Message 实例的最佳方式
子线程里弹Toast 的正确姿势3.7妙用Looper机制

Activity 相关

启动模式以及使用场景?
onNewIntent()和 onConfigurationChanged()
onSaveInstanceState()和 onRestoreInstanceState()
Activity 到底是如何启动的
Activity 到底是如何启动的
zygote是什么?有什么作用?
SystemServer是什么?有什么作用?
它与zygote的关系是什么?
ActivityManagerService是什么?什么时候初始化的?有什么作用?
Launcher是什么?什么时候启动的?
lnstrumentation是什么?和ActivityThread是什么关系?
如何理解AMS和ActivityThread之间的Binder通信?
AMS接收到客户端的请求之后,会如何开启一个Activity?

Fragment、Service相关

Fragment生命周期和Activity对比
Fragment 之间如何进行通信
Fragment的startActivityForResult
Android Fragment完全解析,关于碎片你所需知道的一切
Fragment重叠,如何通信
Fragment回退栈管理
Fragment与Activity通信
Fragment重叠问题

Fragment与ActionBar和Menultem
没有布局的Fragment—保存大量数据
DialogFragment的使用
Fragment的startActivityForResult
FragmentPagerAdapter与FragmentStatePagerAdapter的区
Fragmenti间的数据传递
Activity与Fragment生命周期探讨
Activity注意事项
Fragment生命周期探讨Fragment注意事项
Service进程保活
Service的运行线程(生命周期方法全部在主线程)
Service启动方式以及如何停止
ServiceConnection里面的回调方法运行在哪个线程?
Android进程保活的一般套路
关于Android进程保活,你所知道的一切
保活手段;黑色保活;白色保活;灰色保活;唠叨的分割线
进程回收机制

Android布局优化之ViewStub.include.merge

什么情况下使用ViewStub.include.merge?
他们的原理是什么?
布局优化神器include . merge. ViewStub标签详解
Android布局优化之ViewStub、include.merge使用与源码分析
BroadcastReceiver相关
注册方式,优先级
广播类型,区别
广播的使用场景,原理
Android 广播Broadcast的两种注册方式以及比较
Android四大组件: BroadcastReceiver全面解析定义、作用、应用场景、实现原理、使用流程
自定义广播接收者BroadcastReceiver
广播接收器注册
静态注册5.2.2动态注册
两种注册方式的区别
广播发送者向AMS发送广播
广播的发送、类型
AsyncTask 相关
AsyncTask 是串行还是并行执行?
AsyncTask 的基本用法
分析 AsyncTask 的源码
使用 AsyncTask 的规则

Android 事件分发机制
Android View 绘制流程
Android Window、Activity、 DecorView 以及 ViewRoot
Android 的核心 Binder 多进 程 AIDL
Android 高级必备 : AMS,WMS,PMS
Android ANR
Android内存相关
Android屏幕适配
Android缓存机制
Android 性能优化
Android MVC.MVP、MVVM
Android Gradle知识
RxJava
OKHTTP和Retrofit
图片加载库:Glide

image

最后

我想,可能还有很多人在今年的金三银四春招中保持着观望的形势,害怕自己的能力不够,或者是安于现状,觉得目前拿着目前的月薪觉得能够接受,那么你就要注意了,这是非常危险的!

如果你想在未来能够自我突破,圆梦大厂,那或许以上这份 1296页的“Android高级开发面试题” 应该能够对你的职业发展有所帮助,赶紧扫一扫下方二维码免费获取吧。

猜你喜欢

转载自blog.csdn.net/datian1234/article/details/123407424