JavaSE面试题长期更新

Posted 武帅祺的官方网站

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaSE面试题长期更新相关的知识,希望对你有一定的参考价值。

面试题

  • 1包装类型的缓存机制了解过么

    包装类型的缓存机制了解过么
    /*
    Byte Short Integer Long 底层维护一个[-128,127]的缓存数组来提升性能
    Character 底层维护一个[0,127]的数组
    Boolean包装类型直接返回true或者false
    */
    

  • 2自动装箱和拆箱 底层原理

    答案
    /*
    装箱 将基本类型转换为相应的包装类型实际上是调用了包装类型的构造方法进行初始化 
    拆箱 将包装类型转换为基本数据类型 编译器在编译阶段自动拆箱操作底层会调用valueOf()方法
    */
    

  • 3值传递和址传递的区别

    答案
    /*
     参数传递存在于Java方法传参的时候 其实不论值传递还是引用传递本质上都是一份原先数据的拷贝 
     基本类型拷贝值 引用类型拷贝的是址() 也即操作值不影响实参 操作址影响原参
    */
    

  • 4方法重载和方法重写

    答案
    /*
    方法重写就是对父类的方法进行覆盖操作 需要保证(返回值 方法名 参数列表)完全一致 并保证访问符范围只能扩大或一致
    方法重载是指允许本类存在多个方法名相同但参数列表不同的方法
    */
    

  • 5为什么重写equals()还要重写hashcode()

    答案
    /*  
    Object类中equals()默认比较的是引用地址 如果你需要对内容相等性进行判断 需要进行重写equals()操作
    hashCode()方法用于返回一个对象的哈希码值(整数),该值通常用于哈希表中的键值。
    如果您计划使用某个类型的对象作为哈希表的键,则必须重写hashCode()方法并提供自己的实现
    如果您仅重写了equals()方法而不重写hashCode()方法,则可能会导致equals相等的对象具有不同的哈希码,
    这可能会影响哈希表的性能,也可能会导致无法正确地检索哈希表中的对象
    */
    

  • 6 深拷贝和浅拷贝的区别

    答案
    /*
    深拷贝不仅拷贝对象还拷贝对象中引用对象 两个引用对象完全隔离 各自操作互不影响
    浅拷贝两个引用对象虽然地址不同 但内部的引用类型地址却相同
    */
    

  • 7深拷贝有哪些场景 如何实现深拷贝

    答案
    /*
    需要克隆的类都需要实现空接口Cloneble 并且重写Object类中protected修饰的clone()方法
    场景:序列化与反序列化传递对象 避免数据共享问题
    */
    

  • ``

    答案
    /*
    
    */
    

JavaSE 面试题: 方法的参数传递机制

JavaSE 面试题 方法的参数传递机制

import java.util.Arrays;

public class Test 
    public static void main(String[] args) 
        int i = 1;
        String str = "hello";
        Integer num = 200;
        int[] arr = 1, 2, 3, 4, 5;
        MyData my = new MyData();

        change(i, str, num, arr, my);

        System.out.println("i = " + i);
        System.out.println("str = " + str);
        System.out.println("num = " + num);
        System.out.println("arr = " + Arrays.toString(arr));
        System.out.println("my.a = " + my.a);
    

    public static void change(int j, String s, Integer n, int[] a, MyData m) 
        j += 1;
        s += "world";
        n += 1;
        a[0] += 1;
        m.a += 1;
    


class MyData 
    int a = 10;

参考答案

i = 1
str = hello
num = 200
arr = [2, 2, 3, 4, 5]
my.a = 11

以上是关于JavaSE面试题长期更新的主要内容,如果未能解决你的问题,请参考以下文章

3.5万字 JavaSE温故而知新!(结合jvm 基础+高级+多线程+面试题)

020期JavaSE系列面试题总结

JavaSE 面试题: 方法的参数传递机制

JavaSE面试题——集合容器

007期JavaSE面试题:异常

005期JavaSE面试题:String类