
面试题
雨雨季
滴滴滴哒哒哒`
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java基础面试题 小记录
1. 浮点数精度丢失问题 首先举例: 下面的例子的输出值应当是0.9,但是实际输出是0.8999999…… 这和计算机的二进制工作原理相关,产生精度丢失; 因为a + (-b) 时负数会转换成补码,小数位后面的补码导致精度丢失; //计算机进行的二进制运算, //在转换二进制时有些数字不能完全转换,只能接近 double a = 2.0; double b = 1.1; System.out.pr...原创 2019-04-01 20:00:25 · 145 阅读 · 0 评论 -
面试题 HashMap底层实现原理
用过HashMap吗? 什么是HashMap? HashMap实现了Map接口,Map接口对键值对进行映射。Map接口的两个基本实现是HashMap和TreeMap。TreeMap保证了对象的排列次序,而HashMap是无序的。HashMap的键和值可以赋值为null。HashMap是非synchronized的,可以通过Collections工具类的synchronizedMap方法使得Ha...原创 2019-04-20 17:30:04 · 4889 阅读 · 1 评论 -
Java虚拟机面试题
JVM内存模型? Java虚拟机的运行时区域分为:程序计数器、虚拟机栈、本地方法栈、堆、方法区。五个部分。 其中堆和方法区是线程公有的,其他部分是线程私有的。 GC机制和原理? 首先需要判断对象是否死亡。可以通过两种方式:引用计数算法、可达性分析算法。 引用计数算法就是给每个对象分配一个引用计数器,每当对象被引用了一次,引用计数器+1。当引用计数器的值为0时,则判定为对象死亡进行垃圾回收。...原创 2019-04-25 22:26:11 · 259 阅读 · 0 评论 -
Java多线程面试题
线程池的原理,为什么要创建线程池? 将预先创建好的线程放入线程池当中。当有线程请求时,则从线程池中调用线程,调用结束之后归还线程。 当出现需要创建大量线程的情况时,反复的创建线程会造成大量的性能损耗。使用线程池能降低损耗,提高响应的速度,方便管理线程。 线程的生命周期,什么时候会出现僵死进程? 线程的生命周期分为五个部分。新建、就绪、运行、阻塞、死亡。 什么是线程安全,如何实现线程安全...原创 2019-04-25 16:30:31 · 171 阅读 · 0 评论 -
多线程细节整理
什么是线程? 操作系统运行一个程序时会创建一个进程。线程是操作系统的最小调度单元,也叫轻量级进程,一个进程中可以有多个线程。 为什么要使用多线程? 1.利用好更多的处理器核心,提升执行的效率。 2.更快的响应时间,复杂的需求通过多线程进行执行。 3.更好的编程模型,Java多线程提供了良好一致的编程模型。 程序一定按照线程的优先级执行吗? 执行的优先级其实最终还是在于操作系统的执行策略,在mac ...原创 2019-09-25 10:09:53 · 197 阅读 · 0 评论 -
ConcurrentHashMap的实现原理
ConcurrentHashMap结构 ConcurrentHashMap由Segment数组和HashEntry数组构成。 segment继承了ReentrantLock扮演锁的角色。HashEntry用于存储键值对数据。 Segment的结构与HashMap类似,数组+链表+红黑树。 要对HashEntry数组的数据进行修改要先获得Segment锁。 ConcurrentHashMap初始化 ...原创 2019-09-28 12:07:26 · 195 阅读 · 0 评论 -
Java中的锁
一、Lock接口 在Java SE 5之后,并发包新增了Lock接口用来实现锁功能。 相比于synchronize关键字:Lock虽然缺少了synchronize隐式获取释放锁的便捷性,但是多出了可操作性性。 例如:可中断获取锁,超时获取锁等功能。 二、重入锁 公平锁和非公平锁:重入锁支持获取锁时公平性的选择。 公平锁就是按照线程等待的时间来获取锁,保证绝对的公平性,减少“饥饿”的发生概率。 ...原创 2019-09-28 15:25:43 · 197 阅读 · 0 评论