Android经典问题汇总

最近在准备一个长久的研究和写作计划——收集并总结Java&Android开发中常见的100个经典问题。纠结了几天要不要去做,因为任何一个看似简单的问题都能持续深入的探讨下去,以至于要花费巨大的精力去做这件事。但是做这件事对我个人而言也是有必要的,移动端开发这些年,虽说写了很多代码,大大小小的项目也都有参与过,但是回头想想,这些年做的项目很多时候都是去拼凑现有的轮子,很少静下心来去深入的研究某个知识点,就比方说Java里面关于“锁”,只知道volidate synchronized lock,知其然不知其所以然 ,再比方说Android开发时常用到EventBus、Retrofit等热门的第三方Library,基本没有细究过内在的原理,哪怕只是了解。

新年伊始,计划在一年内,利用晚上和节假日空闲时间,针对收集到的100个经典的问题或案例深入的去探讨下,这些问题有自己平时开发过程中遇到的问题、有从网络上搜索到的问题、有各大明星企业面试的问题等等,问题有大有小,但正如我上面说过,哪怕是一个看似很小的问题都够研究很久。闲话不多说,下面列出我收集到的问题,不分先后顺序,有空再对这些问题做一个分类整理。

  1. 界面适配
  2. MVP
  3. MVVM
  4. Java中“锁”的理解,如关键字:volidate、synchronized、lock
  5. Activity启动模式
  6. 动画
  7. View的绘制
  8. Ams原理
  9. Service
  10. RxJava
  11. RecyclerView与ListView的比较
  12. ViewPager多种动画效果应用
  13. 手势
  14. 几种常见的设计模式
  15. 注解
  16. 注解解释器
  17. 热更新
  18. gradle
  19. LRUCache原理
  20. JVM内存模型、内存区域
  21. classloader
  22. 插件化
  23. 动态布局
  24. 怎么去除重复代码
  25. SurfaceView
  26. BroadcastReceive和LocalBroadcastReceiver的区别
  27. Bundle机制
  28. Handler机制
  29. App启动流程
  30. GC回收策略
  31. Dalvik、ART了解
  32. 跨进程通信
  33. 类加载机制
  34. Bitmap如何处理大图,防止OOM
  35. 死锁、避免死锁,死锁的四个条件
  36. TreeMap具体实现
  37. Set、Map、List
  38. 生产者/消费者模式
  39. HashSet、HashMap怎么判断集合元素重复
  40. ConcurrentHashMap
  41. wait/notify
  42. NIO
  43. AlertDialog、PopupWindow、Activity区别
  44. Application和Activity的Context对象的区别
  45. 序列化作用,两种序列化的区别
  46. 静态内部类、匿名类、内部类
  47. 软引用、弱引用
  48. ANR分析解决
  49. AsyncTask机制
  50. 应用安装过程
  51. 线程、进程
  52. ArrayList、LinkedList
  53. Object类的equal和hashcode方法重写,为什么?
  54. HashMap如何put数据(从源码分析)
  55. systrace性能分析
  56. 两个不重复的数组集合中,求共同的元素
  57. 性能优化、内存优化
  58. 类加载器、双亲机制、Android的类加载器
  59. 线程池
  60. Android查找内存泄露
  61. 布局优化
  62. 并发、并发集合
  63. SpareArray原理
  64. AndroidStudio在build后发生了什么?
  65. TCP/UDP区别
  66. WebSocket和Socket区别
  67. 计算一个View的嵌套层级
  68. 数据结构中堆的概念,堆排序
  69. 适配器模式、装饰模式、外观模式的异同
  70. Android线程池有没有上限
  71. IPC
  72. 广播的分类
  73. 为什么不能在子线程中更新UI
  74. RxJava的优缺点
  75. Window和WindowManager
  76. Retrofit源码
  77. Glide源码
  78. OkHttp如何处理网络缓存
  79. EventBus源码