Mar9th 海尔java面试

java基本数据类型

int short long double float boolean char byte

public class Learn1 {
    static double d;
    static long l;
    static float f;
    static int i;
    static short s;
    static char c;
    static byte b;
    static boolean bool;

    public static void main(String[] args) {
        //8字节
        System.out.println(Double.SIZE / 8);
        //8字节
        System.out.println(Long.SIZE / 8);
        //4字节
        System.out.println(Float.SIZE / 8);
        //4字节
        System.out.println(Integer.SIZE / 8);
        //2字节
        System.out.println(Short.SIZE / 8);
        //2字节
        System.out.println(Character.SIZE / 8);
        //1字节
        System.out.println(Byte.SIZE / 8);
        //1比特
        System.out.println(Boolean.FALSE);
        //0.0
        System.out.println(d);
        //0L
        System.out.println(l);
        //0.0f
        System.out.println(f);
        //0
        System.out.println(i);
        //0
        System.out.println(s);
        //""
        System.out.println(c);
        //0
        System.out.println(b);
        //false
        System.out.println(bool);
    }
}

抽象类和接口的区别

  1. 抽象类可以有构造方法,接口中不能有构造方法。

  2. 抽象类中可以有普通成员变量,接口中没有普通成员变量

  3. 抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。

  4. 抽象类中的抽象方法的访问类型可以是public,protected和默认类型,但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。

  5. 抽象类中可以包含静态方法,接口中不能包含静态方法

  6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。

  7. 一个类可以实现多个接口,但只能继承一个抽象类。

HashMap扩容机制

  • capacity 即(数组大小)容量,默认16。
  • loadFactor 加载因子,默认是0.75
  • threshold 阈值。阈值=容量*加载因子。默认12。当元素数量超过阈值时便会触发扩容。

什么时候触发扩容?

一般情况下,当元素数量超过阈值时便会触发扩容。每次扩容的容量都是之前容量的2倍。
HashMap的容量是有上限的,必须小于1<<30,即1073741824。如果容量超出了这个数,则不再增长,且阈值会被设置为Integer.MAX_VALUE,即永远不会超出阈值了。

jdk7的扩容机制

JDK7的扩容机制相对简单,有以下特性:

  • 空参数的构造函数:以默认容量、默认负载因子、默认阈值初始化数组。内部数组是空数组。
  • 有参构造函数:根据参数确定容量、负载因子、阈值等。
  • 第一次put时会初始化数组,其容量变为不小于指定容量的2的幂数。然后根据负载因子确定阈值。
  • 如果不是第一次扩容,则 新容量=旧容量*2, 新阈值=新容量*加载因子 。

jdk8的扩容机制

JDK8的扩容做了许多调整。
HashMap的容量变化通常存在以下几种情况:

  • 空参数的构造函数:实例化的HashMap默认内部数组是null,即没有实例化。第一次调用put方法时,则会开始第一次初始化扩容,长度为16。
  • 有参构造函数:用于指定容量。会根据指定的正整数找到不小于指定容量的2的幂数,将这个数设置赋值给阈值(threshold)。第一次调用put方法时,会将阈值赋值给容量,然后让 阈值=负载因子*容量 。(因此并不是我们手动指定了容量就一定不会触发扩容,超过阈值后一样会扩容!!)
  • 如果不是第一次扩容,则容量变为原来的2倍,阈值也变为原来的2倍。(容量和阈值都变为原来的2倍时,负载因子还是不变)
    此外还有几个细节需要注意:

首次put时,先会触发扩容(算是初始化),然后存入数据,然后判断是否需要扩容;
不是首次put,则不再初始化,直接存入数据,然后判断是否需要扩容;

ArrayList,LinkedList

频繁删除用linkedlist

Innodb表锁,行锁

Mysql隔离级别

未提交读(Read uncommitted)

已提交度(Read committed)

可重复读(Repeatable read)

可序列化(Serializable)

B+树,索引类型

IOC AOP

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值