美文网首页
基本的Android面试问题小问题

基本的Android面试问题小问题

作者: GiottoYLY | 来源:发表于2020-10-16 14:43 被阅读0次

    一、序列化和反序列化

    1. 序列化 : 把数据按照一定的逻辑保存的过程
    2. 反序列化 : 把数据按照一定的逻辑恢复的过程
    • Serializable 性能不会太高 , 会记录类的全名、属性名 , 反序列化时是反射
    • Parcelable : write的顺序和read的顺序必须相同
      a. Java推荐(对成员进行序列化 , 内存间的序列化)
      b. write() -> Parcel(只记录属性值) -> read()

    二、==和equal的区别

    1. ==比较的是内存地址
    2. equal比较的是值(比较的是值,String重写了hashcode方法)

    三、ImageLoader、Picasso、Glide

    1. ImageLoader : 支持监听图片下载进度 , 可以在View滚动的时候暂停加载图片(PauseOnScrollListener)
    2. Picasso : 框架体积小、不支持GIF
    3. Gilded : Picasso的升级版 , GIF、Video、视频类优先

    四、MVC和MVP模式

    1. MVC : 用户操作View发送请求 , Controller负责决定应该调用哪个Model来进行处理 , Model根据用户请求进行相应的业务逻辑处理并返回数据 , 最后Controller调用对应的View来显示Model数据
    2. MVP : View和Model不直接交互 , Presenter作为视图和数据的连接器 , 当View有变动或者Model有变动时 , 不会相互影响 , 耦合性低

    五、ListView和RecyclerView的区别

    1. RecyclerView的ViewHolder编写规范是好的 , 自带item复用功能
    2. RecyclerView自带动画效果
    3. RecyclerView可以实现ListView、GirdView、瀑布流效果
    4. RecyclerView可以局部刷新(notifyItemChanged)

    六、String、StringBuffer、StringBuilder

    1. String : 字符串常量 , 每次修改都会new一个新的对象
    2. StringBuffer : 可修改的字符串 , 线程安全
    3. StringBuilder : 可修改的字符串 , 线程不安全(单线程使用) , 效率比StringBuffer高

    七、android动画

    1. 补间动画 : 不会改变View的真正位置和相关属性(点击事件的出发区域还是动画前的位置)
    2. 帧动画 : 加载一系列Drawable资源来创建动画
    3. 属性动画 : 改变View的属性值

    八、设计模式

    1. 单例 : 确保类只有一个实例 , 且自行实例化并向整个系统提供这个实例
    2. Builder建造者模式 : 需要创建一个对象时要用到很多变量组合而成的时候
    3. 工厂模式 : 简单工厂模式、 工厂方法模式、抽象工厂模式(基类)
    4. 策略模式 : 一个类或算法可以在运行时更改

    九、进程和线程的区别

    1. 进程是CPU资源分配的最小单位 , 线程是CPU调度的最小单位
    2. 进程之间不能共享资源 , 线程可以共享所在进程的地址空间和其他资源
    3. 一个进程可以有多个线程 , 进程可以开启进程 , 也可以开启线程
    4. 一个线程只能属于一个进程 , 线程可以直接使用进程的资源 , 线程依赖进程存在

    十、内部类

    可以直接访问外部类的属性
    成员内部类、局部内部类、匿名内部类(没有构造方法)、静态内部类(static修饰 , 不能使用外围类的非static成员变量和方法)

    十一、Synchronized

    可以在多线程环境下座位线程安全的同步锁 , 可修饰 :

    • 代码块
    • 成员方法(方法用Synchronized修饰 , 修饰的是this)
    • 修饰静态方法(方法用Synchronized修饰 , 修饰的是Class对象)

    十二、接口和抽象类的区别

    1. 接口用implements来实现 , 抽象类用extent继承
    2. 抽象类可以有构造函数 , 接口不能
    3. 抽象类可以有main方法能运行 , 接口不能
    4. 接口可以实现多个 , 抽象类只能继承一个
    5. 接口默认是public修饰 , 抽象类可以任意修饰符

    十三、final的作用

    1. final修饰的变量叫常量 , 常量必须初始化 , 初始化后不能被修改
    2. final修饰方法 , 不能被重新
    3. final修饰类 , 最终类 , 不能被继承

    相关文章

      网友评论

          本文标题:基本的Android面试问题小问题

          本文链接:https://www.haomeiwen.com/subject/pygfyktx.html