Android职场
根据本人多次的面试经历,总结以下几个面试实战问题,分享给大家。
----Java相关----
JVM内存模型
1、pc线程私有;2、stack线程私有;3、heap共享;4、方法区共享,方法区包含类信息、静态变量、字符串常量;5、本地方法栈
Java中类是如何加载的
类加载器负责加载类(双亲委托模型)
1、加载
2、验证
3、准备:给静态变量分配内存空间,设置初始值; 如果是final,直接赋上真实值
4、解析
5、初始化 :静态变量赋上真实值、static方法块执行等; 此阶段是线程安全的
String、StringBuilder、StringBuffer区别与实现
equals()和hashCode()的关系
ArrayList、LinkedList 、HashMap、HashSet、Hashtable的实现方式
单例的实现方式
线程池如何复用线程
常用的设计模式
反射、动态代理
----Android相关----
Activity启动模式及使用场景
对于安卓动画的了解
自定义View的步骤
定时器timer、handler的区别
canvas的save()和restore()方法的作用
当程序出现ANR,如何查出问题
进程间的通信机制
图片框架Glide和Picasso的区别
看过哪些源代码,请举例说明
itemView如何实现多个模板的复用
造成内存泄露的原因,如何解决排查
你在工作中是否用到过Service,如何使用的
方法数过多如何解决
volatile作用
Activity的启动模式,请说出分别对应的使用场景
EventBus原理
发布/订阅模式(观察者模式)、反射、注解(线程模式、粘性、优先级)
register : 1、找订阅类加了注解的方法 2、subscriptionsByEventType typesBySubscriber
Butteknife原理
annotationProcessor(APT)注解处理器-->编译时,生成辅助类MainActivity_Viewbinding-->在该类中findViewById
Glide原理
其他
让你最有成就感的事
你工作中遇到印象深刻的异常或问题,是如何解决的