东莞大朗网站建设仗剑,网站优化关键词排名公司,wordpress 搜索 很慢,精准营销通俗来说是什么目录 第四幕 、第一场#xff09;大厦楼下门口第二场#xff09;大门口 友情提醒 背面试题很枯燥#xff0c;加入一些戏剧场景故事人物来加深记忆。PS:点击文章目录可直接跳转到文章指定位置。 第四幕 、
第一场#xff09;大厦楼下门口
【面试者老王#xff0c;门卫甲… 目录 第四幕 、第一场大厦楼下门口第二场大门口 友情提醒 背面试题很枯燥加入一些戏剧场景故事人物来加深记忆。PS:点击文章目录可直接跳转到文章指定位置。 第四幕 、
第一场大厦楼下门口
【面试者老王门卫甲门卫乙面试者奥斯卡】
门卫甲天下熙熙皆为利来天下攘攘皆为利往像门卫乙和我这样不为名利专心看门世界上又有多少人呢
门卫乙天下英雄,唯门卫甲与乙耳
老王面试失败了找个保安工作吧先问问情况。保安大哥你们平时都干嘛呢
门卫甲一般讨论Java面试题总不能一直干这行啊。1.说一下集合体系
门卫乙分为单列集合体系和双列集合体系。如图 单列集合顶层接口Collection 一、列表(List)集合区分元素的顺序且允许包含重复元素。 ①List:列表元素是有序的(元素带角标索引)可以有重复元素,可以有null元素。 ②ArrayList:底层的数据结构是数组数据结构特点是查询速度快(因为带角标)但是增删速度稍慢,因为当元素多时增删一个元素则所有元素的角标都得改变默认长度是10当超过长度时按50%延长集合长度。线程不同步。 ③LinkedList:底层数据结构式链表数据结构(即后面一个元素记录前一个) 特点查询速度慢因为每个元素只知道前面一个元素但增删速度快因为元素再多增删一个只要让其前后的元素重新相连即可线程不同步的。 ④Vector:底层数据结构是数组数据结构.特点是查询和增删速度都很慢。默认长度是10当超过长度时,按100%延长集合长度。线程同步。 一般情况下使用哪种List接口下的实现类呢 如果要求增删快考虑使用LinkedList 如果要求查询快考虑使用ArrayList 如果要求线程安全考虑使用Vector。 二、集(Set):Set集合中不区分元素的顺序不允许出现重复元素。 ①HashSet:底层数据结构是哈希表、存取速度快、元素唯一、线程不同步。 ②TreeSet:底层数据结构式二叉树。可以对Set集合中的元素进行排序。元素有序、线程不同步。
双列映射顶层接口Map 三、Map集合存储的是键值对,而且键是唯一的,Map和Set很像,Set集合底层就是使用了Map集合。Map集合没有迭代器要取出元素必须先将Map集合转换成Set集合才能遍历元素 ①HashTable: 底层是哈希表数据结构不可以使用null键和null值用作键的对象必须实现hashCode和equals方法来保证键的唯一性。线程同步效率低 ②HashMap:底层是哈希表数据结构允许使用null键和null值线程不同步效率高 ③TreeMap:底层是二叉树结构允许使用null键和null值线程不同步
老王都说Java卷更有卷似Java者。保安这一行也不好干啊。咦奥斯卡你怎么这么快就面试完出来了。
奥斯卡面试官问我2.HashMap的工作原理是什么我没回答出来。
老王HashMap的工作原理是 ①Java 中的 HashMap 是以键值对(key-value)的形式存储元素的。HaspMap的key可以为null。 ②HashMap 需要一个 hash 函数它使用 hashCode()和 equals()方法来向集合添加和检索元素。 ③当调用 put()方法的时候HashMap 会计算 key 的 hash 值然后把键值对存储在集合中合适的索引上。如果 key已经存在了value 会被更新成新值。HashMap 的一些重要的特性是它的容量负载因子和扩容极限。当put的时候大于等于容量的0.75时会进行扩容。 ④多线程环境下若使用HashMap需要使用Collections.synchronizedMap()方法来获取一个线程安全的集合
奥斯卡“美人赠我锦绣段何以报之青玉案”谢谢你告诉我答案。你面试怎么样肯定也没过吧。
老王惜败。说说3.HashMapTreeMapHashTable的区别
奥斯卡幸好我以前写过这个的博客集合博客
区别存储底层如何选择key是否允许null是否线程同步HashMap存储无序哈希表不需要排序允许非线程安全HashTable存储无序哈希表需要线程安全不允许线程安全TreeMap存储无序红黑树需要排序不允许非线程安全LinkedHashMap存储有序链表和哈希表需要存储有序允许非线程安全
老王说说4.数组(Array) 和列表(ArrayList) 有什么区别
奥斯卡如下
数组集合固定长度无法改变长度可改变可以扩容可以存储基本类型数据还可以存储引用类型的数据但是只能存储相同类型的数据。只能存储引用类型的数据并且可以存储不同引用类型的数据。
老王说说5.list集合与set集合有什么区别
奥斯卡如下表可以看出来很复杂。
特点ListSet重复元素可以重复不可重复下标有下标没有下标存储有序,可存储多个null无序只能存一个null函数拥有独有函数无特有函数均来自Collection遍历有下标可多种方式遍历无下标只能用迭代器遍历数据结构ArrayList底层是可变数组线程不安全效率高HashSet数据结构是哈希表无序数据结构LinkedList底层是链表TreeSet底层数据结构是二叉树有序数据结构Vector底层是可变数组线程安全效率低LinkedHashSet底层是哈希表和链表与别的set集合不同它是有序的
老王休息一下下一场见。
第二场大门口
【面试者老王门卫甲门卫乙面试者奥斯卡】
门卫甲滚滚长江东逝水浪花淘尽英雄。我去东边卫生间逝个水门卫乙你先蹲这看会儿门。
门卫乙去卫生间你记得把你右后腿抬起来滋。
老王你俩真有趣不如我们继续讨论面试题吧。 6.Collections和Collection的区别
门卫乙 ①Collection是个java.util下的接口它是各种集合结构的父接口定义了集合对象的 基本操作方法。 ②Collections是个java.util下的工具类它包含有各种有关集合操作的静态方法主要是针对集合类的一个帮助类或者叫包装类它提供一系列对各种集合的搜索排序线程安全化等操作方法。
老王那么。 7.Comparable和Comparator接口是干什么的有什么区别。
门卫乙 ①Comparable 接口只包含compareTo()方法。可给两个对象排序。返回负数0正数来表明输入对象小于等于大于已经存在的对象。 ② Comparator 接口包含 compare()和 equals()两个方法。compare()方法用来给两个输入参数排序返回负数0正数表明第一个参数是小于等于大于第二个参数。equals()方法需要一个对象作为参数它用来决定输入参数是否和 comparator 相等。只有当输入参数也是一个 comparator 并且输入参数和当前 comparator 的排序结果是相同的时候这个方法才返回 true。
老王最后一个问题。 8.集合中有哪些线程安全类哪些是不安全的哪些是支持排序的类
奥斯卡 ①线程安全类Vector、Hashtable、Stack。 ②线程不安全的类ArrayList、Linkedlist、HashSet、TreeSet、HashMap、TreeMap ③支持排序的类有HashSet、LinkedHashSet、TreeSet等 ④一个是不支持排序的List接口一个是有自身排序的Set接口