一面
Java
- HashMap和ConcurrentHashMap
HashMap是基于拉链式的散列方法,当阈值超过3/4*cap时,就会进行桶的扩容,扩容时如果红黑树的个数小于6则重新变为链表。扩容的时候会拆分成两个链表(要么一致,要么差一个oldCap)
ConcurrentHashMap有一个特别的字段sizeCtl,不同的值有不同的含义。当为负数时:-1代表正在初始化,-N代表有N-1个线程正在 进行扩容;当为0时:代表当时的table还没有被初始化;当为正数时:表示初始化或者下一次进行扩容的大小。Con在计算size的时候有两个步骤,重复计算三次,不一样的话加锁计算
红黑树的结构
- Java9+新特性
JDK9的jshell,接口私有方法,多版本兼容jar,try-with-resourses的改进,创建不可变集合,增强stream API,把String的char[]改为byte[]
jdk11支持局部变量类型推导
jdk12 switch不用写break
-
Jvm的内存结构
堆,方法区,虚拟机栈,本地方法栈和程序计数器 -
线程池的原理
核心线程,最大线程,等待时间,等待单位,拒绝策略,线程工厂,阻塞队列
如何衡量线程池比较快
可以通过Java当中的Timer类来实现
- sl
这篇博客详细记录了一次全面的Java面试过程,涵盖了一面的Java基础、Redis、操作系统和算法,二面的Java进阶、网络、数据库和算法,以及三面和HR面的综合问题。内容包括HashMap与ConcurrentHashMap的区别,JVM内存结构,线程池原理,Redis数据结构,TCP连接状态,数据库优化,分布式事务解决方案等,最后还涉及了面试者自我评估和学习方法的讨论。
订阅专栏 解锁全文
432

被折叠的 条评论
为什么被折叠?



