Android整理

一、JAVA

1、基础

  • java的特点 (OOP),封装、继承、多态
  • 什么是多态?多态的实现机制是什么?
  • 静态属性和静态方法是否可以被继承?是否可以被重写?以及原因?
  • ==、equals、hashCode的作用,区别
  • 抽象类与接口的异同
  • new String("a")创建了几个对象?String StringBuffer和StringBuilder的比较
  • 浅拷贝与深拷贝的区别
  • final、finally、finally的区别

2、集合

  • Java集合框架中有哪些类 ? 都有什么特点 ?
  • ArrayList和LinkList的区别 ? Vector ?
  • hashmap实现(底层数据结构),hashcode算法,如何扩容,怎么处理hash冲突?处理hash冲突都有哪些办法?(联系ThreadLocal)
  • hashmap、 hashtable、ConcurrentHashMap;如何实现线程安全,底层原理?HashMap线程不安全如何体现?
  • LinkedHashMap原理,作用?(LruCache)
  • HashMap、ArrayMap、SparseMap比较?

3、虚拟机

  • JVM内存区域怎样划分
  • 垃圾回收机制
  • 类加载过程、类加载机制
  • 强引用、软应用、弱应用

4、并发

  • 线程状态的理解(阻塞,运行等等)
  • Thread方法的区别:sleep、yield、join、wait
  • 线程池的原理,四种线程池的区别,线程的个数选择
  • 线程安全:volatile ,synchonized,lock,CAS,ThreadLocal
  • 线程通信:synchonized+wait/notify;lock+condition;生产者与消费者

5、设计模式

二、Android

1、Activity

  • Activity生命周期
  • Activity A 启动另一个Activity B 会调用哪些方法?如果B是透明主题的又或则是个DialogActivity呢
  • onSaveInstanceState()方法的作用 ? 何时会被调用?
  • Activity的四种启动模式、应用场景 ?
  • Activity跟window,view,ViewRoot之间的关系?
  • Activity的启动过程?

2、Fragment

  • Fragment 生命周期
  • Fragment 与Activity如何通信,Fragment如何之间通信
  • Fragment中add与replace的区别(Fragment重叠)
  • Fragment懒加载如何实现
  • FragmentPagerAdapter与FragmentStatePagerAdapter的区别与使用场景

3、Service

  • 谈一谈Service的生命周期?
  • Service的两种启动方式?区别在哪?
  • 如何保证Service不被杀死 ?
  • 能否在Service开启耗时操作 ? 怎么做 ?

4、Broadcast Receiver

  • 广播有几种形式 ? 都有什么特点 ?
  • 广播的两种注册方式 ?
  • 广播发送和接收的原理了解吗 ?(Binder机制、AMS)

5、View

  • 描述一下View事件传递分发机制?
  • onTouch、onTouchEvent、onClick的执行顺序
  • 如何解决View的事件冲突 ? 举个开发中遇到的例子 ?
  • 讲下View的绘制流程?
  • 自定义View的过程,自定义View需要注意什么
  • Android屏幕渲染机制
  • invalidate()、postInvalidate()、requestLayout()分析的区别 ?
  • SurfaceView和View的区别?
  • 当一个TextView的实例调用setText()方法后执行了什么
  • Android布局优化之ViewStub、include、merge的作用与原理
  • LinearLayout,RelativeLayout布局流程、性能对比
  • 动画的种类有哪些?如何使用,以及底层原理?
  • 为什么属性动画移动后可以点击,而补间动画不行?
  • ListView 和 RecyclerView的比较

6、Handler

  • 谈谈消息机制Handler ? 作用 ?有哪些要素 ?流程是怎样的 ?
  • 一个线程能否创建多个Handler,Handler跟Looper之间的对应关系 ?
  • 为什么系统不建议在子线程访问UI
  • Looper死循环为什么不会导致应用卡死
  • 使用Handler的postDealy后消息队列会有什么变化 ?
  • 可以在子线程直接new一个Handler吗 ?怎么做 ?
  • Message可以如何创建 ? 哪种效果更好 ? 为什么 ?

7、IPC

  • Android中进程和线程的关系? 区别?
  • 如何开启多进程 ? 应用是否可以开启N个进程 ?
  • 为何需要IPC?多进程通信可能会出现的问题?
  • Android中IPC方式、各种方式优缺点,为什么选择Binder?
  • Binder机制的作用和原理?
  • Binder框架中ServiceManager的作用?
  • Bundle传递对象为什么需要序列化?Serialzable和Parcelable的区别?
  • 讲讲AIDL?原理是什么?如何优化多模块都使用AIDL的情况?

Bitmap

  • Bitmap使用需要注意哪些问题 ?
  • Bitmap.recycle()会立即回收么?什么时候会回收?如果没有地方使用这个Bitmap,为什么垃圾回收不会直接回收?
  • 一张图片从SD卡加载到内存和从drawable加载大小有区别吗?内存占用是怎么计算的?
  • Bitmap如何处理大图,如一张30M的大图,如何预防OOM?
    https://www.jianshu.com/p/3f6f6e4f1c88
    https://blog.csdn.net/android_destiny/article/details/51782508
    https://www.jianshu.com/p/3f6f6e4f1c88

数据库

  • 数据库索引
  • 数据库升级
  • 数据库建表、增删改查基本语句

适配

  • 屏幕适配
    https://blog.csdn.net/zgcqflqinhao/article/details/77766164
    https://www.jianshu.com/p/a4b8e4c5d9b0
    https://www.jianshu.com/p/4aa23d69d481
    blankj
    https://juejin.im/post/5c18039d5188253b7e74987e
    https://github.com/Firedamp/Rudeness
  • 版本适配
    https://blog.csdn.net/qq_23062979/article/details/81294550
    https://blog.csdn.net/zzf112/article/details/53127515

性能优化

  • 内存优化
  • UI界面优化
  • 启动优化
  • 网络优化
  • apk瘦身
  • Bitmap优化
  • ListView优化
  • RecyclerView优化

开源框架

  • Rxjava
    Flowable和Observable区别
    map和flatmap
    线程切换如何实现
  • AAC+Jetpack
    observer和observerForever的区别
    为什么用ViewModelProviders而不是new,ViewModel与MVP里Presenter的对比
  • Retrofit
    Retrofit动态代理细节实现,如何与Rxjava配合使用,动态代理能代理抽象类吗?Retrofit为什么会选择接口来定义请求方法。
    *RxJava,Okhttp,Retrofit,Glide,LeakCanary,BlockCanary,ButterKnife,EventBus

网络

算法数据结构

你可能感兴趣的:(Android整理)