2024最新!!Java后端面试题(1)看这一篇就够了

hello uu们 感谢收看!!!!我最近听了一首歌《21》,真的很感慨,马上步入20的我也感觉时间真的飞快...望大家都能过上理想的生活,不负内心的所托...

正如人民日报所言,“请你努力,为了自己。”

一、Java基础

  1. JDK 和 JRE 有什么区别?

    • **JDK(Java Development Kit)**是开发工具包,包含了用于开发Java应用程序的工具,如编译器(javac)、调试器和JRE。它提供了开发Java应用所需的所有环境和工具。
    • **JRE(Java Runtime Environment)**是Java运行环境,提供了运行Java程序所需的环境,包括JVM(Java Virtual Machine)、核心类库和其他支持文件。它不包括开发工具,因此不能用于开发应用。
  2. == 和 equals 的区别是什么?

    • **==**运算符用于比较对象的引用(内存地址),即判断两个对象是否是同一个对象。
    • **equals()**方法用于比较对象的内容,判断两个对象的属性是否相等。在默认情况下,equals()方法与==相同,但可以在类中重写以实现内容比较。
  3. 两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?

    • 不一定。根据Java的规范,如果两个对象相等(即equals()返回true),则它们的hashCode()值必须相同。但是,两个不同的对象也可能产生相同的hashCode(哈希碰撞)。所以仅根据hashCode相同不能判断equals为true。
  4. final 在 Java 中有什么作用?

    • final关键字用于限制类、方法和变量。用法如下:
      • :被final修饰的类不能被继承。
      • 方法:被final修饰的方法不能被重写。
      • 变量:被final修饰的变量一旦赋值后,不可改变。
  5. java 中的 Math.round(-1.5) 等于多少?

    • Math.round(-1.5)等于-1。根据浮点数的舍入规则,负数会向上取整(趋向于零)。
  6. String 属于基础的数据类型吗?

    • 不属于。String是一个对象类型,属于Java中的引用数据类型。尽管String有时被称为基础类型,但它实际上是由java.lang.String类实现的。
  7. java 中操作字符串都有哪些类?它们之间有什么区别?

    • String:不可变的字符序列,一旦创建后不能被修改。
    • StringBuilder:可变字符序列,线程不安全,适用于单线程环境下进行大量字符串拼接。
    • StringBuffer:可变字符序列,线程安全,适用于多线程环境下的字符串操作。
  8. String str="i"与 String str=new String("i")一样吗?

    • 不一样String str = "i"; 是字符串常量池中的引用,而String str = new String("i"); 创建了一个新的String对象,不会复用常量池中的字符串。因此,常量池中的"i"new String("i")内存地址不同。
  9. 如何将字符串反转?

    • 可以使用StringBuilder的reverse()方法:
      String reversed = new StringBuilder(original).reverse().toString();
      

  10. String 类的常用方法都有那些?

    • 常用方法包括:
      • length()
      • charAt(int index)
      • substring(int beginIndex, int endIndex)
      • indexOf(String str)
      • toLowerCase()/toUpperCase()
      • trim()
      • replace()
      • split(String regex)
      • contains(CharSequence sequence)
  11. 抽象类必须要有抽象方法吗?

    • 不必须。抽象类可以没有抽象方法,但它不能被实例化。
  12. 普通类和抽象类有哪些区别?

    • 普通类可以被实例化,抽象类不能。
    • 抽象类可以包含抽象方法,普通类不能。
    • 抽象类可以有构造函数,普通类也可以;但抽象类的构造函数只用于子类。
  13. 抽象类能使用 final 修饰吗?

    • 可以。使用final修饰的抽象类不能被继承。
  14. 接口和抽象类有什么区别?

    • 接口只能包含抽象方法(Java 8及以后的版本可以有默认方法和静态方法),而抽象类可以有方法的具体实现。
    • 接口支持多重继承,一个类可以实现多个接口;而一个类只能继承一个抽象类。
    • 接口中的变量默认是public static final,而抽象类的变量可以有不同的访问修饰符。
  15. java 中 IO 流分为几种?

    • IO流主要分为两大类:
      • 字节流:用于处理二进制数据,如InputStream和OutputStream。
      • 字符流:用于处理字符数据,如Reader和Writer。
  16. BIO、NIO、AIO 有什么区别?

    • BIO(Blocking I/O):传统的阻塞I/O方式,每个请求都需要一个线程,适合小量并发的场景。
    • NIO(Non-blocking I/O):非阻塞I/O,支持多路复用;通过选择器(Selector)实现,它允许单线程处理多个客户端的连接,适合大并发的场景。
    • AIO(Asynchronous I/O):异步I/O,允许操作在后台进行,不会阻塞主线程;通过回调机制可以实现更高的并发性能。
  17. Files的常用方法都有哪些?

    • Files.readAllLines(Path path):将文件全部读取为一行的列表。
    • Files.write(Path path, Iterable<? extends CharSequence> lines):写入文本内容。
    • Files.copy(Path source, Path target):复制文件。
    • Files.delete(Path path):删除文件。
    • Files.exists(Path path):检查文件是否存在。
    • Files.createFile(Path path):创建新文件。
    • Files.move(Path source, Path target):移动或重命名文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值