基础的知识点全部略过,下面都为进阶知识点
Java 篇
1. 泛型
熟练掌握泛型语法是在java开发中涉及到的架构、封装、源码学习等方面的必备技能,属于相对高级和难掌握的语法,简单的泛型看似简单,但是真的要运用的灵活自如还是有一定难度。
涉及的知识点:
- 泛型的原理
- 泛型的擦除
- 泛型的通配符:? 、extend、super
- 泛型多级继承时候的传递
- 泛型类泛型方法
- pces
在应用方练手方面,首先从http通用工具类返回类型封装入手,再mvp框架封装,再rxjava的源码学习进阶。
ps : 以上知识点只是根据印象举例,并不全面,需要自己多搜索,多看几篇博客,因为一个人写的博客难免有疏漏和盲区,一旦漏掉了就很难再回来看了,所以一个知识点一要是全面掌握,二是要理解,这样知识点才能掌握的全面且扎实,不然后面不懂了还要回头看,自己的一点体会,下同。
2. 注解
注解的用法没啥好讲的,主要是一个知识点:编译时注解,可以学习下ButterKnife,我也写过一篇博客。
3. 集合
java的集合类,面试必问,可以去搜索java集合的系列文章,但看一篇是没用的。这里可以问的知识点非常多,涉及数据结构和算法。
- hashmap实现原理,里面的数据机构,散列链表什么的。
- ArrayList的数据结构,扩容等知识。
- LinkedHashMap 双向链表结构,和LRU的联系
等等。
可以找一些面试题来检验下
4.反射
5. 多线程、并发
多线程主要是线程池的一些使用和原理
并发主要是一些java的并发类和关键字还有锁的知识点,这里也需要找相关的专题系列文章。
6. 设计模式
建议看书和系列博客,之后可以结合实际项目和源码,也有一本书《android设计模式和源码》。这个知识点需要长期实践和积累。
7. java虚拟机
书:《深入理解java虚拟机》选择章节读。
Android 篇
1. Handler
老生常谈的问题了
- handler子线程发送给子线程
- handler原理、源码分析
- UI线程的looper怎么初始化的
- HandlerThread
2. AIDL
- AIDL生成的类源码看一看,怎么设计的(AIDL)
- 不用AIDL手写binder通讯
3.UI
- 自定义View,paint的api,Canvas的api
- view的绘制流程
- 自定义ViewGroup
- View和ViewGroup的区别,ViewGroup是如何处理View的(通过canvas变换)
- Android的事件分发机制 对手势、事件等的处理
- DecorView、Window、ViewRootImpl等概念
- Activity、Window、View三者之间的关系
- 属性动画、原理
可以分析下Android 从xml文件到屏幕显示的过程
推荐:
https://segmentfault.com/a/1190000010041829
https://hencoder.com/ui-1-2/
https://blog.csdn.net/harvic880925/article/details/50995268
4.Framwork
主要是源码的分析
- Layoutinflater的源码,inflate()的三个参数,Layoutinflater.Factory
- Activity的启动流程,setContentView()的源码分析
- ServiceManager
....
这是一个漫长的过程
应用框架层主要还是看《Android开发艺术探索》这本书吧,另外还有一本就是《Android 进阶之光》,再深入就是《android 源代码情景分析》和罗升阳的博客了。
5.其他
- 热修复原理
- 插件化
- 其他就是比较深入、专业的领域了,比如音视频、直播,OpenGL、NDK等等。
周边
1.计算机网络
http、https等协议原理
2.操作系统
《操作系统原理》《现代操作系统》
3.构建
- grovvy基础语法
- 理解grovvy的dls,闭包:https://www.jianshu.com/p/6dc2074480b8
- gradle构建:https://www.infoq.cn/article/android-in-depth-gradle
- 自定义task、插件
- Android gradle插件源码,主要目的是可以使用插件中的api
- 官方文档,很有用
知识点太多,提供平时收集的一些面试题,自己对着查漏补缺吧:
- http://www.codeceo.com/article/android-5-years-interviews.html
- https://mp.weixin.qq.com/s?__biz=MzI2OTQxMTM4OQ==&mid=2247484286&idx=1&sn=e5843fb79d8a36ab063699b5fb9a0711&chksm=eae1f62cdd967f3a576396f8402581326b835b8327ed5f20f23896fcd22c2115e77863b4115b#rd
- https://www.jianshu.com/p/df438d183164
- https://www.jianshu.com/p/de4793a4c2d0
- https://blog.csdn.net/wwj_748/article/details/51278689
- https://mp.weixin.qq.com/s/9fZVubXx8rx_LTKDCiL79w?
- https://mp.weixin.qq.com/s?__biz=MzI3MDE0NzYwNA==&mid=2651435744&idx=1&sn=00977cbf9feb8574d99a7a763253a8db&chksm=f1289b9bc65f128d35b80432883d14e76ae7aee124d1e5f5466a5531cb93cc7cd1400116e883&scene=0&key=7dffde877c8eec6a69ad7165311ddd3fe535807051bc1a38808cd9b120d68c59a27f5141b26c33264aa8afc5187c96709381de25c8153911e9f07d53e58f8e2ea26b0c560a2e5c5b40b74672fa937ba4&ascene=0&uin=MjMxNzYyMTEyMA%3D%3D&devicetype=iMac+MacBookPro13%2C1+OSX+OSX+10.12.5+build(16F73)&version=12020810&nettype=WIFI&fontScale=100&pass_ticket=CS4tRVgmL%2BIyrrej0VqQxVtfeVMY%2BFemnsMh4e7Et8WrERKx%2BPnpZtOqN0Lo2jBv
- https://mp.weixin.qq.com/s/fTfudY1DBYS5JiSkPnbjAg
- https://mp.weixin.qq.com/s/YRhtIRZ0j1k08EsNnjN8Wg
- https://xiaozhuanlan.com/android-interview
- https://mp.weixin.qq.com/s?__biz=MzA3ODQ5MTAwOQ==&mid=2448004187&idx=1&sn=cbc27a22af611bd2136c76098c75c43a&chksm=8b5cc8b5bc2b41a3b15e14479da0da0b6b681f6b8e673199d1d791f90ffecaaa07bab136b38e&mpshare=1&scene=23&srcid=1130tDJqUP7ncIMP4p0jMZpO#rd
- https://juejin.im/post/5b1480646fb9a01e6b2c0b82
- https://mp.weixin.qq.com/s/WVBJqqF6HGGJyzI1hc4fPg
- https://mp.weixin.qq.com/s/XREOq821aaY0gwrlwrOQJA
- https://github.com/geekcompany/ResumeSample
- https://mp.weixin.qq.com/s/H1Nm3upXT-f-jyf2rpT7XQ
- https://github.com/pengMaster/BestNote
- https://juejin.im/post/5cd7ca8e6fb9a031f10ca9af
- https://juejin.im/post/5cdd7a94f265da03775c781a
- https://juejin.im/post/5c8b1bd56fb9a049e12b1692
- https://mp.weixin.qq.com/s/7vH4yRvd_lrmCQVmrY5skg
- https://mp.weixin.qq.com/s/Fm43VAd8npSkFkCk3uP_JA
- https://juejin.im/post/5c70520b6fb9a04a0730fe12
- https://juejin.im/post/5c6a9b6a6fb9a049f362a71f