![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试题
小杰不想秃头
java小萌新
展开
-
sleep和wait区别详解
sleep和wait异同共同点:wait和sleep都是让当前线程暂时放弃cpu的使用权,进入阻塞状态。不同点:方法归属不同我sleep(long) 是 Thread 的静态方法而 wait(),wait(long) 都是 Object 的成员方法,每个对象都有醒来时机不同执行 sleep(long) 和 wait(long) 的线程都会在等待相应毫秒后醒来wait(long) 和 wait() 还可以被 notify 唤醒,wait() 如果不唤醒就一直等下去它们都可以原创 2022-05-29 12:35:32 · 481 阅读 · 0 评论 -
面试题——HashMap
问题:底层数据结构,jdk1.7与1.8有什么不同?jdk1.7:数组+链表。jdk1.8:数组+(链表|红黑树)。为何要用红黑树,为何不一开始就树化呢,树化阈值为何是8,何时会树化,何时会退化为链表呢?在1.7中,当多个元素的hash值一样时,就会形成一个很长的链表,查找的时间复杂度会降为O(n),会影响hash表性能,所以jdk1.8要使用链表+红黑树,转化红黑树必须满足两个条件:链表的长度大于8。数组的扩容后长度大于64。红黑树用来避免 DoS 攻击,防止链表超长时性能下降,树化原创 2022-05-18 15:40:58 · 143 阅读 · 0 评论 -
java线程的六种状态
六种状态NEW-新建:只是创建了一个线程,没有调用start()方法,没有获得CPU的执行权,并不是真正的线程。RUNNABLE-可运行态:Java线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运行”。线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取CPU的使用权,此时处于就绪状态(ready)。就绪状态的线程在获得CPU时间片后变为运行中状态(running)。。。。参考很详细,这里原创 2022-05-17 08:49:36 · 1104 阅读 · 0 评论 -
面试题——单例模式
单例模式的五种实现方式。了解JDK中哪些地方体现了单例模式。Runtime类(饿汉式)、System类(双检锁-懒汉式)、Collections工具类。可到idea中查看源码。饿汉式package com.jie.singleton;import java.io.Serializable;/** * @Author 小杰 * @Date 2022/5/16 15:10 * @Version 1.0 * 饿汉式 */public class Singleton1 impl.原创 2022-05-16 16:49:31 · 254 阅读 · 0 评论 -
面试题——ArrayList与LinedList比较
ArrayList与LinedList比较要求:能够说清楚 LinkedList 对比 ArrayList 的区别,并重视纠正部分错误的认知。LinkedList基于双向链表,无需连续内存随机访问慢(要沿着链表遍历)头尾插入删除性能高占用内存多ArrayList基于数组,需要连续内存随机访问快(指根据下标访问)尾部插入、删除性能可以,其它部分插入、删除都会移动数据,因此性能会低可以利用 cpu 缓存,局部性原理...原创 2022-05-07 11:36:01 · 306 阅读 · 0 评论