如今安卓开发不像前几年那么热门,但是高级人才依然紧缺,大家看着这句话是不是很熟悉,因为 web 高级人才也紧缺,c++ 高级人才一样紧缺,那么到了人工智能时代,人工智能时代的高级人才也同样会紧缺!似乎是高级人才的人在其他领域也是高级人才,而不是因为选择了热门才会一帆风顺。
网上高级工程师面试相关文章鱼龙混杂,要么一堆内容,要么内容质量太浅, 鉴于此我整理了如下安卓开发高级工程师面试题以及答案帮助大家顺利进阶为高级工程师,目前我就职于某大厂安卓高级工程师职位,在当下大环境下也想为安卓工程师出一份力,通过我的技术经验整理了面试经常问的题,答案部分会是一篇文章或者几篇文章,都是我认真看过并且觉得不错才整理出来,大家知道高级工程师不会像刚入门那样被问的问题一句话两句话就能表述清楚,所以我通过过滤好文章来帮助大家理解,进入正题:
常问的点:
-
Handler Looper Message 关系是什么?
-
Messagequeue 的数据结构是什么?为什么要用这个数据结构?
-
如何在子线程中创建 Handler?
-
Handler post 方法原理?
-
ThreadLocal 必备
-
Android消息机制的原理及源码解析 源码角度完整解析
-
Android 消息机制 郭神的文章
-
启动模式以及使用场景?
-
onNewIntent()和onConfigurationChanged()
-
onSaveInstanceState()和onRestoreInstanceState()
-
Activity 到底是如何启动的
-
启动模式以及使用场景 详细的解释场景并且以及一些坑
-
onConfigurationChanged使用以及问题解决 全面得描述了各种情况
-
Fragment 生命周期和 Activity 对比
-
Fragment 之间如何进行通信
-
Fragment的startActivityForResult
-
Fragment重叠问题
-
**进程保活
-
Service的运行线程(生命周期方法全部在主线程)
-
Service启动方式以及如何停止
-
ServiceConnection里面的回调方法运行在哪个线程?
** -
startService 和 bingService区别 完整讲解了它们之间得区别
-
进程保活一般套路 把进程保活手段都讲了一遍
-
关于进程保活你需要知道的一切 10万+ 关于进程保活得文章
-
什么情况下使用 ViewStub、include、merge?
-
他们的原理是什么?
-
注册方式,优先级
-
广播类型,区别
-
广播的使用场景,原理
-
Android广播动态静态注册 通俗易懂
-
AsyncTask是串行还是并行执行?
-
AsyncTask随着安卓版本的变迁
-
AsyncTask完全解析 郭神的文章 一篇足够 从使用到源码
-
onTouch和onTouchEvent区别,调用顺序
-
dispatchTouchEvent, onTouchEvent, onInterceptTouchEvent 方法顺序以及使用场景
-
滑动冲突,如何解决
-
事件分发机制 郭神出品
-
事件分发解析 鸿洋出品
-
dispatchTouchEvent, onTouchEvent, onInterceptTouchEvent方法的使用场景解析
-
简述 View 绘制流程
-
onMeasure, onlayout, ondraw方法中需要注意的点
-
如何进行自定义 View
-
view 重绘机制
-
Android自定义View的实现方法,带你一步步深入了解View(四)
别问我为什么推荐这么多郭神的文章,因为我是看着郭神的文章长大的!
-
常见的 IPC 机制以及使用场景
-
为什么安卓要用 binder 进行跨进程传输
-
多进程带来的问题
-
binder 原理解析 真的不错
-
binder 最底层解析 很难理解,我看了几遍还是了解一个大概
## Android 高级必备 :AMS,WMS,PMS
这部分真的复杂!
- [ ] AMS,WMS,PMS 创建过程
-
为什么会发生 ANR?
-
如何定位 ANR?
-
如何避免 ANR?
注意:内存泄漏和内存溢出是 2 个概念
-
什么情况下会内存泄漏?
-
如何防止内存泄漏?
-
屏幕适配相关名词解析
-
现在流行的屏幕适配方式
-
LruCache使用极其原理
- 如何进行 内存 cpu 耗电 的定位以及优化
- 性能优化经常使用的方法
- 如何避免 UI 卡顿
我正在看极客时间的Android开发高手课,里面的性能优化文章不错
- 好几种我该选择哪个?优劣点
任玉刚的文章:
这俩篇官方文章基础的够用了
Gradle插件 了解就好
使用过程,特点,原理解析
郭神系列 Glide 分析
- Android图片加载框架最全解析(一),Glide的基本用法
- Android图片加载框架最全解析(二),从源码的角度理解Glide的执行流程
- Android图片加载框架最全解析(三),深入探究Glide的缓存机制
- Android图片加载框架最全解析(四),玩转Glide的回调与监听
- Android图片加载框架最全解析(五),Glide强大的图片变换功能
- Android图片加载框架最全解析(六),探究Glide的自定义模块功能
- Android图片加载框架最全解析(七),实现带进度的Glide图片加载功能
- Android图片加载框架最全解析(八),带你全面了解Glide 4的用法
业务大了代码多了会用到。
-
为什么要用组件化?
-
组件之间如何通信?
-
组件之间如何跳转?
-
深入理解Android插件化技术 阿里插件化技术
除了上面整理的安卓高级技术问题,还有一些面试官喜欢问的点,大家针对准备回答:
- 你在项目中遇到最难得点是什么?如何解决的?
- 平时遇到问题了是如何解决的?比较好的回答: 官方文档一定要看,通过源码解决问题,然后才是搜索引擎以及和同事讨论
- 你最近做的 APP 是如何架构的?为什么要这样架构?
- 平时怎么进行技术进阶,如何学习?
- 你觉得自己处于什么技术水平?
- 你的技术优势是什么?
- 用过什么开源技术?它的原理是什么?看过它的源码么? 这里建议看上面 Glide 相关
- 如何设计一个框架?能不能回答上直接判断你的技术等级