拿到一份offer比什么都重要,所以笔者专门花了近一个月的时间整理好了一份专门为Android面试而生的总结,注意的是笔者仅仅对面试技术方面的题目进行的总结,至于如何去和面试官去聊,怎么聊,聊得嗨,这里笔者就不谈了,因为这方面并不是笔者擅长的。闲话不多说,如果你好好看笔者总结的这些Android面试系列文章,不管你是小白,还是初级,高级Android程序猿,你都会有所收获。
以下是Android面试系列文章知识体系图以及文章的具体链接:
Android面试系列文章知识体系图:
由于图片高度过大,这里放不下,所以笔者将知识体系图整理到Xmind8中了,需要文件的童鞋可以通过以下百度云链接下载:
https://pan.baidu.com/s/1MQJlAufVrHLNsEBFh6QPJg
CSDN下载链接:http://download.csdn.net/download/clandellen/10277364(既然选不了0积分下载,最低需要2积分下载,CSDN官方规定最少2积分,对不起读者了)
以下是知识体系图的部分:
Android部分1
Android部分2
实战经验部分
源码分析部分
详细内容,读者可以下载上述百度云分享链接的那个文件,并使用Xmind8打开。
注意:对于正在入门学习Android的同学,请看笔者另外一篇文章:https://blog.csdn.net/clandellen/article/details/78258187(里面介绍了如何去自学Android,有Java视频教程,Android Studio版本的Android视频教程),Android基础部分对你来说可以去看一看,对于1到2年开发经验的读者,基础部分,必须掌握和明白,而有些部分,你可以选择性去看和掌握,比如:Android源码部分,你不必去弄清android系统的启动过程,只需要了解init进程什么,Zygote进程是什么,AMS是什么,作用是啥即可,而常用框架源码部分呢,如果你面的公司是有严格要求的,我指的是类似于BAT,你要选择其中3,4甚至5,6个着重去学习,其它的作为了解粗略看一下就行了,http自然不用我说了吧,Java设计模式等,数据结构与算法部分,也不必太耗时间去整明白,知道多线程环境下最安全的单例模式,而且知道一些框架中采用了何种设计模式,比如RxJava采用的观察者设计模式等,能手写冒泡,二分法,最好会快排,知道堆和栈,链表,队列等的特性即可,也要注意合理安排时间,有些链接里文字过多的,粗略的看看,达到能自己说出来重点即可,比如:Android基础部分,对于Context的理解,你需要知道Android中有几种上下文,它们的作用分别是什么即可,而对于3年经验甚至更多的读者,对我而言你已经是个大佬了,首先我要跟你打声招呼:大佬你好,基础部分,经验部分对你而言已经不再是难题,你应该去明白Android系统的启动流程的源码分析,一个app是如何启动等,常用框架的源码至少得弄懂大半,深入源码,并有自己的一套分析思维模式。最后总结:如果你对自己有严格要求,希望你找到offer后,把这篇文章里你不懂的部分还是去好好学习,只有不停的学,才可以让自己更加去胜任平时的工作。
Android基础部分:
1.Android面试系列文章2018之Android部分之Activity篇
http://blog.csdn.net/clandellen/article/details/79257489
2.Android面试系列文章2018之Android部分之Fragment篇
http://blog.csdn.net/clandellen/article/details/79269680
3.Android面试系列文章2018之Android部分之Service篇
http://blog.csdn.net/clandellen/article/details/79276411
4.Android面试系列文章2018之Android部分之Broadcast篇
http://blog.csdn.net/clandellen/article/details/79279416
5.Android面试系列文章2018之Android部分之WebView篇
http://blog.csdn.net/ClAndEllen/article/details/79287020
https://blog.csdn.net/carson_ho/article/details/52693322#t14
6.Android面试系列文章2018之Android部分之Binder机制篇
http://blog.csdn.net/ClAndEllen/article/details/79343389
7.Android面试系列文章2018之Android部分之Handler机制篇
http://blog.csdn.net/ClAndEllen/article/details/79343538
8.Android面试系列文章2018之Android部分之AsyncTask篇
http://blog.csdn.net/ClAndEllen/article/details/79346383
9.Android面试系列文章2018之Android部分之HandlerThread篇
http://blog.csdn.net/ClAndEllen/article/details/79346492
10.Android面试系列文章2018之Android部分之IntentService篇
http://blog.csdn.net/ClAndEllen/article/details/79346624
11.Android面试系列文章2018之Android部分之View绘制机制篇
http://blog.csdn.net/ClAndEllen/article/details/79365250
12.Android面试系列文章2018之Android部分之事件分发机制篇
http://blog.csdn.net/ClAndEllen/article/details/79365369
13.Android面试系列文章2018之Android部分之ListView篇
http://blog.csdn.net/ClAndEllen/article/details/79365499
补:13.1 Android面试系列文章2018之Android部分之动画机制篇
http://blog.csdn.net/ClAndEllen/article/details/79411999
补:13.2 Android面试系列文章2018之Android部分之自定义View篇
http://blog.csdn.net/ClAndEllen/article/details/79412399
补:13.3 Android面试系列文章2018之Android部分之RecyclerView篇
https://www.jianshu.com/p/12ec590f6c76(需要知道用法,注意与ListView的区别)
补:13.4 Android面试系列文章2018之Android部分之JNI和NDK篇
https://blog.csdn.net/carson_ho/article/details/73250163
关于JNI和NDK,笔者近期太忙碌,时间比较少,有时间一定会整理。
另外,如果完全没学习JNI开发的童鞋,可以点开下方笔者分享的一个视频教程链接,你可以看视频进行自学:
链接:https://pan.baidu.com/s/1_FQyPN7jtf96lzqEoU8jSQ 密码:c7jp
补 13.5 Android面试系列文章2018之Android部分之Context的理解篇
https://www.jianshu.com/p/94e0f9ab3f1d
补 13.6 Android面试系列文章2018之Android部分之Window的理解篇
https://blog.csdn.net/yhaolpz/article/details/68936932
补:13.7 Android面试系列文章2018之Android部分之如何创建自己app的内容提供者篇
https://blog.csdn.net/clandellen/article/details/78651994
补:13.8 Android面试系列文章2018之Android部分之对话框篇
AlertDialog:
https://blog.csdn.net/a_zhon/article/details/54578047
DialogFragment:
https://www.cnblogs.com/mercuryli/archive/2016/04/09/5372496.html
另外再加上一个PopupWindow:
https://blog.csdn.net/xyz_lmn/article/details/6906286
https://www.jianshu.com/p/799dbb86f908
补:13.9 Android面试系列文章2018之Android部分之悬浮窗篇
https://blog.csdn.net/self_study/article/details/52859790
https://blog.csdn.net/ltym2014/article/details/78860620
一个兼容的悬浮窗权限申请库:https://github.com/czy1121/settingscompat
补:13.10 Android面试系列文章2018之Android部分之通知篇
实战经验部分:
14.Android面试系列文章2018之实战经验部分之Android Stdio目录结构篇
http://blog.csdn.net/ClAndEllen/article/details/79368343
15.Android面试系列文章2018之实战经验部分之Android构建流程篇
http://blog.csdn.net/ClAndEllen/article/details/79369302
16.Android面试系列文章2018之实战经验部分之Git篇
http://blog.csdn.net/ClAndEllen/article/details/79369538
17.Android面试系列文章2018之实战经验部分之gradle篇
http://blog.csdn.net/ClAndEllen/article/details/79369643
18.Android面试系列文章2018之实战经验部分之proguard混淆篇
http://blog.csdn.net/ClAndEllen/article/details/79369761
补:18.1 Android面试系列文章2018之实战经验部分之Android屏幕适配篇
https://www.jianshu.com/p/ec5a1a30694b
百分比布局的适配:
http://blog.csdn.net/lmj623565791/article/details/46767825
AutoLayout的使用:
https://www.jianshu.com/p/ab6a0bac7347
补:18.2 Android面试系列文章2018之实战经验部分之Android多渠道打包与apk签名篇
实战经验之常用框架部分
19.Android面试系列文章2018之常用框架之网络框架篇
http://blog.csdn.net/clandellen/article/details/79373303
20.Android面试系列文章2018之常用框架之异步框架篇
http://blog.csdn.net/ClAndEllen/article/details/79373350
21.Android面试系列文章2018之常用框架之图片加载框架篇
http://blog.csdn.net/ClAndEllen/article/details/79375228
22.Android面试系列文章2018之常用框架之依赖注入框架篇
http://blog.csdn.net/clandellen/article/details/79375249
23.Android面试系列文章2018之常用框架之内存优化框架篇
http://blog.csdn.net/ClAndEllen/article/details/79375317
补:23.1 Android面试系列 文章之常用框架之数据库存储框架篇
LitPal: https://www.jianshu.com/p/bc68e763c7a2
GreenDao: 笔者酷爱使用这个
https://www.jianshu.com/p/853401a7d02b
3.OrmLite
https://www.jianshu.com/p/05782b598cf0
4.DBFlow
http://blog.csdn.net/u011520533/article/details/51814159
5.Realm
https://www.jianshu.com/p/37af717761cc
实战经验部分之网络理论基础
24.Android面试系列文章2018之常用框架之Http协议篇
http://blog.csdn.net/ClAndEllen/article/details/79379691
补:24.1 Android面试系列文章2018之TCP三次握手四次挥手篇
https://www.jianshu.com/p/35476796dd54
补:24.2 Android面试系列文章之HttpURLConnection和HttpClient篇
实战经验部分之调试能力
25.Android面试系列文章2018之异常处理ANR异常篇
http://blog.csdn.net/ClAndEllen/article/details/79381399
26.Android面试系列文章2018之异常处理OOM异常篇
http://blog.csdn.net/ClAndEllen/article/details/79381656
27.Android面试系列文章2018之内存管理之Bitmap的加载篇
http://blog.csdn.net/ClAndEllen/article/details/79382123
28.Android面试系列文章2018之内存管理之UI卡顿篇
http://blog.csdn.net/ClAndEllen/article/details/79382430
29.Android面试系列文章2018之内存管理之内存泄漏篇
http://blog.csdn.net/ClAndEllen/article/details/79382815
30.Android面试系列文章2018之内存管理篇
http://blog.csdn.net/ClAndEllen/article/details/79382919
31.Android面试系列文章2018之内存管理之冷启动过优化及其他优化篇
http://blog.csdn.net/ClAndEllen/article/details/79383005
http://blog.csdn.net/ClAndEllen/article/details/79383058
补:
31.1 Android代码分析工具:Lint检查
http://blog.csdn.net/ClAndEllen/article/details/79400555
Java部分
32.Android面试系列文章2018之Java部分I/O流篇
http://blog.csdn.net/ClAndEllen/article/details/79429328
33.Android面试系列文章2018之Java部分多线程流篇
34.Android面试系列文章2018之Java部分异常篇
http://blog.csdn.net/ClAndEllen/article/details/79389561
35.Android面试系列文章2018之Java部分注解篇
http://blog.csdn.net/ClAndEllen/article/details/79392453
36.Android面试系列文章2018之Java部分类加载器篇
http://blog.csdn.net/ClAndEllen/article/details/79392630
37.Android面试系列文章2018之Java部分反射机制篇
http://blog.csdn.net/ClAndEllen/article/details/79393029
实战经验部分之架构搭建篇
38.Android面试系列文章2018之架构搭建之MVC模式篇
http://blog.csdn.net/ClAndEllen/article/details/79396116
39.Android面试系列文章2018之架构搭建之MVP模式篇
http://blog.csdn.net/ClAndEllen/article/details/79396527
40.Android面试系列文章2018之架构搭建之MVVM模式篇
http://blog.csdn.net/ClAndEllen/article/details/79396831
41.Android面试系列文章2018之架构搭建之谷歌官方推荐架构TODO-MVP篇
https://www.jianshu.com/p/8b81493d1297
前沿的技术篇
42.Android面试系列文章2018之Android插件化篇
http://blog.csdn.net/ClAndEllen/article/details/79397207
43.Android面试系列文章2018之Android热更新篇
http://blog.csdn.net/ClAndEllen/article/details/79397900
44.Android面试系列文章2018之进程保活篇
http://blog.csdn.net/ClAndEllen/article/details/79398132
45.Android面试系列文章2018之Kotlin语言面试篇
http://blog.csdn.net/ClAndEllen/article/details/79400968
补:45.1 Android面试系列文章2018之Android消息推送篇:
https://www.jianshu.com/p/b61a49e0279f
补:45.2 Android面试系列文章2018之面向切面编程AOP篇:
http://blog.csdn.net/innost/article/details/49387395
实战经验之Android中常用的Java设计模式篇
46.Android面试系列文章2018之Java设计模式之单例模式篇
https://www.cnblogs.com/cielosun/p/6582333.html
47.Android面试系列文章2018之Java设计模式之Builder建造者模式篇
http://blog.csdn.net/clandellen/article/details/77890805
48.Android面试系列文章2018之Java设计模式之适配器模式篇
http://blog.csdn.net/jason0539/article/details/22468457
49.Android面试系列文章2018之Java设计模式之装饰模式篇
http://blog.csdn.net/zhshulin/article/details/38665187
50.Android面试系列文章2018之Java设计模式之外观设计模式篇
http://blog.csdn.net/l1028386804/article/details/45568655
51.Android面试系列文章2018之Java设计模式之组合设计模式篇
http://blog.csdn.net/lemon_tree12138/article/details/51437883
52.Android面试系列文章2018之Java设计模式之策略模式篇
http://blog.csdn.net/jason0539/article/details/45007553
53.Android面试系列文章2018之Java设计模式之模版设计模式篇
http://blog.csdn.net/jason0539/article/details/45037535
54.Android面试系列文章2018之Java设计模式之观察者模式篇
http://blog.csdn.net/jason0539/article/details/45055233
55.Android面试系列文章2018之Java设计模式之责任链模式篇
http://blog.csdn.net/jason0539/article/details/45091639
算法和数据结构部分(注意面试的时候回答不上来,千万别放弃,因为Android对算法的要求是次要的,也就是说算法能力并不能决定你拿不拿得到offer,当然也必须具备一些基本的算法能力,比如:冒泡,选择排序,二分查找啊等)
56.Android面试系列文章2018之算法之排序算法
http://blog.csdn.net/happy_wu/article/details/51841244
57.Android面试系列文章2018之算法之查找算法
http://blog.csdn.net/three_man/article/details/46799659
补:57.1 Android面试系列文章2018之数据结构之链表篇
https://blog.csdn.net/lishuzhai/article/details/50972779
57.2 Android面试系列文章2018之数据结构之队列篇
https://blog.csdn.net/javazejian/article/details/53375004
57.3 Android面试系列文章2018之数据结构之堆篇
https://blog.csdn.net/wypblog/article/details/8076324
57.4 Android面试系列文章2018之数据结构之栈篇
https://blog.csdn.net/javazejian/article/details/53362993
57.5 Android面试系列文章2018之数据结构之树篇
https://blog.csdn.net/u011240877/article/details/53193877
由于笔者没有写源码分析文章的习惯,只是看源码的时候,自己大脑转了一遍,但没关系,我这里会贴出一些高质量大神写的源码分析的文章,希望读者被面试官问道的时候能够从容应答。
Java 源码篇
58.Android面试系列文章2018之LRU算法有关的集合LinkedHashMap的源码探究
http://blog.csdn.net/justloveyou_/article/details/71713781
59.Android面试系列文章2018之Java常用集合源码探究
ArrayList:
http://blog.csdn.net/gulu_gulu_jp/article/details/51456969
http://blog.csdn.net/chun0801/article/details/51481877
http://blog.csdn.net/u014136713/article/details/52089156
…不止这些,还有很多,请读者耐心等待笔者总结
Android源码篇
60.启动一个app的源码分析
61.Android中的main()方法在哪里?
……
弄懂Android源码,你需要理解什么是init进程,什么是Zygote进程,SystemServer,AMS等等,这是需要时间去理解的:
http://blog.csdn.net/itachi85/article/details/54695046
init进程的启动流程:
http://blog.csdn.net/itachi85/article/details/54783506
Zygote(受精卵进程)的启动流程:
http://blog.csdn.net/itachi85/article/details/55047104
SyetemServer进程启动过程:
http://blog.csdn.net/itachi85/article/details/55053356
Launcher启动过程与系统启动流程:
http://blog.csdn.net/itachi85/article/details/56669808
程序启动的流程:
http://blog.csdn.net/itachi85/article/details/64123035
http://blog.csdn.net/itachi85/article/details/64243223
源码分析也不能完全按照大神的角度去看,有时候自己尝试去理解,就会发现不一样的地方,觉得世界一下被打开了,笔者在研究广播机制的源码的时候,就有这样的感觉,研究的时候,笔者终于知道为什么系统广播不安全,而本地广播那么安全高效,因为系统广播的通信机制使用的Binder,而Binder是走的系统,通过AMS注册的传播广播信号,而本地广播是通过Handler机制实现的通信,这就意味着,本地广播的信号肯定不会发送到应用之外,由于采用的Handler机制,所以高效就不足为奇了。
笔者曾被一个学弟提问道,研究源码有什么好处?除了平时能装逼,应付面试,还有什么?其实研究源码好处不止有这些,因为源码是比我们还要厉害的大神写出来的,我们可以学习这些源码里的一些实现逻辑,把这些实现逻辑搬到自己的代码中,这就厉害啦,有时候我们碰到难以实现的模块,我想源码或许会无形当中会提供一些解决方案,GitHub上那些Star比较多的项目的博主,我想他们肯定有看源码的习惯。
…不止这些,还有很多,请读者耐心等待笔者总结
Android框架源码篇
62.Android面试系列文章2018之网络框架OkHttp源码分析篇
https://www.jianshu.com/p/27c1554b7fee
63.Android面试系列文章2018之网络框架Retrofit源码分析篇
https://www.jianshu.com/p/0c055ad46b6c
64.Android面试系列文章2018之图片框架Glide源码分析篇
http://blog.csdn.net/yulyu/article/details/60331803
65.Android面试系列文章2018之图片框架Picasso源码分析篇
http://blog.csdn.net/woliuyunyicai/article/details/51417839
62.Android面试系列文章2018之内存分析框架LeakCanary源码分析篇
http://blog.csdn.net/cloud_huan/article/details/53081120
66.Android面试系列文章2018之依赖注入Butterknife源码分析篇
http://blog.csdn.net/ta893115871/article/details/52497297
67.Android面试系列文章2018之依赖注入Dragger2源码分析篇
https://www.jianshu.com/p/eef7fa8136e7
68.Android面试系列文章2018之异步框架EventBus源码分析篇
http://blog.csdn.net/ljd2038/article/details/51470734
69.Android面试系列文章2018之异步框架RxJava源码分析篇
http://gank.io/post/560e15be2dca930e00da1083
补:
69.1图片框架:ImageLoader源码分析
http://blog.csdn.net/xiaanming/article/details/26810303
http://blog.csdn.net/xiaanming/article/details/27525741
http://blog.csdn.net/xiaanming/article/details/39057201
以下知识不是纯面试知识
高级进阶之高并发编程
高级进阶之Java虚拟机探究
一个GitHub受欢迎的Android第三方库整理的网站,读者可以收藏一下,高效率开发:
https://hndeveloper.github.io/2017/github-android-ui.html