java 面试题
1.hashmap、concurrenthashmap底层实现和区别 hashmap是基于数组+ 链表结构的,数组下标有hash生成,链表主要是为了防止hash冲突,即使两个对象的hashCode一样,它们会放到当前数组索引位置的链表中,Java8后链表长度大于8就会转为红黑树, 主要是为了提高查找效率,链表查找慢,增删改快 区别:hashmap是线程不安全的,ConcurrentHashMap是线程安全的,把数据分成了不同的段,使用的分段锁技术,通过hash计算那些数据放在那个段中,查找也是如此 2.spring框架的原理 spring框架主要是用来创建、注册、配置、管理、维护bean的容器,主要是利用Java反射技术动态维护、调用对象,主要包括控制反转(IOC)以及面向切面(AOP),三种注入方式分别是Field注入 (使用@Autowired或@Resource注入)、构造器注入和Setter方法注入 3.如何写一个orm框架 对象-关系映射(Object-Relational Mapping,简称ORM),处理对象与数据库交互的,常见的有hibernate、jpa、ibatis等 4.hibernate一级缓存和二级缓存,hibernate其他缓存 hibernate缓存分为三种:一级缓存,二级缓存和查询缓存, session内的缓存即一级缓存,不能被清除