Java

  • equals和==的区别?equals和hashcode的关系?
  • String、StringBuffer和StringBuilder的区别?
  • 效率是:StringBuilder>StringBuffer>String ?
  • 关于多态的理解?主要运用?
  • HashMap的特点是什么?HashMap的原理?
  • 泛型? 类型擦除?
  • 动态代理? 静态代理?
  • 线程状态? 线程池原理? 阻塞队列? 非核心线程池创建条件?
  • 死锁触发的条件? synchronized? Lock (通过代码手动加锁)?
  • volatile 原理?
  • 多线程安全的 map 子类?
  • jvm 内存区域划分?

    Kotlin

  • == 与 ===?

  • open 关键字作用?
  • init 块是什么? 调用时机?
  • 与 switch 比 when 的优势?
  • 手写kotlin 实现建造者模式?
  • 什么是 kotlin 中的域函数? let/run/with/apply/also
  • kotlin 静态变量/方法?
  • kotlin 中的数据类是什么?
  • lazy 和 latainit 的区别?
  • 如何创建单例?
  • 内联函数? (面向切面编程) 中缀函数?
  • 什么是协程?

    Android

  • Activity 的启动模式?

  • Activity 的生命周期?
  • 屏幕适配? 原理?
  • Android 消息机制? ThreadLocal/MessageQueue/Looper/Handler
  • Looper 为什么不会导致主线程卡死?
  • View 事件分发机制/绘制原理?
  • Bitmap 的内存计算方式?
  • Bitmap 的压缩方式?
  • 超大图的加载方式?
  • Binder? 与其他IPC方式的优缺点?通信过程/原理?
  • 有哪些序列化方式? 特点?
  • Activity 的启动流程?
  • 平时做了哪些性能优化?
  • Glide 与其他图片加载框架的区别?
  • Glide 的缓存实现机制?
  • Retrofit 的设计模式和解耦理念?
  • ARouter 实现原理?
  • RxJava 的各种操作符及作用?
  • Lifecycle 的设计模式?
  • DataBinding 的原理?
  • 观察者模式?
  • 组件化和插件化?
  • 热更新?