最近在准备一个长久的研究和写作计划——收集并总结Java&Android开发中常见的100个经典问题。纠结了几天要不要去做,因为任何一个看似简单的问题都能持续深入的探讨下去,以至于要花费巨大的精力去做这件事。但是做这件事对我个人而言也是有必要的,移动端开发这些年,虽说写了很多代码,大大小小的项目也都有参与过,但是回头想想,这些年做的项目很多时候都是去拼凑现有的轮子,很少静下心来去深入的研究某个知识点,就比方说Java里面关于“锁”,只知道volidate synchronized lock
,知其然不知其所以然 ,再比方说Android开发时常用到EventBus、Retrofit等热门的第三方Library,基本没有细究过内在的原理,哪怕只是了解。
新年伊始,计划在一年内,利用晚上和节假日空闲时间,针对收集到的100个经典的问题或案例深入的去探讨下,这些问题有自己平时开发过程中遇到的问题、有从网络上搜索到的问题、有各大明星企业面试的问题等等,问题有大有小,但正如我上面说过,哪怕是一个看似很小的问题都够研究很久。闲话不多说,下面列出我收集到的问题,不分先后顺序,有空再对这些问题做一个分类整理。
- 界面适配
- MVP
- MVVM
- Java中“锁”的理解,如关键字:volidate、synchronized、lock
- Activity启动模式
- 动画
- View的绘制
- Ams原理
- Service
- RxJava
- RecyclerView与ListView的比较
- ViewPager多种动画效果应用
- 手势
- 几种常见的设计模式
- 注解
- 注解解释器
- 热更新
- gradle
- LRUCache原理
- JVM内存模型、内存区域
- classloader
- 插件化
- 动态布局
- 怎么去除重复代码
- SurfaceView
- BroadcastReceive和LocalBroadcastReceiver的区别
- Bundle机制
- Handler机制
- App启动流程
- GC回收策略
- Dalvik、ART了解
- 跨进程通信
- 类加载机制
- Bitmap如何处理大图,防止OOM
- 死锁、避免死锁,死锁的四个条件
- TreeMap具体实现
- Set、Map、List
- 生产者/消费者模式
- HashSet、HashMap怎么判断集合元素重复
- ConcurrentHashMap
- wait/notify
- NIO
- AlertDialog、PopupWindow、Activity区别
- Application和Activity的Context对象的区别
- 序列化作用,两种序列化的区别
- 静态内部类、匿名类、内部类
- 软引用、弱引用
- ANR分析解决
- AsyncTask机制
- 应用安装过程
- 线程、进程
- ArrayList、LinkedList
- Object类的equal和hashcode方法重写,为什么?
- HashMap如何put数据(从源码分析)
- systrace性能分析
- 两个不重复的数组集合中,求共同的元素
- 性能优化、内存优化
- 类加载器、双亲机制、Android的类加载器
- 线程池
- Android查找内存泄露
- 布局优化
- 并发、并发集合
- SpareArray原理
- AndroidStudio在build后发生了什么?
- TCP/UDP区别
- WebSocket和Socket区别
- 计算一个View的嵌套层级
- 数据结构中堆的概念,堆排序
- 适配器模式、装饰模式、外观模式的异同
- Android线程池有没有上限
- IPC
- 广播的分类
- 为什么不能在子线程中更新UI
- RxJava的优缺点
- Window和WindowManager
- Retrofit源码
- Glide源码
- OkHttp如何处理网络缓存
- EventBus源码