2024-01-15 13:56:12
答案:以下是针对科大讯飞后端一面问题的详细解答:
1. Java中final关键字的作用锁机制:Synchronized是JVM内置锁,通过monitor对象实现;ReentrantLock是API层面的锁,需手动释放。
灵活性:ReentrantLock支持公平锁、可中断锁、超时锁等高级功能。
性能:早期版本ReentrantLock性能更优,Java6后Synchronized优化后差距缩小。
可见性:保证变量修改对其他线程立即可见。
禁止指令重排序:防止编译器或处理器优化导致逻辑错误。
不保证原子性:需结合Synchronized或ReentrantLock实现原子操作。
Java8:Lambda表达式、Stream API、默认方法、Optional类。
Java11:局部变量类型推断(var)、HTTP Client API标准化。
Java17:密封类(Sealed Classes)、模式匹配(instanceof增强)。
一级缓存(singletonObjects):存放完全初始化好的Bean。
二级缓存(earlySingletonObjects):存放原始Bean对象(未填充属性)。
三级缓存(singletonFactories):存放Bean工厂对象(Lambda表达式),用于解决AOP代理问题。
B+树:InnoDB主索引,支持范围查询,叶子节点存储数据或主键。
哈希索引:Memory引擎支持,精确匹配快,不支持范围查询。
全文索引:用于文本搜索,如MATCH AGAINST语法。
READ UNCOMMITTED:可能脏读。
READ COMMITTED:避免脏读,可能不可重复读。
SERIALIZABLE:完全串行化,性能最低。