项目介绍
- 明确项目是做什么的
- 明确项目的价值
- 明确项目的功能
- 项目的整体架构
- 明确项目的技术
- 个人在项目中承担的角色
- 项目的优缺点
- 项目重构的建议
- 在项目中的技术成长
Java基础
反射机制
异常的分类和处理机制
SparseArray和ArrayMap
SparceArray在存取数据时采用二分查找法
SparceArray是按key值大小进行排列的,避免自己主动装箱的过程
适用:
1、数据量在千级内
2、key是int型
LongSparceArray保存key为long型的
ArrayMap
适用:
1、数据量在千级内
2、数据结构类型为Map类型
HashMap
HashMap取数据是通过遍历Entry[]来得到相应的元素
HashMap 内部实现原理
key可否为null(可以)
key如果为空怎么处理
HashMap 默认初始化大小(16),如何扩容
是否线程安全
并发情况下会出现什么问题
hash() eque() 方法 关系
线程相关
同步 异步 区别
说下并发和并行什么区别
并发(concurrency)和并行(parallellism)是:
解释一:并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。
解释二:并行是在不同实体上的多个事件,并发是在同一实体上的多个事件。
解释三:在一台处理器上“同时”处理多个任务,在多台处理器上同时处理多个任务。如hadoop分布式集群
wait() 方法和sleep()方法区别
sleep():只让出CPU,不会释放同步资源锁
wait():让出同步资源锁,需用notify()唤醒。让之前调用wait的线程有权重新参与线程的调度
CAS机制
乐观派,不加锁
Compare And Swap 即比较交换
核心思想:执行函数:CAS(V,E,N)
V表示要更新的变量
E表示预期值
N表示新值
CAS是一条CPU的原子指令,原子指令必须是连续的
线程池
泛型 extend super 区别
介绍下了解过的垃圾回收算法
Android
Activity、Fragment
Service
NDK
多线程和并发
线程的几种状态
wait和sleep的区别
synchronized的实现原理以及锁优化
在静态方法与对象方法的区别
我们怎么得到所需要的信息?
HashMap是否线程安全
HashTable如何加锁
线程池的种类,区别和使用场景?
分析线程池的实现原理和线程的调度过程?
ThreadLocal原理,用的时候需要注意什么?
内存泄漏和ANR
内存泄漏和内存溢出的区别
如何分析
项目中第三方
- IM
- 推送
- 分享
- 直播
- RxJava
- 支付