当前位置: 首页 > news >正文

开原铁岭网站建设/贵阳网络推广外包

开原铁岭网站建设,贵阳网络推广外包,做视频网站空间要多大,没有网站怎么做cpa赚钱之前写文章记录笔记,草草了事,现在我决定还是要严谨一点, 稍微要有一点~~~~ 就是这种大佬的气息(虽然菜狗无疑),O(∩_∩)O哈哈~ 感觉每天都是敲代码 搬砖 , 太无聊了,就找找事情做! 我也会加油的 哈哈DL! 我要坚持 大家督促 ,看文章的你也要加油啊&am…

   之前写文章记录笔记,草草了事,现在我决定还是要严谨一点, 稍微要有一点~~~~

就是这种大佬的气息(虽然菜狗无疑),O(∩_∩)O哈哈~  感觉每天都是敲代码 搬砖 ,

太无聊了,就找找事情做!  我也会加油的  哈哈DL!

我要坚持 大家督促 ,看文章的你也要加油啊!!   

每个人生活都有自己的节奏和时区,过好当下,未来真的太迷茫了!我就慢慢珍惜当下把,不去焦虑,不去怀疑,慢慢寻找自己

                                                                                                                                                                                                                                                                     _______汤圆

开始上车!

  • 面试题1:对比 Vector、ArrayList、LinkedList 有何区别?适合在什么场景下使用
    • 正经回答:
    • 深入追问:
      • 追问1:多线程场景下就不能使用ArrayList么?

  • 面试题2:List 和 Set 有哪些区别?
    • 正经回答:
    • 深入追问:
      • 追问1:Set 和 List 效率上对比怎么样呢?
      • 追问2:说一下 HashSet 的实现原理?
      • 追问3:HashSet是如何保证Key不重复的?
  • 面试题3:Array 和 ArrayList 有何区别?
    • 正经回答:
  • 每日小结

=============================================================================================

  本栏目Java开发岗高频面试题主要出自以下各技术栈:Java基础知识、集合容器、并发编程、JVM、Spring全家桶、MyBatis等ORMapping框架、MySQL数据库、Redis缓存、RabbitMQ消息队列、Linux操作技巧等。

=============================================================================================

面试题1:对比 Vector、ArrayList、LinkedList 有何区别?适合在什么场景下使用:

正经回答:

 这三者都是实现了集合框架中的 List,也就是有序集合,因此具体功能也比较近似,比如都提供按照位置进行定位、添加或者删除的操作,都提供迭代器以遍历其内容等。但因为具体的设计区别,在行为、性能、线程安全等方面,表现又有很大不同。

Vector:
  是 Java 早期提供的线程安全的动态数组,如果不需要线程安全并不建议选择,毕竟同步是有额外开销的。
  Vector 内部是使用对象数组来保存数据,可以根据需要自动的增加容量。当数组已满,开始扩容时,会先创建新的扩容后数组,并拷贝原有数组数据,最后删除原数组。
 


ArrayList(擅长 "查询" 和 "更新" 场景):

  是应用更加广泛的动态数组实现,它本身不是线程安全的,所以性能要好很多。与 Vector 近似,ArrayList 也是可以根据需要调整容量,不过两者的调整逻辑有所区别,Vector 在扩容时会提高 1 倍,而 ArrayList 则是增加 50%

  • 数据结构:ArrayList 是动态数组的数据结构实现;
  • 随机查询效率:(优势),ArrayList 比 LinkedList 在随机访问的时候效率要高,因为 LinkedList 是线性的数据存储方式,所以需要移动指针从前往后依次查找,而ArrayList根据角标index直接锁定位置。
  • 插入和删除效率:在List中间插入和删除数据时,ArrayList 要比 LinkedList 效率低很多,因为 ArrayList 增删操作要影响数组内的其他数据的下标(整体移动),而如果是正常的末尾追加方式,效率大体相同。
  • 内存空间占用:LinkedList 比 ArrayList 更占内存,因为 LinkedList 的节点除了存储数据,还存储了两个引用,一个指向前一个元素,一个指向后一个元素。

 


LinkedList(擅长 "插入" 和 "删除" 场景):
  顾名思义是 Java 提供的双向链表,所以它不需要像上面两种那样调整容量,它也不是线程安全的。

  • 数据结构:LinkedList 是双向链表的数据结构实现。
  • 随机查询效率:相比ArrayList (劣势)
  • 插入和删除效率:LinkedList按序号查询数据时需要进行前向或后向遍历,但插入数据时只需要记录当前项的前后项即可,增删时也只需修改链表指向即可,所以 LinkedList 插入和删除速度较快。(优势)
  • 内存空间占用:相比ArrayList (劣势)

 

 


 


深入追问:

追问1:多线程场景下就不能使用ArrayList么?

       我们知道ArrayList 不是线程安全的,如果遇到多线程场景,可以通过 Collections 的 synchronizedList 方法将其转换成线程安全的容器后再使用。例如像下面这样:

List<String> syncList = Collections.synchronizedList(arraylist);
 

 

面试题2:List 和 Set 有哪些区别?

正经回答:

 List、Set 都是继承自Collection 接口,区别主要有以下几点:

  • 重复对象

  list方法可以允许重复的对象,而set方法不允许重复对象;

  • null元素

  list可以插入多个null元素,而set只允许插入一个null元素;

  • 容器是否有序

  list是一个有序的容器,保持了每个元素的插入顺序。即输出顺序就是输入顺序,而set方法是无序容器,无法保证每个元素的存储顺序,TreeSet通过 Comparator 或者 Comparable 维护了一个排序顺序
 

  • 常用的实现类

 list方法常用的实现类有:

  ArrayList、LinkedList 和 Vector。ArrayList最常用,提供使用索引(index)访问,定位、查询效率高;而LinkedList 则对于经常需要从 List 中添加或删除元素的场合更为合适,Vector 表示底层数组,线程安全,效率低被边缘化~

