- Java中“==” 和 equals 有什么
- 为什么重写 equals 方法必须重写 hashcode 方法
- 下面的代码在JVM中生成了几个String对象?JVM是如何对其进行内存分配的?
- 了解String的intern()方法吗?它有什么作用?
- String、StringBuffer与StringBuilder有区别?
- 访问修饰符public,private,protected,以及不写(默认)时的区别?
- final有哪几种用法?每种用法是什么含义?
- static 关键的作用
- 内部类可以引用外部类的成员吗?有没有什么限制?
- int和Integer有什么区别?
- Java 面向对象的特征有哪些方面?
- 简述Java反射机制,反射的作用和应用?
- Java泛型是什么?泛型的类型擦除是怎么回事?
- Hash表与HashMap
- HashMap的工作原理
- 为什么HashMap在多线程并发存在死循环的问题,JDK1.8中做了哪些优化?
- Hashtable与HashMap有什么区别?
- 了解ConcurrentHashMap吗?它是怎么实现的?
- 可以使用ConcurrentHashMap来代替Hashtable吗?
- ConcurrentHashMap有什么缺陷吗?
- ConcurrentHashMap在JDK 7和8之间的区别
- Java中HashMap和HashTable的区别?
- HashMap 和 HashSet 的区别
- 请说出 ArrayList和LinkedList的区别?
- 请说出 ArrayList和LinkedList的区别?
- Java 中 Set 与 List 有什么不同?
- 多线程与并发基础
- JMM与volatile关键字
- synchronized的实现原理
- synchronized等待与唤醒机制
- AQS的实现原理
- ReentrantLock的实现原理
- ReentrantLock等待与唤醒机制
- CAS、Unsafe类以及Automic并发包
- ThreadLoacal的实现原理
- 线程池的实现原理
- Java线程中断机制
- Android基础知识汇总
- MVC、MVP与MVVM
- SparseArray实现原理
- ArrayMap的实现原理
- SharedPreferences
- Bitmap
- Activity的启动模式
- Fragment核心原理
- 组件化WebView架构搭建
- 简述Handler的实现原理
- 一个线程有几个Handler?一个线程有几个Looper?如何保证?
- Handler线程是如何切换的?
- Handler内存泄漏的原因是什么?如何解决?
- 子线程中使用Looper应该注意什么?有什么用?
- MessageQueue是如何保证线程安全的?
- 我们使用Message的时候如何创建它?
- Looper死循环为什么不会导致应用卡死?
- 能不能让一个Message被加急处理?
- Handler的同步屏障是什么?
- Handler的阻塞唤醒机制是什么?
- ThreadLocal的实现原理
- HandlerThread是什么?
- IntentService是什么?
- IdleHandler是什么?
- Binder与AIDL
- Binder实现原理
- Android系统启动流程
- InputManagerService
- WindowManagerService
- Choreographer详解
- SurfaceFlinger
- ViewRootImpl
- ActivityManagerService
- APP启动流程
- PMS安装与签名校验
- Dalvik与ART
- ViewRootImpl
- 事件分发机制流程
- ViewGroup中的mFirstTouchTarget是一个什么东西,它有什么作用?
- 如果在ViewGroup中拦截了ACTION_DOWN事件会怎样?
- 为什么设置了onTouchListener后onClickListener不会被调用?
- 为什么一个View设置了setOnTouchListener会有提示没有引用performClick方法的警告?
- 内存优化策略
- UI界面及卡顿优化
- App启动优化
- ANR问题
- 包体积优化
- APK打包流程
- 电池电量优化
- Android屏幕适配
- 线上性能监控1--线上监控切入点
- 线上性能监控2--Matrix实现原理