Java面试
2023-08-17 19:49:09 0 举报
AI智能生成
Java面试要点
作者其他创作
大纲/内容
JVM
常见的垃圾回收器
Serial
工作在年轻代
单线程、拷贝算法
适合内存小
Serial Old
工作在老年代
单线程、标记压缩算法
适合内存小
Parallel Scavenge
工作在年轻代
多线程
适合内存大
1.8默认
Parallel Old
1.8默认
ParNew
CMS
并发
四个阶段
初始标记
并发标记
三色标记算法
重新标记
并发清理
Subtopic
Java基础
拆箱/装箱
装箱:基本数据类型自动封装为包装器类型
拆箱:自动把包装器类型转化为基本数据类型
java1.5之后引入了自动装箱
当构造一个[-128,127]区间内的Integer对象时,会从IntegerCache的cache数组中直接取出
由于上述原因,Integer i1=100;Integer i2=100; i1==i2;结果为true
由于上述原因,Integer i3=200;Integeri4=200; i3==i4;结果为false
BigDecimal类的使用
数据结构
树
红黑树
每个节点只有红和黑两种颜色
根节点和叶子节点都为黑色
红色节点的子节点必须都为黑色
从一个节点到该节点的叶子节点所有路径,都含有相同数量的黑色节点
叶子节点都是黑色
隐藏了黑色的Nil叶子节点
使用场景:Java中的TressSet和Java1.8版本中的HasnMap
这么多的限定条件是为了保证红黑树的平衡性,降低树的高度
放在内存中,针对少量的数据
不是严格的平衡二叉树(AVL)
操作
变色
左旋
右子树的左节点转到旋转点的右子树
右旋
左子树的右节点转到旋转点的左子树
变换规则
二叉排序树
左子树不为空,则左子树都小于根节点
右子树不为空,则右子树都大于根节点
平衡树
防止二叉排序树退化成链表
B树
M阶B树最多有M个子节点,M-1个关键字
每个节点至少有ceil(M/2)个子节点
示例
B+树
最左原则
有M课子树的非叶子节点,含有M个关键字
非叶子节点仅具有索引作用
非叶子节点仅存子树中最大(或最小)的关键字
树的所有叶子节点构成一个有序链表
放在磁盘中,针对大量的数据
B+树示例
HashMap
散列函数
散列碰撞
探测
开放寻址
如果碰撞了,按顺序向后找空闲位置存储
如果要删除某个元素,设置一个delete标记位
链表
链式寻址
每个数后边跟链表
存在问题:链表过长,查找速度变慢
JDK1.8后引入红黑树
当链表长度大于8时候,链表转成红黑树
初始数据量为16,装载因子为0.75
当超过75%后,扩容一倍
缺点
存不了大数据
线程不安全
优点
高效:插入、查询等操作要快
内存
散列函数:根据实际情况分析
扩容:会全部重新插入一次
Hash冲突怎么解决
线程池
七个参数
1.核心线程数量
corePoolSize
2.最大线程数
maximumPoolSize
3.生存时间
4.时间单位
5.任务队列
workQueue
6.线程工厂
7.拒绝策略
纤程/协程
Subtopic
Subtopic
0 条评论
下一页