前言
想必现在有许多朋友,都在为即将到来的金三银四做准备,不知道各位朋友是否十足的把握能拿到自己心仪的Offer呢?
下面无偿分享一份包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目,熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率,助大家轻松拿下大厂高薪offer。
一、Handler相关知识
1、Handler Looper Message关系是什么?
2、Messagequeue的数据结构是什么?为什么要用这个数据结构?
3、如何在子线程中创建Handler?
4、Handler post方法原理?
5、Android消息机制的原理及源码解析
6、Handler都没搞懂,拿什么去跳槽啊?
7、Android Handler消息机制(解惑篇)
8、Android 消息机制
二、Activity相关
1、启动模式以及使用场景?
2、Activity 四种启动模式常见使用场景
3、启动模式在实际开发中小插曲
4、Activity 中其他常见问题
5、Activity异常生命周期与应用
6、系统配置改变引起异常;
7、系统回收引起异常
8、Activity异常基础处理
9、Activity到底是如何启动的
10、zygote是什么?有什么作用?
11、SystemServer是什么?有什么作用?它与zygote的关系是什么?
12、ActivityManagerService是什么?什么时候初始化的?有什么作用?
13Launcher是什么?什么时候启动的?
14、Instrumentation是什么?和ActivityThread是什么关系?
15、如何理解AMS和ActivityThread之间的Binder通信?
16、AMS接收到客户端的请求之后,会如何开启一个Activity?
三.Fragment
1、Fragment生命周期和Activity 对比
2、Fragment之间如何进行通信
3、Fragment的startActivityForResult
4、Fragment重叠问题
5、Android Fragment完全解析,关于碎片你所需知道的一切中
6、Fragment重叠,如何通信
7、Fragment回退栈管理
8、Fragment与Activity通信
9、Fragment重叠问题
10、Fragment与ActionBar和Menultem
11、没有布局的Fragment—保存大量数据
12、DialogFragment的使用
13、Fragment的startActivityForResult
14、FragmentPagerAdapter与FragmentStatePagerAdapter的区
15、Fragmenti间的数据传递
16、Activity与Fragment生命周期探讨
四、Service相关
1、进程保活
2、Service的运行线程(生命周期方法全部在主线程)
3、Service启动方式以及如何停止
4、ServiceConnection里面的回调方法运行在哪个线程?
5、Android进程保活的一般套路
- 如何查看进程了解进本信息
- 进程划分
- 内存阀值
- 进程保活方案
6、关于Android进程保活,你所需要知道的一切 - 保活手段
- 黑色保活
- 白色保活
- 灰色保活
- 唠叨的分割线
- 进程回收机制
五、Android布局优化之ViewStub. inelude.merge
1、什么情况下使用ViewStub.include.merge?
2、他们的原理是什么?
3、布局优化神器include . merge. viewStub标签详解
include 标签使用
- 定义要实现(抽取)的layout布局:
- Activity的XML布局文件调用include标签
- Activity中调用include标签layout中的子View
merge 标签使用 - merge 标签使用前后 y Hierarchy r Viewer 截图
ViewStub 标签 - ViewStub标签Demo效果图:
- ViewStub标签使用前后Hierarchy Viewer截图
4、Android布局优化之ViewStub.include. merge使用与源码分析
六、BroadcastReceiver 相关
1、注册方式,优先级
2、广播类型,区别
3、广播的使用场景,原理
4、Android广播Broadcast的两种注册方式静态和动态
- 静态和动态注册方式
- 插入BroadcastReceiver的两种常用类型
- 默认广播下两种注册方式的比较
- 在有序广播下两种注册方式比较
- 接受打电话的广播,程序运行与结束时比较两种注册方式
(1)在未退出Activity时,拨打电话,Log如下:
(2)在退出Activity时,拨打电话,Log如下(即便不解除注册,动态仍无法接受到广播):
5、Android四大组件:BroadcastReceiver史上最全面解析
6、安卓广播的底层实现原理
七、AsyncTask 相关
1、AsyncTask是串行还是并行执行?
2、AsyncTask随着安卓版本的变迁
3、Android AsyncTask完全解析,带你从源码的角度彻底理解
- AsyncTask的基本用法
- 分析AsyncTask的源码
- 关于AsyncTask你所不知道的秘密
4、Android源码分析—带你认识不—样的AsyncTask - 使用AsyncTask的规则
- AsyncTask到底是串行还是并行?源码分析
- 让你的AsyncTask在3.0以上的系统中并行起来
八、Android 事件分发机制
1、onTouch和onTouchEvent区别,调用顺序
2、dispatchTouchEvent,onTouchEvent,onInterceptTouch
3、滑动冲突,如何解决
Android事件分发机制完全解析,带你从源码的角度彻底理解
Android ViewGroup事件分发机制
源码分析
- viewGroup - dispatchTouchEvent - ACTION_DOWN
- ViewGroup - dispatchTouchEvent - ACTION_MOVE
- ViewGroup - dispatchTouchEvent - ACTION_Up
关于拦截 - 如何拦截
- 如何不被拦截
4、如果没有找到合适的子View
讲讲Android的事件分发机制
Activity 的事件分发机制 - ViewGroup的事件分发机制
- View 的事件分发机制
- 再来看看onTouchEvent0
九、Android View 绘制流程
1、简述View绘制流程
2、onMeasure,onlayout,ondraw方法中需要注意的点
3、如何进行自定义View
4、view重绘机制
Android LayoutInflater原理分析,带你一步步深入了解View(一)
Android视图绘制流程完全解析,带你一步步深入了解View(二).
- onMeasure0
- onLayoutO
- onDraw0
Android视图状态及重绘流程分析,带你一步步深入了解View(三) - 视图状态
- 视图重绘
Android自定义View的实现方法,带你一步步深入了解View(四) - 自绘控件
- 组合控件
- 继承控件
十、Android Window、Activity、DecorView 以及 ViewRoot
十一 Android 的核心 Binder 多进程 AIDL
1、常见的IPC 机制以及使用场景
2、为什么安卓要用binder进行跨进程传输
3、多进程带来的问题
4、Android aidl Binder框架浅析
- AIDL的使用
- 分析AIDL生成的代码
- 不依赖AIDL实现程序间通讯
5、Android应用工程师的Binder l原理剖析 - 为什么必须理解Binder ?
- 为什么是 Binder ?
- Linux下传统的进程间通信原理
- Linux下的传统IPC通信原理
- Binder跨进程通信原理
- 动态内核可加载模块&&内存映射.
- Binder IPC实现原理
6、Binder通信模型 - Client/Server/ServiceManagerf驱动
- Binder 通信过程
- Binder通信中的代理模式
- Binder的完整定义
- 手动编码实现跨进程调用
- 各Java类职责描述
- 实现过程讲解
Android 进程间通信 (IPC ) 机制 Binder 简要介绍和学习计划
十二Android 高级必备 :AMS,WMS,PMS
1、Android高级必备:AMS,WMS,PMS
2、从Systemserver到AMS
3、ActivityManagerService 创建过程
4、将SystemServer进程可加到AMS中调度管理
5、创建运行在SystemServer进程中Provider
6、AMs systemReady过程
7、升级相关处理:发送PRE_BOOT_COMPLETED广播
8、收集已经启动的进程并杀死除过persistent进程
9、系统准备好后回调传入的Runnable
10、发送账户启动的广播,涉及多用户
11、启动桌面Home Activity.
12、Android解析ActivityManagerService
13、AMS启动流程和AMS家族
十三、Android ANR
1、为什么会发生ANR?
2、如何定位ANR?
3、如何避免ANR?
4、ANR说明和原因·
5、ANR分析办法
6、造成ANR的原因及解决办法
7、ANR源码分析
8、Service造成的Service Timeout
9、BroadcastReceiver造成的BroadcastQueue Timeout
10、ContentProvider的ContentProvider Timeout
11、Android ANR的信息收集
十四、Android 内存相关
十五、Android 屏幕适配
十六、Android 缓存机制
十七、性能优化
十八、Android MVC、MVP、MVVM
十九、Android Gradle 知识
二十、RxJava
二十一、OKHTTP 和 Retrofit
二十二、Android 图片加载框架最全解析: Glide
最后
ok,终于介绍完了,也是真心希望能帮助到一些同学。资料整理非常不易,可以的话大家点个免费的赞支持一下吧。
祝大家都能在心仪的公司,拿着不错的薪水,开心的写bug~