- 博客(9)
- 收藏
- 关注
原创 Java集合面试题(六)
Java不推荐使用类似上面双括号({{}})的方式初始化集合,原因是双括号初始化会产生匿名内部类,而非静态匿名内部类又会隐式强引用外部类,如果两个类的实例对象的生命周期不一致,就会导致外部类无法被及时回收,如果同时产生大量匿名内部类,就有可能造成内存泄露。,阻塞队列中的关键方法都使用了内部锁或其他形式的并发控制,因此,对阻塞队列的写入、读取等操作无需考虑并发问题。含义:阻塞队列(BlockingQueue)是一个支持两个附加操作的队列,分别是支持阻塞插入和阻塞删除。
2024-02-01 15:17:33 370 1
原创 Java集合面试题(五)
对于查询操作,ArrayList性能更优,因为ArrayList根据下标对元素进行随机访问,时间复杂度为O(1),而LinkedList由于每个元素连接在一起,不能随机访问,因此查询时间复杂度为O(n)。:即安全失败,当迭代器遍历集合时,会先复制一份再进行遍历,因此原集合的结构发生变更操作不会影响复制集合的遍历,也不会抛出ConcurrentModificationException异常。的场景,因为每次写入数据都要对集合进行复制,频繁的写入会使性能和内存的开销较大,如果集合很大,还容易造成内存溢出。
2024-01-31 17:14:11 1115
原创 Java集合面试题(四)
每个Segment是一个可重入锁,多线程并发操作时,只锁住对应的Segment而不是整个Segment 数组,从而提升了并发性能。2)Array转List:使用Arrays.asList(array)方法,此方法转出来的List不允许更改,如需要更改,可使用new ArrayList(Arrays.asList(array))原因:Hashtable是在JDK1.0推出,而集合的统一命名规范(驼峰命名)是在JDK 2推出,Java为了兼容旧版本的JDK,于是一直保留Hashtable的命名方式,直到现在。
2024-01-30 13:51:44 940 1
原创 Java集合面试题(三)
0.75是经过一系列比对之后,在平衡内存和性能之间取得比较好的权衡。1)如果负载因子过高(1.0),表示容量满了才扩容,那么填满的元素就会越多,空间利用率也就越高,但hash冲突的几率也会加大。2)如果负载因子过低(0.5),表示容量达到一半就扩容,那么填满的元素就会越少,空间利用率也就越低,但hash冲突的几率也会减少。源码翻译过来的意思就是,HashMap的负载因子(loadFactor)默认值为0.75,意味着哈希表容量达到75%时会触发扩容操作。
2024-01-29 11:45:21 1340
原创 Java集合面试题(一)
本篇开始列举Java常见的集合面试题。Java集合:按照官方的定义是,它提供了一种更高级别的抽象,允许用户方便地进行添加、删除、查找和遍历操作。
2024-01-27 14:11:12 978 1
原创 Java基础面试题(三)
StringBuffer适用于多线程操作同一个StringBuffer的场景,StringBuilder适用于单线程场景。
2024-01-26 11:09:29 804
原创 Java基础面试题(二)
Throwable是Java异常的父(祖先)类,所有的异常都继承这个类,Error类和Exception类是Throwable类的两个子类。2)方法重载:是一个类中方法多态的一种表现,即一个类中可以有多个同名的方法,方法的参数类型不同或参数个数不同,返回类型可以相同也可以不同。:用于自动将包装类型转成对应的基本数据类型,原理是调用包装类的xxValue()方法,如iInteger的intValue()方法。:用于自动将基本数据类型转成对应的包装类型,原理是调用包装类的valueOf()方法。
2024-01-25 17:59:21 761
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人