Wilson

自强不息 厚德载物

Android面试

面试问题总结

Android

Handler机制

自定义View

先总的分类:自绘控件、组合控件、继承控件

在回头看View绘制源码

事件分发机制

跨进程通信IPC

Android适配

Android动画

  • Frame Animation(帧动画):按顺序播放事先做好的图像
  • Tween Animation(补间动画):只能对View进行平移,缩放,渐变,旋转
  • Property Animation(属性动画):API11开始引入,基于Object进行属性改变而
    达到动画效果
  • 使用动画场景
    • 转场动画
    • 加载动画
    • 其他动画

Java基础

  • “==”和equals区别
    “==”是比较的内存地址,equals比较的是值。

  • Java内存
    Java内存区域

    • 程序计数器
    • Java 虚拟机栈
      1. 局部变量表

        局部变量表是一组变量值存储空间,用于存放方法参数和方法内部定义的局部变量,其中存放的数据的类型是编译期可知的各种基本数据类型、对象引用(reference)和 returnAddress 类型(它指向了一条字节码指令的地址).

      2. 操作数栈

        操作数栈又常被称为操作栈,操作数栈的最大深度也是在编译的时候就确定了。

      3. 动态连接
        > 每个栈帧都包含一个指向运行时常量池(在方法区中,后面介绍)中该栈帧所属方法的引用,持有这个引用是为了支持方法调用过程中的动态连接。

      4. 方法返回地址

        当一个方法被执行后,有两种方式退出该方法:执行引擎遇到了任意一个方法返回的字节码指令或遇到了异常,并且该异常没有在方法体内得到处理。无论采用何种退出方式,在方法退出之后,都需要返回到方法被调用的位置,程序才能继续执行。

  • 本地方法栈
    该区域与虚拟机栈所发挥的作用非常相似,只是虚拟机栈为虚拟机执行 Java 方法服务,而本地方法栈则为使用到的本地操作系统(Native)方法服务。

  • Java 堆
    Java Heap 是 Java 虚拟机所管理的内存中最大的一块,它是所有线程共享的一块内存区域。几乎所有的对象实例和数组都在这类分配内存。Java Heap 是垃圾收集器管理的主要区域,因此很多时候也被称为“GC堆”。

  • 方法区
    方法区也是各个线程共享的内存区域,它用于存储已经被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据

  • 直接内存
    不是虚拟机运行时数据区的一部分,也不是Java虚拟机规范定义的内存区域(Fresco图片加载库,就是运行这块内存超越虚拟机内存使用)。

    在 JDK1.4 中新引入了 NIO 机制,它是一种基于通道与缓冲区的新 I/O 方式,可以使用Native函数库直接分配堆外内存,然后通过存储在Java堆里面的DirectByteBuffer对象作为这块内存的引用进行操作。这样能在一些场景中提高性能,因为避免了在 Java 堆和 Native 堆中来回复制数据。

  • 参考文章

  • int-char-long各占多少字节数

类型 位数 字节
byte 8 1
char 16 2
short 16 2
int 32 4
long 64 8
float 32 4
double 64 8

网络

参考资料

Comments