2024大厂高频面试题:Java面试真题


1 mysql使用innodb引擎,请简述mysql索引的最左前缀如何优化orderby语句。关键点:答案:实验准备:向表中插入50w条数据创建表创建函数创建存储过程调用存储过程批量删除表索引最左前缀法则示例一般性建议实验2 JVM 内存模型中,为什么要区分新生代和年老代,对于新生代,为什么又要区分

CAS底层原理


CAS(Compare And Swap)是一种无锁算法,它允许一个变量在多个线程中同时进行比较并交换。 CAS操作包含三个操作数: - 内存位置(V) - 预期原值(A) - 新值(B) 当且仅当预期原值A和内存位置V的值相同时,将内存位置V的值修改为新值B。否则,不会执行任何操作。

为什么Volatile要禁止指令重排


计算机在执行程序时,为了提高性能,编译器和处理器常常会对指令重排,一般分为以下三种: 源代码 -> 编译器优化的重排 -> 指令并行的重排 -> 内存系统的重排 -> 最终执行指令 单线程环境里面确保最终执行结果和代码顺序的结果一致 处理器在进行重排序时,必须要考虑指令之间的数据依赖性 多线程环境中线程交替执行,由于编译器优化重排的存在,两个线程中使用的变量能否保证一致性是无法确定的,结果无法预测。

谈谈你对volatile的理解


说到JVM内存模型,我们就需要了解JMM内存模型。JMM内存模型是Java内存模型的子集, 它定义了Java内存模型的一些规则,并提供了一套原子性、可见性、有序性的规则。

集合类线程不安全及解决方案


在Java中,集合类是线程不安全的,如果多个线程同时对集合类进行操作,可能会导致并发修改异常。

成员变量与局部变量


成员变量与局部变量面试题

递归与迭代面试题


### [递归面试题](#递归面试题)

方法的参数传递机制


### [方法的参数传递机制](#Java面试

类初始化实例初始化


### [类初始化实例初始化](#Java面试

单例模式


单:唯一 例:实例 单例设计模式,即某个类在整个系统中只能有一个实例对象可被获取和使用的代码模式 例如:代表JVM运行环境的Runtime类