Set方法中常用的实现类有:

  HashSet、LinkedHashSet 以及 TreeSet。最常用的是基于 HashMap 实现的 HashSet;另外TreeSet 还实现了 SortedSet 接口(支持排序),因此 TreeSet 是一个可根据 compare() 和compareTo()方法进行排序的有序容器。

  • 遍历方式 

   List 支持for循环,也就是通过下标来遍历,也可以用迭代器(Iterator),但是set只能用迭代,因为他无序,无法用下标来取得想要的值。

深入追问:

追问1:Set 和 List 效率上对比怎么样呢?

Set
  删除和插入效率高,插入和删除不会引起元素位置改变。检索元素的话,效率低下;当然,在理想情况下,不考虑哈希冲突的情况,且仅需一次定位即可完成,时间复杂度为O(1),但是不现实。

List
  和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变

 

  曾测试过1000万元素情况下,Set查询第9999999个元素用时0.203秒,List查询第9999999个元素用时0.01秒; 

追问2:说一下 HashSet 的实现原理?

HashSet 底层是基于 HashMap 实现的,能够继承 HashMap 的所有特性,因此 HashSet 结构也是数组+链表+红黑树,同样也不能使用get方法,HashSet 的操作,基本上都是直接调用底层 HashMap 的相关方法来完成,不允许key重复,但支持null对象作为key。
 

追问3:HashSet是如何保证Key不重复的?

 HashSet 的值是不能重复的,在业务上经常被用来做数据去重的工作,那么,他是怎么保证元素不重复的呢?

  当我们对一个HashSet 的实例添加一个值时,使用到的是它的 add 方法,源码如下:

public boolean add(E e) {
    return map.put(e, PRESENT)==null;
}
 

由代码中的 add 方法实现可知,其维护了一个 HashMap 来实现元素的添加;我们知道,HashMap 作为双列集合,它的键是不能够重复的,HashMap 针对 hashCode 相同且 equals 比较值相同的时候执行的是更新操作,所以Hashmap中的key是唯一的,也决定了hashset元素值也是唯一的。 (敲黑板 面试经常问的)

面试题3:Array 和 ArrayList 有何区别?

正经回答:

  • Array 可以存储基本数据类型和对象,ArrayList 只能存储对象。
  • Array 是指定固定大小的,而 ArrayList 大小是自动扩展的。
  • Array 内置方法没有 ArrayList 多,比如 addAll、removeAll、iteration 等方法只有 ArrayList 有。

 Array 和 ArrayList可以互相转换,Array 转 List有: Arrays.asList(array);而List 转 Array有:List.toArray()方法。

每日小结:

我感觉好难坚持啊!  我就是要坚持 我还不信了!  加油把  

自律轻如鸿毛,后悔重于泰山 

 

 

 

https://blog.csdn.net/qq_39390545/article/details/117423180?spm=1001.2014.3001.5501

http://www.lbrq.cn/news/1257409.html

相关文章:

  • 濮阳做网站的公司/深圳网站关键词优化公司
  • 云南热搜科技有限责任公司/seo在线培训机构排名
  • 安阳百度网站制作多少钱/网站seo站外优化
  • 中山网站建设收费标准/万江专业网站快速排名
  • 做网站 给图片加链接/网站制作策划
  • 哪里可以做期货网站平台/小视频关键词汇总
  • 昌黎网站建设/seo赚钱培训
  • 百度地图怎么放在网站上/加盟教育培训哪个好
  • 如何创网站/应用商店下载安装
  • 求个网站2021/线上营销的方式
  • 建设工程168网站/营销 推广
  • 济南最好的网站制作公司/网络优化seo薪酬
  • dw做的网站如何使用/百度小说搜索排行榜
  • 河北省最大的网页设计公司/浙江seo推广
  • 网站雪花特效/经典营销案例分析
  • 南昌商城网站建设/台州seo
  • 做网站需要什么学历/杭州网站搜索排名
  • wordpress单页下载/搜索引擎优化涉及的内容
  • 做电影资源网站服务器怎么选/宁波seo推广方式排名
  • 网站的建设/微营销推广软件
  • WordPress金融网站/重庆镇海seo整站优化价格
  • 用discuz做网站/外贸营销网站
  • 济南网站建设多少钱/手机搜索引擎排名
  • 安阳网站自然优化/东莞seoseo关键词排名优化
  • 动态网站设计用那个软件/seo兼职工资一般多少
  • 西宁网站建设公司排名/广州seo外包公司
  • 济南市做网站/电脑培训学校排名
  • 独立建站系统/太原百度关键词排名
  • 高端网站设计 公司新鸿儒/来宾seo
  • 网站开发税收分类/查网站排名
  • (论文速读)Text-IF:基于语义文本引导的退化感知交互式图像融合方法
  • 【BUUCTF系列】[极客大挑战 2019]LoveSQL 1
  • Redis实战(7)-- 高级特性 Redis Stream数据结构与基础命令
  • 基于springboot的在线考试系统/考试信息管理平台
  • 防御综合实验
  • windows系统安装文生图大模型Stable diffusion V3.5 large(完整详细可用教程)