Android面试准备,基本上可以分为如下几部分:jvm,java基础,多线程,Android,三方库源码,设计模式,kotlin、flutter、jetpack组件实战、算法与数据结构、网络等。
具体的学习资料和基础的知识点如下:
1、JVM
《深入理解Java虚拟机》
基础知识:
GCRoot类型
垃圾回收方式
运行时数据分区
类加载过程,对象创建过程
静态分派和动态分派
2、Java基础
《Effective Java》
《Java核心技术卷一》
基础知识:
重载和重写
静态内部类和非静态内部类的区别
装箱和拆箱
反射
注解
泛型
接口和抽象类
HashMap、ArrayList、LinkedList、HashTable、ConcurrentHashMap等
3、多线程、并发编程
《Java并发编程的艺术》
基础知识:
线程的生命周期
线程池
线程安全
volatile、synchronized、Lock、CAS、UnSafe
异步转同步
原子类、JUC包下的类
FutureTask
4、Android
《Android开发艺术探索》(神书,书里面的内容基本上都要掌握)
基础知识:
Handler:MessageQueue、Looper、Thread关系,ThreadLocal,发消息细节,处理消息细节,native层
View绘制流程:MeasureSpec规则,LayoutInflater源码
View事件分发:事件冲突如何解决
StartActivity启动流程:AMS,zygote
activity、window、view关系
binder、AIDL
动画
尝试阅读源码,关键的部分得翻熟了先。
5、三方库源码
RxJava
OkHttp
Retrofit
Glide
LeakCanary
BlockCanary
EventBus
6、设计模式
《Android源码设计模式解析与实战》
《Head First》
《GOF设计模式》
7、kotlin
基础知识:
基础语法
扩展函数
by lazy 和 lateinit
8、flutter
基础知识:
dart语法
三棵树
绘制引擎
组件
与原生通信
9、jetpack组件实战
10、算法与数据结构
《剑指offer》(第二版)
剑指offer第二版Java代码,参考对应的LeetCode题目
11、网络
《图解Http》
《计算机网络 自顶向下方法(第七版)》