1.HashMap和TreeMap区别
=》HashMap为无序集合,TreeMap为有序集合,其实现了SortMap接口,可通过key值进行排序;因此HashMap的访问速度比TreeMap要快一些;
=》HashMap基于哈希表实现,TreeMap基于红黑树实现
2.HashSet有什么功能,基于哪个类实现?
=》HashSet是一个无序集合,基于Set接口实现,不能添加重复的元素,内部是使用HashMap实现的,对于一些大量插入不在乎顺序和极少查询的集合操作用得比较多;
3:ConcurrentHashMap并发能力为什么好于Hashtable
=》ConcurrentHashMap是JDK1.5之后新加的特性,位于concurrent包下,专门用于处理并发场景的;
=》Hashtable每次同步执行的时候都要锁住整个结构,ConcurrentHashMap锁的方式是稍微细粒度的,它默认将hash表分成16个桶,操作时只需锁住当前用到的桶;所以,原来只能一个线程进入,现在却能同时16个写线程进入,并发性能就提升了;
=》传统集合在迭代时如果集合发生改变,那么就会抛出ConcurrentModificationException,现在ConcurrentHashMap是在改变时new新的数据从而不影响原有的数据,iterator完成后再将头指针替换为新的数据,这样iterator线程可以使用原来老的数据,而写线程也可以并发的完成改变,更重要的,这保证了多个线程并发执行的连续性和扩展性,是性能提升的关键。
4:JDK动态代理的用法是什么?
=》
1. 新建一个接口
2. 为接口创建一个实现类
3. 创建代理类实现java.lang.reflect.InvocationHandler接口
4. new 代理类,执行getProxy()方法获取实例
5:java有哪些可重入锁
=》synchronized关键字、ReentrantLock
6:什么是CAS操作?
=》CAS操作是比较并替换,操作时需要输入两个数值,一个旧值(期望操作前的值)和一个新值,在操作期间先比较旧值有没有发生变化,如果没有发生变化,才交换新值,发生了变化则不交换。
7:Spring支持几种bean的作用域
=》支持5种作用域,
singleton,单例模式
prototype,原型模式
request,请求
session,会话
globalsession,全局的web域
8:Hystrix服务隔离策略有哪些?
=》它的隔离策略有两种:线程池隔离、信号量的资源隔离
9:常用的限流算法有哪些
=》大致有三种:令牌桶算法、漏桶算法、计数器算法
10:Mybatis怎样生成Mapper接口的实现类执行sql?
=》在实现类中,mybatis给sqlSession指定执行哪条sql的时候,直接指定mapper的接口就行了,就可以匹配到namespace+statementId;
11:redis 热key如何解决?
=》什么中间放一层Proxy,有点难搞