这是一份全面 & 详细的Android面试指南

共 10893字,需浏览 22分钟

 ·

2022-06-10 14:22


前言

最近裁员消息不断、经济行情不好,十分多读者、粉丝私聊我咨询面试的相关内容,于是整理了一个系列专题:Carson带你Android面试

面试题答案都附在文末,强烈建议收藏再看:在手机端上看面试题、再在pc端上看答案!

面试考察点

  • • 四大组件

  • • 常见使用

  • • 多线程

  • • 自定义View

  • • 性能优化

  • • 常用开源框架

  • • 新型技术

下面将给出具体内容 & 详细讲解。


1. 四大组件

  • • 在Android开发中,四大组件的使用十分常见,也是面试的常问知识点

  • • 四大组件包括:ActivityServiceBroadcastReceiverContentProvider

示意图

主要考察的内容包括:

  • • Activity:生命周期、启动模式 & 方式 & 过程、加速启动 、IntentFilter匹配规则、卡顿原因、状态保存(缓存方式)[1]

  • • Broadcast:注册广播的两种方式.[2]

  • • ContentProvider:具体使用、Intent、Binder[3]

  • • Service:简介、生命周期、IntentService、保活(含进程保活)[4]

关于四大组件的相关内容文章,都可以从我的文集找到:Carson带你学:四大组件[5]


2. 多线程

此处涵盖了Android所有多线程、异步通信的内容,主要包括:

  • • Handler:使用、机制、原理[6]

  • • AsyncTask:原理 & 使用[7]

  • • HandlerThread:原理、特点 & 使用[8]

  • • IntentService:原理、特点 & 使用[9]

  • • 多线程使用场景 & 特点(继承Thread类 / 实现Runnable、AsycTask、IntentService、HandlerThread)[10]

关于多线程的相关内容文章,都可以从我的文集找到:Carson带你学:异步-多线程[11]


3. 常见使用

此处涵盖Android日常开发中的常见使用,主要包括:

  • • Android进程类型 & 优先级[12]

  • • ListView:原理、优化 [13]

  • • RecyclerView:下拉加载 & 上拉更新[14]

  • • 软引用、弱引用的应用场景[15]

  • • 五种数据存储形式[16]

  • • 文件缓存方法:内存缓存、硬盘缓存、数据库缓存(SQLite)、文件缓存[17]

  • • 长连接、心跳、推送[18]

  • • 六种布局特点 & 对比[19]

  • • Sqlite的基本操作[20]

  • • Asset目录 与 res:raw,res:drawable目录的区别[21]

  • • Parcelable、Serializable的简介 & 区别[22]

  • • App的启动流程[23]

  • • Zygote进程启动过程[24]

  • • 一键退出App[25]

  • • 为什么不能在子线程操作UI[26]

关于Android常见使用的相关内容文章,都可以从我的文集找到:Carson带你学:Android使用技巧[27]


4. 自定义View

自定义View是 Android 进阶中的重要内容,具体内容包括:

  • • 自定义View基础[28]

  • • 自定义View流程及特点:Measure过程、Layout过程、Draw过程[29]

  • • 事件分发机制流程及原理[30]

  • • 动画类型(补间、逐帧 & 属性动画) & 特点[31]

  • • Window、Activity、DecorView 和 ViewRoot的关系[32]

关于Android自定义View的相关内容文章,都可以从我的文集找到:Carson带你学:自定义View[33]


5. 性能优化

如何让你的App更快、更稳、更省?具体请看性能优化系列文章:

  • • 如何全面进行性能优化[34]

  • • Android性能优化:布局优化(含< include >、< Viewstub >、< merge >)[35]

  • • Android性能优化:内存泄露[36]

  • • Android性能优化:内存优化[37]

  • • Android性能优化:Bitmap图片资源优化[38]

  • • Android性能优化:绘制优化[39]

关于Android自定义View的相关内容文章,都可以从我的文集找到:Carson带你学:自定义View[40]


6. 开源框架

当前Android比较热门的开源框架 & 原理,主要包括:图片加载框架、网络请求框架、效率开发框架等。

6.1 图片加载框架

  • • Universal-Image-Loader

  • • Picasso

  • • Fresco

  • • Glide

具体介绍请参考文章:图片加载开源框架对比:UIL、Glide、Picasso、Fresco[41]

6.2 网络请求框架

  • • Android-Async-Http

  • • Volley

  • • OkHttp

  • • Retrofit

具体介绍请参考文章:网络请求框架对比:Android-Async-Http、Volley、Okhttp、Retrofit[42]

