JavaSE面试题

​​​​​​

  1. JDK、JRE和JVM的关系

    JDK是用于开发Java程序的工具包,包含了JRE;JRE是Java程序运行的环境,包含了JVM和Java类库;JVM是Java程序的运行引擎,负责解释和执行Java字节码。
  2. 栈和堆分别存的什么数据

    栈主要存储局部变量和方法调用信息,由编译器自动管理;堆主要存储动态分配的对象实例和数组,由程序员手动管理。
  3. 异步和同步

    同步模式是按顺序逐行执行,需要等待上一个操作完成才能进行下一个操作;异步模式可以同时执行多个任务,并能够无需等待,提高程序的并发性和响应性。
  4. 线程和进程区别

    进程是资源分配的基本单位,拥有独立的内存空间和系统资源;线程是执行流的基本单位,共享进程的资源。线程更轻量级,切换开销小,适用于需要高并发和任务切换的场景;而进程相对重量级,适用于需要隔离和资源独立的场景。
  5. java的数据类型有哪些

    类型占用字节取值范围包装类默认值
    byte(字节型)1-128~127(-2的7次方到2的7次方-1)Byte0
    short(短整型)2-32768~32767(-2的15次方到2的15次方-1)Short0
    int(整型)4-2147483648~2147483647(-2的31次方到2的31次方-1)Integer0
    long(长整型)8-9223372036854774808~9223372036854774807(-2的63次方到2的63次方-1)Long0L
    float(浮点型)43.402823e+38~1.401298e-45(e+38 表示乘以10的38次方,而e-45 表示乘以10的负45次方Float0.0f
    double(双精度浮点型)81.797693e+308~4.9000000e-324(e+38 表示乘以10的38次方,而e-45 表示乘以10的负45次方Double0.0d
    boolean(布尔型)2true falseBooleanfalse
    char(字符型)1汉字字母都可以Character\u0000
  6. equals和HashCode重写的问题?

    默认情况下,Object类提供的equals()方法比较的是对象的引用地址,而hashCode()方法生成的哈希码是基于对象的内存地址计算的。然而,在实际应用中,我们往往需要根据自定义的逻辑来判断两个对象是否相等,而不仅仅是比较引用地址。这就需要重载equals()方法,按照我们自己的逻辑来实现对象的相等比较。
    如果我们重载了equals()方法但没有同时重载hashCode()方法,那么就会导致对象无法正确地放入哈希表中,进而影响哈希表的性能。因为hashCode()方法在哈希表中用于确定对象在桶(bucket)中的位置,如果不重载hashCode()方法,那么哈希表将无法正确找到相等的对象,从而影响了查找和删除操作的效率。
  7. 深拷贝和浅拷贝的区别

    浅拷贝:浅拷贝是指只复制对象本身的值,不复制它所引用的对象,因此新旧对象共享同一个引用对象。在 Java 中,可以通过实现 Cloneable 接口和覆盖 clone() 方法来实现浅拷贝。

    深拷贝:深拷贝是指复制对象本身和所有它所引用的对象,因此新旧对象不共享任何引用对象。在 Java 中,可以通过实现 Serializable 接口和使用序列化/反序列化来实现深拷贝。

    浅拷贝是复制对象的引用,多个对象指向同一块内存空间,修改其中一个对象会影响到其他对象。深拷贝是复制对象本身,创建一个新对象,新对象和原始对象完全独立,修改新对象不会影响原始对象。需要根据具体的需求选择合适的拷贝方式。如果需要保持对象之间的独立性,应该使用深拷贝。如果只是需要多个对象共享数据,可以使用浅拷贝。

  8. ==和equals的区别

    使用"=="来检查两个对象的引用是否相等,即判断它们是否指向同一个对象。

    使用"equals()"方法来比较两个对象的内容是否相等,即根据逻辑判断对象的相等性。
  9. 常见的运行时异常有哪些?

    NullPointerException(空指针异常):当尝试在一个空对象上调用方法、访问或修改其中的属性时抛出。

    ArrayIndexOutOfBoundsException(数组下标越界异常):当尝试访问数组中不存在的索引位置时抛出,索引值小于0或大于等于数组长度。

    ClassCastException(类转换异常):当发生类型转换时,如果转换不是合法的,例如将一个对象强制转换为不相关的类型,就会抛出此异常。

    IllegalArgumentException(非法参数异常):当传递给方法的参数不符合方法要求时抛出,包括参数为空或超出范围等情况。

    ArithmeticException(算术异常):当发生数学运算错误时抛出,如除以零或超出数值范围。
    ​​​​​​​
    NumberFormatException(数字格式异常):当无法将字符串转换为数字类型时抛出,例如使用Integer.parseInt()解析非数字字符串。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值