java常见的一些面试题

  1. JDK、JRE、JVM的区别:

    • JDK:java开发工具包,是java的核心,包括:JRE+编译、运行等命令工具
    • JRE:java运行环境,是运行java程序所必须的环境集合,包括:JVM+java系统类库
    • JVM:java虚拟机,是java实现跨平台的最核心部分,能够运行java语言所开发的程序
  2. java的8种基本数据类型是什么?(简述java的8种基本数据类型)

    • 8种基本数据类型包括:byte、short、int、long、float、double、boolean、char
      • byte:字节型,用于存储整数的,占用1个字节,范围-128到127
      • short:短整型,用于存储整数的,占用2个字节,范围-32768到32767
      • int:最常用的整型,用于存储整数的,占用4个字节,范围-2^31到2^31-1
      • long:长整型,用于存储较大的整数的,占用8个字节,范围-2^63到2^63-1
      • float:单精度浮点型,用于存储小数的,占用 4个字节,不能表示精确的值
      • double:双精度浮点型,最常用的存储小数的类型,占用8个字节,不能表示精确的值
      • boolean:布尔型,用于存储true或false,占用1个字节
      • char:字符型,采用Unicode字符编码格式,用于存储单个字符,占用2个字节
  3. switch可以作用于哪些数据类型上?

    • 只能作用于byte、short、int、char、String、枚举上,其它类型都不允许
  4. 抽象类和接口的区别:

    • 抽象类:
      • 由abstract修饰
      • 可以包含变量、常量、构造方法、普通方法、静态方法、抽象方法
      • 派生类通过extends继承
      • 只能继承一个(单一继承)
      • 抽象类中的成员,任何访问权限都可以
    • 接口:
      • 由interface定义
      • 可以包含抽象方法、常量、静态方法(jdk1.8后)、默认方法(jdk1.8后)
      • 实现类通过implements实现
      • 可以实现多个(多实现)
      • 接口中的成员,访问权限只能是public
  5. 重写(overriding)与重载(overloading)的区别:

    • 重写:发生在父子类中,方法名相同,参数列表相同
    • 重载:发生在同一类中,方法名相同,参数列表不同
  6. 实例变量与静态变量的区别:

    • 实例变量和静态变量都属于成员变量
      • 实例变量:是属于对象的,在创建对象时存储在内存堆中,创建多少个对象,则实例变量就会在内存中存在多少份,需要通过引用变量来访问
      • 静态变量:是属于类的,在类被加载是存储在内存方法区中,无论创建多少个对象,静态变量在内存中都只有一份,常常通过类名点来访问
  7. String s = new String("hello"); 创建了几个对象?

    • 两个。一个是hello字面量对象,另一个是new出来的对象
  8. String常用的方法有哪些?

    • length():获取字符串的长度(字符个数)
    • trim():去除两边的空白字符
    • toUpperCase()/toLowerCase():将英文部分给转换为全大写字母/全小写字母
    • startsWith()/endsWith():判断是否是以???开始/结束的
    • charAt():根据下标找字符
    • indexOf()/lastIndexOf():查找字符串第一次出现/最后一次出现的下标
    • substring():截取字符串
    • 静态方法valueOf():将其它类型的数据转换为字符串
    • matches():验证匹配(正则表达式)
    • replaceAll():替换(正则表达式)
    • split():拆分(正则表达式)
  9. ArrayList和LinkedList的区别:

    • ArrayList是基于数组实现的,容量不够时采用复制方式扩容,而LinkedList使用链表实现

    • ArrayList比LinkedList在随机访问的时候效率要高,因为ArrayList通过下标直接找到物理地址查询,性能好。LinkedList是链表结构,需要依次查找元素,性能不高。

    • LinkedList首尾增删具备很高的效率,而ArrayList的增删性能稍差。

      综合来讲:需要频率读取集合中的元素时,更推荐使用ArrayList,而在头尾增删操作较多时,更推荐使用LinkedList。ArrayList综合性能优秀,应优选。

  10. Collection和Collections的区别:

    • Collection是一个集合接口,是所有集合类的一个顶级接口,它里面定义了所有集合通用的方法,List和Set直接继承了Collection接口。
    • Collections是集合的一个工具类,其中提供了一系列静态方法,用于对集合中的元素进行排序、反转、搜索以及线程安全等操作。
  11. 函数式接口?

    • 是指仅仅只包含一个必须被实现类重写的方法,但可以有多个非抽象方法(默认方法、静态方法)的接口。
  12. java是值传递还是引用传递?

    • 在java中,无论是基本类型还是引用类型,都是值传递
      • 对于基本类型而言,传递的是具体的值的副本
      • 对于引用类型而言,传递的是具体的地址的副本
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值