Java中高级工程师面试题及答案,Java面试题及答案汇总(二

Java中高级工程师面试题及答案,Java面试题及答案汇总(二需要注意Jdk1.8中对HashMap的实现做了优化,当链表中的节点数据超过八个之后,该链表会转为红黑树来提高查询效率,从原来的O(n)到O(logn)24.说一下HashSet的实现原理?HashSet底层由HashMap实现HashSet的值存放于HashMap的key上HashMap的value统一为PRESENT25.ArrayList和LinkedList的区别是什么?最明显的区别是ArrrayList底层的数据结构是数组,支持随机访问,而Linke

大家好,又见面了,我是你们的朋友全栈君。

需要注意Jdk 1.8中对HashMap的实现做了优化,当链表中的节点数据超过八个之后,该链表会转为红黑树来提高查询效率,从原来的O(n)到O(logn)

24. 说一下 HashSet 的实现原理?

  • HashSet底层由HashMap实现

  • HashSet的值存放于HashMap的key上

  • HashMap的value统一为PRESENT

25. ArrayList 和 LinkedList 的区别是什么?

最明显的区别是 ArrrayList底层的数据结构是数组,支持随机访问,而 LinkedList 的底层数据结构是双向循环链表,不支持随机访问。使用下标访问一个元素,ArrayList 的时间复杂度是 O(1),而 LinkedList 是 O(n)。

26. 如何实现数组和 List 之间的转换?

  • List转换成为数组:调用ArrayList的toArray方法。

  • 数组转换成为List:调用Arrays的asList方法。

27. ArrayList 和 Vector 的区别是什么?

  • Vector是同步的,而ArrayList不是。然而,如果你寻求在迭代的时候对列表进行改变,你应该使用CopyOnWriteArrayList。

  • ArrayList比Vector快,它因为有同步,不会过载。

  • ArrayList更加通用,因为我们可以使用Collections工具类轻易地获取同步列表和只读列表。

28. Array 和 ArrayList 有何区别?

  • Array可以容纳基本类型和对象,而ArrayList只能容纳对象。

  • Array是指定大小的,而ArrayList大小是固定的。

  • Array没有提供ArrayList那么多功能,比如addAll、removeAll和iterator等。

29. 在 Queue 中 poll()和 remove()有什么区别?

poll() 和 remove() 都是从队列中取出一个元素,但是 poll() 在获取元素失败的时候会返回空,但是 remove() 失败的时候会抛出异常。

30. 哪些集合类是线程安全的?

  • vector:就比arraylist多了个同步化机制(线程安全),因为效率较低,现在已经不太建议使用。在web应用中,特别是前台页面,往往效率(页面响应速度)是优先考虑的。

  • statck:堆栈类,先进后出。

  • hashtable:就比hashmap多了个线程安全。

  • enumeration:枚举,相当于迭代器。

31. 迭代器 Iterator 是什么?

迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。

32. Iterator 怎么使用?有什么特点?

Java中的Iterator功能比较简单,并且只能单向移动:

(1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。

(2) 使用next()获得序列中的下一个元素。

(3) 使用hasNext()检查序列中是否还有元素。

(4) 使用remove()将迭代器新返回的元素删除。

Iterator是Java迭代器最简单的实现,为List设计的ListIterator具有更多的功能,它可以从两个方向遍历List,也可以从List中插入和删除元素。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/144021.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • IC卡、ID卡及车库蓝牙卡的复制说明!(小区的门禁系统)[通俗易懂]

    IC卡、ID卡及车库蓝牙卡的复制说明!(小区的门禁系统)[通俗易懂]IC卡、ID卡及车库蓝牙卡的复制说明!(小区的门禁系统)

    2022年5月29日
    132
  • connectionStrings节的配置方法[通俗易懂]

    connectionStrings节的配置方法[通俗易懂]ASP.NETweb.config中数据库连接字符串connectionStrings节的配置方法作者:字体:[增加 减小]类型:转载ASP.NETweb.config中数据库连接字符串connectionStrings节的配置方法,需要的朋友可以参考一下在ASP.NET开发的网站根目录,有一个名为web.co

    2022年5月21日
    45
  • 微信公众号开发(一)服务器及接口的配置

    微信公众号开发(一)服务器及接口的配置微信公众号开发(一)服务器及接口的配置关于微信公众号中的订阅号和服务的区别这里不多加讨论,网上有很多资源可以搜到,这里直接进入正题,如果是个人开发者,这里建议使用测试号进行开发学习,测试号的权限要比个人订阅号要多的多,而本篇博客也是基于测试号进行开发的。在开始微信号开发之前需要准备好两样东西,1、需要一个测试号,2、需要一个拥有域名的服务器,下面将分别介绍怎样获取这两样东西。1、…

    2022年6月6日
    65
  • VMware许可证过期_windows许可证过期什么原因

    VMware许可证过期_windows许可证过期什么原因激活密钥VMware2017v14.x永久许可证激活密钥FF31K-AHZD1-H8ETZ-8WWEZ-WUUVACV7T2-6WY5Q-48EWP-ZXY7X-QGUWD这表文章解决了大部分的常见问题,大家可以去看看http://www.zdfans.com/5928.html

    2022年9月14日
    0
  • Selenium面试题

    Selenium面试题NO.1Selenium是什么是一个开源的web自动化测试的框架,支持多种编程语言,支持跨浏览器平台进行测试NO.2Selenium中有哪些验证点?Selenium主要有三种验证点检查页面标题检查某些文字检查某些元素(文本框,下拉菜单,表等)NO.3你如何从Selenium连接到数据库?Selenium是一个WebUI自动化工具。它不提供任何API来建立数据库连接。这取决于你使用Selenium进行自动化的编程语言。NO.4如何提高selenium脚本的执行速度?1.优

    2022年6月20日
    27
  • javaweb学习-jstl-<c:forEach>中 varStatus的属性简介

    javaweb学习-jstl-中 varStatus的属性简介

    2022年2月24日
    42

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号