6.3 效率开发框架

本人比较推荐:流式处理框架RxJava,具体请看文章系列:Carson带你学:RxJava[43]


7. 新型技术

Android的不断发展中,会不断冒出新技术,此处主要包括:

  • • 新语言开发:Kotlin使用、特点[44]

  • • Native:NDK与JNI[45]

  • • 跨平台开发:Flutter[46]

  • • 响应式UI开发框架:Jetpack Compose[47]

  • • 插件化:设计原理及应用[48]

  • • 架设设计:MVC、MVP、MVVM[49]

  • • 热补丁修复:设计原理及常见应用[50]


至此,关于Android面试的Android语言篇讲解完毕。上述面试题的答案如下:

引用链接(面试题答案)

[1] Activity:生命周期、启动模式 & 方式 & 过程、加速启动 、IntentFilter匹配规则、卡顿原因、状态保存(缓存方式): https://github.com/Carson-Ho/AndroidLearning/blob/master/Material/Android/%E5%9B%9B%E5%A4%A7%E7%BB%84%E4%BB%B6/Activity%E7%9B%B8%E5%85%B3%EF%BC%9A%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F%E3%80%81%E5%90%AF%E5%8A%A8%E6%A8%A1%E5%BC%8F%20%26%20%E6%96%B9%E5%BC%8F%E3%80%81IntentFilter%E5%8C%B9%E9%85%8D%E8%A7%84%E5%88%99%E3%80%81%E5%90%AF%E5%8A%A8%E8%BF%87%E7%A8%8B%E3%80%81%E5%8D%A1%E9%A1%BF%E5%8E%9F%E5%9B%A0%E3%80%81%E5%8A%A0%E9%80%9F%E5%90%AF%E5%8A%A8%E3%80%81%E7%8A%B6%E6%80%81%E4%BF%9D%E5%AD%98%EF%BC%88%E7%BC%93%E5%AD%98%E6%96%B9%E5%BC%8F%EF%BC%89%26%20Activity%20%E8%B0%83%E7%94%A8Fragment.md
[2] Broadcast:注册广播的两种方式.: https://github.com/Carson-Ho/AndroidInterview/blob/master/Material/Android/%E5%9B%9B%E5%A4%A7%E7%BB%84%E4%BB%B6/Broadcast%EF%BC%9A%E6%B3%A8%E5%86%8C%E5%B9%BF%E6%92%AD%E7%9A%84%E4%B8%A4%E7%A7%8D%E6%96%B9%E5%BC%8F.md
[3] ContentProvider:具体使用、Intent、Binder: https://github.com/Carson-Ho/AndroidLearning/blob/master/Material/Android/%E5%9B%9B%E5%A4%A7%E7%BB%84%E4%BB%B6/ContentProvider%EF%BC%9A%E4%BD%BF%E7%94%A8%E3%80%81Intent%E3%80%81Binder.md
[4] Service:简介、生命周期、IntentService、保活(含进程保活): https://github.com/Carson-Ho/AndroidInterview/blob/master/Material/Android/%E5%9B%9B%E5%A4%A7%E7%BB%84%E4%BB%B6/Service%EF%BC%9A%E7%AE%80%E4%BB%8B%E3%80%81%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F%E3%80%81IntentService.md
[5] Carson带你学:四大组件: https://blog.csdn.net/carson_ho/category_5959547.html?spm=1001.2014.3001.5482
[6] Handler:使用、机制、原理: https://blog.csdn.net/carson_ho/article/details/51290360
[7] AsyncTask:原理 & 使用: https://github.com/Carson-Ho/AndroidInterview/blob/master/Material/Android/%E5%A4%9A%E7%BA%BF%E7%A8%8B/AsyncTask%EF%BC%9A%E5%8E%9F%E7%90%86%20%26%20%E4%BD%BF%E7%94%A8.md
[8] HandlerThread:原理、特点 & 使用: https://blog.csdn.net/carson_ho/article/details/52693418
[9] IntentService:原理、特点 & 使用: https://blog.csdn.net/carson_ho/article/details/53407806
[10] 多线程使用场景 & 特点(继承Thread类 / 实现Runnable、AsycTask、IntentService、HandlerThread): https://github.com/Carson-Ho/AndroidInterview/blob/master/Material/Android/%E5%A4%9A%E7%BA%BF%E7%A8%8B/%E7%BB%A7%E6%89%BFThread%E7%B1%BB%20:%20%E5%AE%9E%E7%8E%B0Runnable%E3%80%81AsycTask%E3%80%81IntentService%E3%80%81HandlerThread%E7%9A%84%E4%BD%BF%E7%94%A8%E5%9C%BA%E6%99%AF%E4%B8%8E%E7%89%B9%E7%82%B9.md
[11] Carson带你学:异步-多线程: https://www.jianshu.com/nb/6977014
[12] Android进程类型 & 优先级: https://github.com/Carson-Ho/AndroidLearning/blob/master/Material/Android/%E5%9F%BA%E7%A1%80%E4%BD%BF%E7%94%A8/Android%E8%BF%9B%E7%A8%8B%E7%B1%BB%E5%9E%8B.md
[13] ListView:原理、优化 : https://github.com/Carson-Ho/AndroidLearning/blob/master/Material/Android/%E5%9F%BA%E7%A1%80%E4%BD%BF%E7%94%A8/ListView%E7%9A%84%E5%8E%9F%E7%90%86%E3%80%81%E4%BC%98%E5%8C%96%20%26%20RecyclerView.md
[14] RecyclerView:下拉加载 & 上拉更新: https://github.com/Carson-Ho/AndroidLearning/blob/master/Material/Android/%E5%9F%BA%E7%A1%80%E4%BD%BF%E7%94%A8/ListView%E7%9A%84%E5%8E%9F%E7%90%86%E3%80%81%E4%BC%98%E5%8C%96%20%26%20RecyclerView.md
[15] 软引用、弱引用的应用场景: https://github.com/Carson-Ho/AndroidInterview/blob/master/Material/Android/%E5%9F%BA%E7%A1%80%E4%BD%BF%E7%94%A8/%E8%BD%AF%E5%BC%95%E7%94%A8%E3%80%81%E5%BC%B1%E5%BC%95%E7%94%A8%E7%9A%84%E5%BA%94%E7%94%A8%E5%9C%BA%E6%99%AF.md
[16] 五种数据存储形式: https://github.com/Carson-Ho/AndroidInterview/blob/master/Material/Android/%E5%9F%BA%E7%A1%80%E4%BD%BF%E7%94%A8/5%E7%A7%8D%E6%95%B0%E6%8D%AE%E5%AD%98%E5%82%A8%E5%BD%A2%E5%BC%8F.md
[17] 文件缓存方法:内存缓存、硬盘缓存、数据库缓存(SQLite)、文件缓存: https://github.com/Carson-Ho/AndroidInterview/blob/master/Material/Android/%E5%9F%BA%E7%A1%80%E4%BD%BF%E7%94%A8/%E6%96%87%E4%BB%B6%E7%BC%93%E5%AD%98%E6%96%B9%E6%B3%95%EF%BC%9A%E5%86%85%E5%AD%98%E7%BC%93%E5%AD%98%20%3E%20%E7%A1%AC%E7%9B%98%E7%BC%93%E5%AD%98%20%3E%20%E6%95%B0%E6%8D%AE%E5%BA%93%E7%BC%93%E5%AD%98%EF%BC%88SQLite%EF%BC%89%20%3E%20%E6%96%87%E4%BB%B6%E7%BC%93%E5%AD%98.md
[18] 长连接、心跳、推送: https://github.com/Carson-Ho/AndroidInterview/blob/master/Material/Android/%E5%9F%BA%E7%A1%80%E4%BD%BF%E7%94%A8/%E9%95%BF%E8%BF%9E%E6%8E%A5%E3%80%81%E5%BF%83%E8%B7%B3%E3%80%81%E6%8E%A8%E9%80%81.md
[19] 六种布局特点 & 对比: https://blog.csdn.net/carson_ho/article/details/51719519
[20] Sqlite的基本操作: https://blog.csdn.net/carson_ho/article/details/53241633
[21] Asset目录 与 res:raw,res:drawable目录的区别: https://github.com/Carson-Ho/AndroidLearning/blob/master/Material/Android/%E5%9F%BA%E7%A1%80%E4%BD%BF%E7%94%A8/Asset%E7%9B%AE%E5%BD%95%20%E4%B8%8E%20res:raw%E3%80%81res:drawable%E7%9B%AE%E5%BD%95%E7%9A%84%E5%8C%BA%E5%88%AB.md
[22] Parcelable、Serializable的简介 & 区别: https://github.com/Carson-Ho/AndroidInterview/blob/master/Material/Android/%E5%9F%BA%E7%A1%80%E4%BD%BF%E7%94%A8/Parcelable%E3%80%81Serializable%E7%9A%84%E7%AE%80%E4%BB%8B%20%26%20%E5%8C%BA%E5%88%AB.md
[23] App的启动流程: https://github.com/Carson-Ho/AndroidInterview/blob/master/Material/Android/%E5%85%B6%E4%BB%96/App%E7%9A%84%E5%90%AF%E5%8A%A8%E6%B5%81%E7%A8%8B.md
[24] Zygote进程启动过程: https://github.com/Carson-Ho/AndroidInterview/blob/master/Material/Android/%E5%85%B6%E4%BB%96/Zygote%E8%BF%9B%E7%A8%8B%E5%90%AF%E5%8A%A8%E8%BF%87%E7%A8%8B.md
[25] 一键退出App: https://blog.csdn.net/carson_ho/article/details/76602405
[26] 为什么不能在子线程操作UI: https://github.com/Carson-Ho/AndroidInterview/blob/master/Material/Android/%E5%85%B6%E4%BB%96/%E4%B8%BA%E4%BB%80%E4%B9%88%E4%B8%8D%E8%83%BD%E5%9C%A8%E5%AD%90%E7%BA%BF%E7%A8%8B%E6%93%8D%E4%BD%9CUI.md
[27] Carson带你学:Android使用技巧: https://blog.csdn.net/carson_ho/category_6260188.html?spm=1001.2014.3001.5482
[28] 自定义View基础: http://blog.csdn.net/carson_ho/article/details/56009827
[29] 自定义View流程及特点:Measure过程、Layout过程、Draw过程: https://www.jianshu.com/p/e79a55c141d6
[30] 事件分发机制流程及原理: https://blog.csdn.net/carson_ho/article/details/54136311
[31] 动画类型(补间、逐帧 & 属性动画) & 特点: https://blog.csdn.net/carson_ho/article/details/79860980
[32] Window、Activity、DecorView 和 ViewRoot的关系: https://www.jianshu.com/p/28d396a0f05f
[33] Carson带你学:自定义View: https://carsonho.blog.csdn.net/article/details/98477394
[34] 如何全面进行性能优化: https://carsonho.blog.csdn.net/article/details/79708444
[35] Android性能优化:布局优化(含< include >、< Viewstub >、< merge >): https://carsonho.blog.csdn.net/article/details/120412426
[36] Android性能优化:内存泄露: https://carsonho.blog.csdn.net/article/details/79407707
[37] Android性能优化:内存优化: https://carsonho.blog.csdn.net/article/details/79549417
[38] Android性能优化:Bitmap图片资源优化: https://carsonho.blog.csdn.net/article/details/79549382
[39] Android性能优化:绘制优化: https://carsonho.blog.csdn.net/article/details/79674623
[40] Carson带你学:自定义View: https://blog.csdn.net/carson_ho/category_7474499.html
[41] 图片加载开源框架对比:UIL、Glide、Picasso、Fresco: https://blog.csdn.net/carson_ho/article/details/51939774
[42] 网络请求框架对比:Android-Async-Http、Volley、Okhttp、Retrofit: https://blog.csdn.net/carson_ho/article/details/52171976
[43] Carson带你学:RxJava: https://blog.csdn.net/carson_ho/category_7227390.html
[44] 新语言开发:Kotlin使用、特点: https://carsonho.blog.csdn.net/article/details/96965702
[45] Native:NDK与JNI: https://carsonho.blog.csdn.net/article/details/73250163
[46] 跨平台开发:Flutter: https://carsonho.blog.csdn.net/article/details/97233628
[47] 响应式UI开发框架:Jetpack Compose: https://carsonho.blog.csdn.net/article/details/104243841
[48] 插件化:设计原理及应用: https://github.com/Carson-Ho/AndroidInterview/blob/master/Material/Android/%E8%A1%A5%E5%85%85%E6%8A%80%E6%9C%AF/%E6%8F%92%E4%BB%B6%E5%8C%96.md
[49] 架设设计:MVC、MVP、MVVM: https://carsonho.blog.csdn.net/article/details/100070713
[50] 热补丁修复:设计原理及常见应用: https://carsonho.blog.csdn.net/article/details/88012315
[51] Carson_HoCSDN博客: https://carsonho.blog.csdn.net/


「点击关注,Carson每天带你学习一个Android知识点。」

最后福利:学习资料赠送

  • 福利:本人亲自整理的「Android学习资料」
  • 数量:10名
  • 参与方式:「点击右下角”在看“并回复截图到公众号,随机抽取」

    点击就能升职、加薪水!
浏览 28
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