• JAVA面试题总结基础篇(三)


    JAVA面试总结基础篇(三)



    前言

    到了大三的学期的暑假,即将面临找工作的考验。希望这份面试资料能够帮住大家学到自己的知识盲区。加油,我命由我不由天!!!


    一、ArrayList 和 LinkedList 的区别有哪些?

    ArraryList:
    优点:ArraryList是实现了动态数组的数据结构,因为地址是连续的,所以查询的效率会比较高(在内存里是连着放的)。
    缺点:因为地是连续放的,ArraryList需要移动,所以插入和删除的效率较低。

    LinkList:
    优点:LinkList是基于链表的数据结构,地址是随意的。所以在开辟空间上不需要等一个连续的地址。在使用场景上,LinkList适用于要头尾操作或指定插入的场景。
    缺点:因为LinkList需要移动指针,所以查询的性能要差。

    场景分析:
    1、当需要对数据进行多次随机访问的时候使用ArraryList。
    2、当需要对数据多次增删的时候使用LinkList。
    3、如果容量固定,只在尾部添加数据的时候使用ArraryList。
    当然,绝大数业务的场景下,使用 ArrayList 就够了,但需要注意避免 ArrayList 的扩容,以及非顺序的插入。

    二、用过 ArrayList 吗?说一下它有什么特点?

    ArraryList是java集合中的一种,用于存储相同类型的元素集,是一种变长的集合类,当加入数据到一定长度时会自动扩容。
    底层是数组实现,添加元素。
    高并发的情况下线程并不安全,多个线程同时控制ArraryList,可能会发生不可预知的错误。

    三、有了数组为什么还要搞一个ArraryList?

    通常在我们使用时,不知道要添加多少数据情况下,普通数据就很尴尬,因为你并不知道要初始化多少数组长度够用。
    而ArraryList可以在数据添加到一定长度的时候自动扩容。
    可以这么理解:我们说的普通的数组是死的数组,而ArraryList为动态数组。

    四、HashMap 中的 key 我们可以使用任何类作为 key 吗?

    平时可能大家使用的最多的就是使用 String 作为 HashMap 的 key,但是现在我们想使用某个自定义类作为 HashMap 的 key,那就需要注意以下几点:

    1、如果类重写了 equals 方法,它也应该重写 hashCode 方法。
    2、类的所有实例需要遵循与 equals 和 hashCode 相关的规则。
    3、如果一个类没有使用 equals,你不应该在 hashCode 中使用它

    五、HashMap 与 ConcurrentHashMap 的异同

    1、HashMap的线程是不安全的,ConcurrentHashMap在JUC是安全的。
    2、俩者都是键值对存储信息。
    3、HashMap底层是数组+链表(jdk1.8之前),在jdk1.8之后为数组+链表+红黑树。当链表的元素个数到8时,链表的查询速度不如红黑树,链表会转为红黑树,增加查询速度。
    4、HashMap的初始数组大小为16,当出现扩容的时候为0.75*数组大小。

    六、红黑树有哪几个特征?

    在这里插入图片描述

    七、说说你平时是怎么处理 Java 异常的

    try-catch-finally
    1、try负责监控可能会出现异常的代码
    2、catch负责捕获可能出现异常的代码,并且处理
    3、finally负责清理各种资源,不管是否有异常都执行
    4、其中 try 块是必须的,catch 和 finally 至少存在一个标准异常处理流程

    八、说说深拷贝和浅拷贝?

    **浅拷贝:**浅拷贝只是增加了一个指针指向了已有的地址。
    **深拷贝:**是增加了一个指针,并且增加一个新的内存,最后由指针指向新的内存。
    使用深拷贝的情况下,释放内存的时候不会因为出现浅拷贝时释放同一个内存的错误。
    最好是结合克隆已经原型模式联系在一起哈,记得复习的时候,把这几个联系起来的。

    总结

    JAVA面试题基础篇就到这了,接下来是JVM篇。将会持续更新,希望帮助到大家。
    重要的不是你所处的位置,而是你前进的方向!!!

  • 相关阅读:
    1370:最小函数值(minval)——优先队列
    如何处理十万级别的数据信息?
    python adb脚本
    论文阅读 Self-Mimic Learning for Small-scale Pedestrian Detection
    iperf简介与下载安装
    程序员保密协议-中文
    Linux 查看或统计网卡流量的几种方式么?
    前端状态码大全(200,404,503等)
    Spring-Spring之事务底层源码解析
    华为坤灵管理型交换机S300,S500,S310,S210,S220,S200 web端开局配置
  • 原文地址:https://blog.csdn.net/LXZ_1024/article/details/125458663