2020 年失业后我整理了一份系统的 Android 面试题(含答案)
谈谈对 Synchronized 关键字,类锁,方法锁,重入锁的理解
static synchronized 方法的多线程访问和作用
同一个类里面两个 synchronized 方法,两个线程同时访问的问题
volatile 的原理
谈谈 volatile 关键字的用法
谈谈 volatile 关键字的作用
谈谈 NIO 的理解
synchronized 和 volatile 关键字的区别
synchronized 与 Lock 的区别
ReentrantLock 、synchronized 和 volatile 比较
ReentrantLock 的内部实现
lock 原理
死锁的四个必要条件?
怎么避免死锁?
对象锁和类锁是否会互相影响?
什么是线程池,如何使用?
Java 的并发、多线程、线程模型
谈谈对多线程的理解
多线程有什么要注意的问题?
谈谈你对并发编程的理解并举例说明
谈谈你对多线程同步机制的理解?
如何保证多线程读写文件的安全?
多线程断点续传原理
断点续传的实现
Android 基础知识点
四大组件是什么
四大组件的生命周期和简单用法
Activity 之间的通信方式
Activity 各种情况下的生命周期
横竖屏切换的时候,Activity 各种情况下的生命周期
Activity 与 Fragment 之间生命周期比较
Activity 上有 Dialog 的时候按 Home 键时的生命周期
两个 Activity 之间跳转时必然会执行的是哪几个方法?
前台切换到后台,然后再回到前台,Activity 生命周期回调方法。弹出 Dialog,生命值周期回调方法。
Activity 的四种启动模式对比
Activity 状态保存于恢复
fragment 各种情况下的生命周期
Fragment 状态保存 startActivityForResult 是哪个类的方法,在什么情况下使用?
如何实现 Fragment 的滑动?
fragment 之间传递数据的方式?
Activity 怎么和 Service 绑定?
怎么在 Activity 中启动自己对应的 Service?
service 和 activity 怎么进行数据交互?
Service 的开启方式
请描述一下 Service 的生命周期
谈谈你对 ContentProvider 的理解
说说 ContentProvider、ContentResolver、ContentObserver 之间的关系
请描述一下广播 BroadcastReceiver 的理解
广播的分类
广播使用的方式和场景
在 manifest 和代码中如何注册和使用 BroadcastReceiver?
本地广播和全局广播有什么差别?
BroadcastReceiver,LocalBroadcastReceiver 区别
AlertDialog,popupWindow,Activity 区别
Application 和 Activity 的 Context 对象的区别
Android 属性动画特性
如何导入外部数据库?
LinearLayout、RelativeLayout、FrameLayout 的特性及对比,并介绍使用场景。
谈谈对接口与回调的理解
回调的原理
写一个回调 demo
介绍下 SurfView
RecycleView 的使用
序列化的作用,以及 Android 两种序列化的区别
差值器
估值器
Android 中数据存储方式
Android 源码相关分析
Android 动画框架实现原理
Android 各个版本 API 的区别
Requestlayout,onlayout,onDraw,DrawChild 区别与联系
invalidate 和 postInvalidate 的区别及使用
Activity-Window-View 三者的差别
谈谈对 Volley 的理解
如何优化自定义 View
低版本 SDK 如何实现高版本 api?
描述一次网络请求的流程
HttpUrlConnection 和 okhttp 关系
Bitmap 对象的理解
looper 架构
ActivityThread,AMS,WMS 的工作原理
自定义 View 如何考虑机型适配
自定义 View 的事件
AstncTask+HttpClient 与 AsyncHttpClient 有什么区别?
LaunchMode 应用场景
AsyncTask 如何使用?
SpareArray 原理
请介绍下 ContentProvider 是如何实现数据共享的?
AndroidService 与 Activity 之间通信的几种方式
IntentService 原理及作用是什么?
说说 Activity、Intent、Service 是什么关系
ApplicationContext 和 ActivityContext 的区别
SP 是进程同步的吗?有什么方法做到同步?
谈谈多线程在 Android 中的使用
进程和 Application 的生命周期
封装 View 的时候怎么知道 view 的大小
RecycleView 原理
AndroidManifest 的作用与理解
常见的一些原理性问题
Handler 机制和底层实现
Handler、Thread 和 HandlerThread 的差别
handler 发消息给子线程,looper 怎么启动?
关于 Handler,在任何地方 new Handler 都是什么线程下?
ThreadLocal 原理,实现及如何保证 Local 属性?
请解释下在单线程模型中 Message、Handler、Message Queue、Looper 之间的关系
请描述一下 View 事件传递分发机制
Touch 事件传递流程
事件分发中的 onTouch 和 onTouchEvent 有什么区别,又该如何使用?
View 和 ViewGroup 分别有哪些事件分发相关的回调方法
View 刷新机制
View 绘制流程
自定义控件原理
自定义 View 如何提供获取 View 属性的接口?
Android 代码中实现 WAP 方式联网
AsyncTask 机制
AsyncTask 原理及不足
如何取消 AsyncTask?
为什么不能在子线程更新 UI?
ANR 产生的原因是什么?
ANR 定位和修正
oom 是什么?
什么情况导致 oom?
有什么解决方法可以避免 OOM?
Oom 是否可以 try catch?为什么?
内存泄漏是什么?
什么情况导致内存泄漏?
如何防止线程的内存泄漏?
内存泄露场的解决方法
内存泄漏和内存溢出区别?
LruCache 默认缓存大小
ContentProvider 的权限管理(解答:读写分离,权限控制-精确到表级,URL 控制)
如何通过广播拦截和 abort 一条短信?
广播是否可以请求网络?
广播引起 anr 的时间限制是多少?
计算一个 view 的嵌套层级
Activity 栈
Android 线程有没有上限?
线程池有没有上限?
ListView 重用的是什么?
Android 为什么引入 Parcelable?
有没有尝试简化 Parcelable 的使用?
开发中常见的一些问题
ListView 中图片错位的问题是如何产生的?
混合开发有了解吗?
知道哪些混合开发的方式?说出它们的优缺点和各自使用场景?(解答:比如:RN,weex,H5,小程序,WPA 等。做 Android 的了解一些前端 js 等还是很有好处的);
屏幕适配的处理技巧都有哪些?
服务器只提供数据接收接口,在多线程或多进程条件下,如何保证数据的有序到达?
动态布局的理解
怎么去除重复代码?
画出 Android 的大体架构图
Recycleview 和 ListView 的区别
ListView 图片加载错乱的原理和解决方案
动态权限适配方案,权限组的概念
Android 系统为什么会设计 ContentProvider?
下拉状态栏是不是影响 activity 的生命周期
如果在 onStop 的时候做了网络请求,onResume 的时候怎么恢复?
Bitmap 使用时候注意什么?
Bitmap 的 recycler()
Android 中开启摄像头的主要步骤
ViewPager 使用细节,如何设置成每次只初始化当前的 Fragment,其他的不初始化?
点击事件被拦截,但是想传到下面的 View,如何操作?
微信主页面的实现方式
微信上消息小红点的原理
CAS 介绍(这是阿里巴巴的面试题,我不是很了解,可以参考博客:?[CAS 简介](
))
混合开发面试题
大厂除了技术深度之外,还要求你具备一些广度的知识,比如你要会前端知识,会混合开发,至少会一种脚本语言,C c++更不用说了,也是必会的。
Hybrid 做过吗?
评论