Java常见面试题及答案(19道常见必考题) – mikechen | 您所在的位置:网站首页 › java多线程常见面试题及答案 › Java常见面试题及答案(19道常见必考题) – mikechen |
金九银十Java面试的高峰期到了,今天给大家总结了一份Java常见面试题及答案,希望对大家有所帮助@mikechen 目录 Java线程的生命周期在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)5种状态。 Java实现线程有哪几种方式? 1、继承Thread类实现多线程 2、实现Runnable接口方式实现多线程 3、使用ExecutorService、Callable、Future实现有返回结果的多线程。 什么是并发与并行? 并行 多个cpu实例或者多台机器同时执行一段处理逻辑,是真正的同时。 并发 通过cpu调度算法,让用户看上去同时执行,实际上从cpu操作层面不是真正的同时。 HashMap1.7与1.8底层如何实现? 1.7底层实现基于数组+链表实现(Key和value封装成Entry对象)1.根据key的hash值,计算该key存放在数组的index位置 2.如果发生index冲突,则会使用单向链表存放 同一个链表中存放的都是hashCode值相同,但是内容值却不同 如果index发生冲突,采用链表存放查询的时间复杂度是为O(n),效率非常低, 所以在JDK1.8开始优化改为红黑树 3. 使用头插入法(并发下扩容可能会发生死循环问题) 1.8底层实现 基于数组+链表+红黑树实现(Key和value封装成Entry对象) 1.根据key的hash值,计算该key存放在数组的index位置 2.如果发生index冲突,则会使用单向链表存放 当数组的容量大于=64且链表长度大于8则会将链表转化成红黑树。 红黑树查询的时间复杂度是为O(logN) 当红黑树的节点个数 |
CopyRight 2018-2019 实验室设备网 版权所有 |