Android面试系列2018总结(全方面覆盖Android知识结构)

拿到一份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面试系列2018总结(全方面覆盖Android知识结构)_第1张图片

Android部分1

Android面试系列2018总结(全方面覆盖Android知识结构)_第2张图片

Android部分2

Android面试系列2018总结(全方面覆盖Android知识结构)_第3张图片

实战经验部分

Android面试系列2018总结(全方面覆盖Android知识结构)_第4张图片

源码分析部分

详细内容,读者可以下载上述百度云分享链接的那个文件,并使用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

你可能感兴趣的:(Android)