【Android
前言
如今,Android 开发岗的就业形势逐渐严峻,不像前几年那么热门,但是高级人才依然紧缺。想要在众多面试者中脱颖而出,拿下大厂 offer,就必须全面梳理知识点,扩充题库,并针对面试中可能遇到的关键知识,进行深入分析。
本文是专为 Android 高级工程师准备的面试题及答案帮助大家顺利进阶高级工程师。
一、Activity 相关
1. 启动模式以及使用场景?
2. onNewIntent() 和 onConfigurationChanged()
3. onSaveInstanceState() 和 onRestoreInstanceState()
4. Activity 到底是如何启动的?
- 启动模式以及使用场景
- onSaveInstanceState以及onRestoreInstanceState使用
- onConfigurationChanged使用以及问题解决
- Activity 启动流程解析
二、Service 相关
1. 进程保活
2. Service 的运行线程(生命周期方法全部在主线程)
3. Service启动方式以及如何停止?
4. ServiceConnection里面的回调方法运行在哪个线程?
- startService 和 bingService区别
- 进程保活一般套路
- 关于进程保活你需要知道的一切
三、 BroadcastReceiver 相关
1. 注册方式,优先级
2. 广播类型,区别
3. 广播的使用场景,原理
- Android广播动态静态注册
- 常见使用以及流程解析
- 广播源码解析
四、Handler 相关
1. Handler Looper Message 关系是什么?
2. Messagequeue 的数据结构是什么?为什么要用这个数据结构?
3. 如何在子线程中创建 Handler?
4. Handler post 方法原理?
5. ThreadLocal 必备
- Android消息机制的原理及源码解析
- Handler 都没搞懂,拿什么去跳槽啊?
- Android Handler 消息机制(解惑篇)
- Android 消息机制
- Android的消息机制之ThreadLocal的工作原理
五、Fragment 相关
1. Fragment 生命周期和 Activity 对比?
2. Fragment 之间如何进行通信
3. Fragment 的 startActivityForResult
4. Fragment 重叠问题
- Fragment 初探
- Fragment 重叠, 如何通信
- Fragment生命周期
六、Android 布局优化之 viewStub、include、merge
1. 什么情况下使用 ViewStub、include、merge?
2. 他们的原理是什么?
- ViewStub、include、merge概念解析
- Android布局优化之ViewStub、include、merge使用与源码分析
七、AsyncTask 相关
1. AsyncTask 是串行还是并行执行?
2. AsyncTask 随着安卓版本的变迁?
- AsyncTask 完全解析
- 串行还是并行
八、Android 事件分发机制
1. onTouch 和 onTouchEvent 区别,调用顺序?
2. dispatchTouchEvent, onTouchEvent, onInterceptTouchEvent 方法顺序以及使用场景?
3. 滑动冲突,如何解决?
- 事件分发机制
- 事件分发解析
- dispatchTouchEvent, onTouchEvent, onInterceptTouchEvent方法的使用场景解析
九、Android View 绘制流程
1. 简述 View 绘制流程?
2. onMeasure, onlayout, ondraw方法中需要注意的点
3. 如何进行自定义 View
4. view 重绘机制
- Android LayoutInflater原理分析,带你一步步深入了解View(一)
- Android视图状态及重绘流程分析,带你一步步深入了解View(二)
- Android视图状态及重绘流程分析,带你一步步深入了解View(三)
- Android自定义View的实现方法,带你一步步深入了解View(四)
十、Android Window、Activity、DecorView 以及 ViewRoot
- Window、Activity、DecorView 以及 ViewRoot 之间的关系
十一、 Android 的核心 Binder 多进程 AIDL
1. 常见的 IPC 机制以及使用场景
2. 为什么安卓要用 binder 进行跨进程传输?
3. 多进程带来的问题?
- AIDL 使用浅析
- binder 原理解析
- binder 最底层解析
- 多进程通信方式以及带来的问题
- 多进程通信方式对比
十二、Android 高级必备 :AMS, WMS, PMS
1. AMS,WMS,PMS 创建过程
- AMS,WMS,PMS全解析
- AMS启动流程
- WindowManagerService启动过程解析
- PMS 启动流程解析
十三、Android ANR
1. 为什么会发生 ANR?
2. 如何定位 ANR?
3. 如何避免 ANR?
- 什么是 ANR
- 如何避免以及分析方法
- Android 性能优化之 ANR 详解
十四、Android 内存相关
1. 什么情况下会内存泄漏?
2. 如何防止内存泄漏?
- 内存泄漏和溢出的区别
- OOM 概念以及安卓内存管理机制
- 内存泄漏的可能性
- 防止内存泄漏的方法
十五、Android 屏幕适配
1. 屏幕适配相关名词解析
2. 现在流行的屏幕适配方式
- 屏幕适配名词以及概念解析
- 今日头条技术适配方案
十六、Android 缓存机制
1. LruCache 使用极其原理
- Android缓存机制
- LruCache使用极其原理述
十七、Android 性能优化
1. 如何进行 内存 cpu 耗电 的定位以及优化
2. 性能优化经常使用的方法
3. 如何避免 UI 卡顿
- 性能优化全解析,工具使用
- 性能优化最佳实践
- 知乎高赞文章
十八、MVC、MVP、MVVM
- 设计模式选择
十九、Android Gradle 知识
这两篇官方文章
- 必须贴一下官方文档:配置构建
- Gradle 提示与诀窍
Gradle插件 了解就好
-
Gradle 自定义插件方式
-
全面理解Gradle - 执行时序
-
Gradle系列一
-
Gradle系列二
-
Gradle系列三
二十、RxJava
使用过程,特点,原理解析
- RxJava 名词以及如何使用
- Rxjava 观察者模式原理解析
- Rxjava订阅流程,线程切换,源码分析 系列
二十一、OKHTTP 和 Retrofit
- OKHTTP完整解析
- Retrofit使用流程,机制详解
- 从 HTTP 到 Retrofit
- Retrofit是如何工作的
二十二、最流行图片加载库: Glide
郭神系列 Glide 分析
- Android图片加载框架最全解析(一),Glide的基本用法
- Android图片加载框架最全解析(二),从源码的角度理解Glide的执行流程
- Android图片加载框架最全解析(三),深入探究Glide的缓存机制
- Android图片加载框架最全解析(四),玩转Glide的回调与监听
- Android图片加载框架最全解析(五),Glide强大的图片变换功能
- Android图片加载框架最全解析(六),探究Glide的自定义模块功能
- Android图片加载框架最全解析(七),实现带进度的Glide图片加载功能
- Android图片加载框架最全解析(八),带你全面了解Glide 4的用法
二十三、Android 组件化与插件化
1. 为什么要用组件化?
2. 组件之间如何通信?
3. 组件之间如何跳转?
-
Android 插件化和热修复知识梳理
-
为什么要用组件化
-
1、Android彻底组件化方案实践
-
2、Android彻底组件化demo发布
-
3、Android彻底组件化-代码和资源隔离
-
4、Android彻底组件化—UI跳转升级改造
-
5、Android彻底组件化—如何使用Arouter
-
插件化框架历史
-
深入理解Android插件化技术
-
Android 插件化和热修复知识梳理
二十四、Flutter 与 RN
- Flutter原理
- Flutter KO React Native? 让时间去决定吧…
- 如何评价 React Native?
二十五、面试常问的点
除了上面整理的安卓高级技术问题,还有一些面试官喜欢问的点,大家针对准备回答:
- 你在项目中遇到最难得点是什么?如何解决的?
- 平时遇到问题了是如何解决的?比较好的回答: 官方文档一定要看,通过源码解决问题,然后才是搜索引擎以及和同事讨论
- 你最近做的 APP 是如何架构的?为什么要这样架构?
- 平时怎么进行技术进阶,如何学习?
- 你觉得自己处于什么技术水平?
- 你的技术优势是什么?
- 用过什么开源技术?它的原理是什么?看过它的源码么? 这里建议看上面 Glide 相关
- 如何设计一个框架?能不能回答上直接判断你的技术等级
【Android
前言
如今,Android 开发岗的就业形势逐渐严峻,不像前几年那么热门,但是高级人才依然紧缺。想要在众多面试者中脱颖而出,拿下大厂 offer,就必须全面梳理知识点,扩充题库,并针对面试中可能遇到的关键知识,进行深入分析。
本文是专为 Android 高级工程师准备的面试题及答案帮助大家顺利进阶高级工程师。
一、Activity 相关
1. 启动模式以及使用场景?
2. onNewIntent() 和 onConfigurationChanged()
3. onSaveInstanceState() 和 onRestoreInstanceState()
4. Activity 到底是如何启动的?
- 启动模式以及使用场景
- onSaveInstanceState以及onRestoreInstanceState使用
- onConfigurationChanged使用以及问题解决
- Activity 启动流程解析
二、Service 相关
1. 进程保活
2. Service 的运行线程(生命周期方法全部在主线程)
3. Service启动方式以及如何停止?
4. ServiceConnection里面的回调方法运行在哪个线程?
- startService 和 bingService区别
- 进程保活一般套路
- 关于进程保活你需要知道的一切
三、 BroadcastReceiver 相关
1. 注册方式,优先级
2. 广播类型,区别
3. 广播的使用场景,原理
- Android广播动态静态注册
- 常见使用以及流程解析
- 广播源码解析
四、Handler 相关
1. Handler Looper Message 关系是什么?
2. Messagequeue 的数据结构是什么?为什么要用这个数据结构?
3. 如何在子线程中创建 Handler?
4. Handler post 方法原理?
5. ThreadLocal 必备
- Android消息机制的原理及源码解析
- Handler 都没搞懂,拿什么去跳槽啊?
- Android Handler 消息机制(解惑篇)
- Android 消息机制
- Android的消息机制之ThreadLocal的工作原理
五、Fragment 相关
1. Fragment 生命周期和 Activity 对比?
2. Fragment 之间如何进行通信
3. Fragment 的 startActivityForResult
4. Fragment 重叠问题
- Fragment 初探
- Fragment 重叠, 如何通信
- Fragment生命周期
六、Android 布局优化之 viewStub、include、merge
1. 什么情况下使用 ViewStub、include、merge?
2. 他们的原理是什么?
- ViewStub、include、merge概念解析
- Android布局优化之ViewStub、include、merge使用与源码分析
七、AsyncTask 相关
1. AsyncTask 是串行还是并行执行?
2. AsyncTask 随着安卓版本的变迁?
- AsyncTask 完全解析
- 串行还是并行
八、Android 事件分发机制
1. onTouch 和 onTouchEvent 区别,调用顺序?
2. dispatchTouchEvent, onTouchEvent, onInterceptTouchEvent 方法顺序以及使用场景?
3. 滑动冲突,如何解决?
- 事件分发机制
- 事件分发解析
- dispatchTouchEvent, onTouchEvent, onInterceptTouchEvent方法的使用场景解析
九、Android View 绘制流程
1. 简述 View 绘制流程?
2. onMeasure, onlayout, ondraw方法中需要注意的点
3. 如何进行自定义 View
4. view 重绘机制
- Android LayoutInflater原理分析,带你一步步深入了解View(一)
- Android视图状态及重绘流程分析,带你一步步深入了解View(二)
- Android视图状态及重绘流程分析,带你一步步深入了解View(三)
- Android自定义View的实现方法,带你一步步深入了解View(四)
十、Android Window、Activity、DecorView 以及 ViewRoot
- Window、Activity、DecorView 以及 ViewRoot 之间的关系
十一、 Android 的核心 Binder 多进程 AIDL
1. 常见的 IPC 机制以及使用场景
2. 为什么安卓要用 binder 进行跨进程传输?
3. 多进程带来的问题?
- AIDL 使用浅析
- binder 原理解析
- binder 最底层解析
- 多进程通信方式以及带来的问题
- 多进程通信方式对比
十二、Android 高级必备 :AMS, WMS, PMS
1. AMS,WMS,PMS 创建过程
- AMS,WMS,PMS全解析
- AMS启动流程
- WindowManagerService启动过程解析
- PMS 启动流程解析
十三、Android ANR
1. 为什么会发生 ANR?
2. 如何定位 ANR?
3. 如何避免 ANR?
- 什么是 ANR
- 如何避免以及分析方法
- Android 性能优化之 ANR 详解
十四、Android 内存相关
1. 什么情况下会内存泄漏?
2. 如何防止内存泄漏?
- 内存泄漏和溢出的区别
- OOM 概念以及安卓内存管理机制
- 内存泄漏的可能性
- 防止内存泄漏的方法
十五、Android 屏幕适配
1. 屏幕适配相关名词解析
2. 现在流行的屏幕适配方式
- 屏幕适配名词以及概念解析
- 今日头条技术适配方案
十六、Android 缓存机制
1. LruCache 使用极其原理
- Android缓存机制
- LruCache使用极其原理述
十七、Android 性能优化
1. 如何进行 内存 cpu 耗电 的定位以及优化
2. 性能优化经常使用的方法
3. 如何避免 UI 卡顿
- 性能优化全解析,工具使用
- 性能优化最佳实践
- 知乎高赞文章
十八、MVC、MVP、MVVM
- 设计模式选择
十九、Android Gradle 知识
这两篇官方文章
- 必须贴一下官方文档:配置构建
- Gradle 提示与诀窍
Gradle插件 了解就好
-
Gradle 自定义插件方式
-
全面理解Gradle - 执行时序
-
Gradle系列一
-
Gradle系列二
-
Gradle系列三
二十、RxJava
使用过程,特点,原理解析
- RxJava 名词以及如何使用
- Rxjava 观察者模式原理解析
- Rxjava订阅流程,线程切换,源码分析 系列
二十一、OKHTTP 和 Retrofit
- OKHTTP完整解析
- Retrofit使用流程,机制详解
- 从 HTTP 到 Retrofit
- Retrofit是如何工作的
二十二、最流行图片加载库: Glide
郭神系列 Glide 分析
- Android图片加载框架最全解析(一),Glide的基本用法
- Android图片加载框架最全解析(二),从源码的角度理解Glide的执行流程
- Android图片加载框架最全解析(三),深入探究Glide的缓存机制
- Android图片加载框架最全解析(四),玩转Glide的回调与监听
- Android图片加载框架最全解析(五),Glide强大的图片变换功能
- Android图片加载框架最全解析(六),探究Glide的自定义模块功能
- Android图片加载框架最全解析(七),实现带进度的Glide图片加载功能
- Android图片加载框架最全解析(八),带你全面了解Glide 4的用法
二十三、Android 组件化与插件化
1. 为什么要用组件化?
2. 组件之间如何通信?
3. 组件之间如何跳转?
-
Android 插件化和热修复知识梳理
-
为什么要用组件化
-
1、Android彻底组件化方案实践
-
2、Android彻底组件化demo发布
-
3、Android彻底组件化-代码和资源隔离
-
4、Android彻底组件化—UI跳转升级改造
-
5、Android彻底组件化—如何使用Arouter
-
插件化框架历史
-
深入理解Android插件化技术
-
Android 插件化和热修复知识梳理
二十四、Flutter 与 RN
- Flutter原理
- Flutter KO React Native? 让时间去决定吧…
- 如何评价 React Native?
二十五、面试常问的点
除了上面整理的安卓高级技术问题,还有一些面试官喜欢问的点,大家针对准备回答:
- 你在项目中遇到最难得点是什么?如何解决的?
- 平时遇到问题了是如何解决的?比较好的回答: 官方文档一定要看,通过源码解决问题,然后才是搜索引擎以及和同事讨论
- 你最近做的 APP 是如何架构的?为什么要这样架构?
- 平时怎么进行技术进阶,如何学习?
- 你觉得自己处于什么技术水平?
- 你的技术优势是什么?
- 用过什么开源技术?它的原理是什么?看过它的源码么? 这里建议看上面 Glide 相关
- 如何设计一个框架?能不能回答上直接判断你的技术等级