后端面试真题整理

面试问题整理

本人主要记录2024年秋招、春招过程中的疑难八股真题,参考来源:牛客网、知乎等。

八股

  1. 深拷贝与浅拷贝
  • 浅拷贝: 浅拷贝会在堆上创建一个新的对象(区别于引用拷贝的一点),不过,如果原对象内部的属性是引用类型的话,浅拷贝会直接复制内部对象的引用地址,也就是说拷贝对象和原对象共用同一个内部对象。
  • 深拷贝: 深拷贝会完全复制整个对象,包括这个对象所包含的内部对象。

https://blog.51cto.com/u_16099325/7762799

链接中有深拷贝与浅拷贝的实现代码:

  • map实现深拷贝与浅拷贝:

    ####################浅拷贝#####################
    Map<String,String> map = new HashMap<>();
    Map<String,String> map1 = map;
    map.put("a","A");
    System.out.println(map);
    System.out.println(map1);
    // map1复制的是对象map的引用,map1和map指向的是同一个对象。这里我们可以通过System.identityHashCode(Object obj)来返回对象内存地址转化后的hashcode,之所以用不直接用map.hashCode(),是因为HashMap的实现类重写了hashCode方法,返回的值不子再是对象内存地址转化的hashcode了。
    
    ####################深拷贝#####################
    Map<String,String> map = new HashMap<>();
    Map<String,String> map1 = new HashMap<>();
    map.put("a","A");
    map1.putAll(map);
    System.out.println(map);
    System.out.println(map1);
    System.out.println(System.identityHashCode(map));
    System.out.println(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值