JAVA高级面试题总结

一、基础1.HashMap结构数组+链表 1.8加入了红黑树,参考:HashMap? ConcurrentHashMap? 相信看完这篇没人能难住你!
二、框架1.Spring的IOC、AOP、DIIOC:控制反转,把创建对象的操作交给框架,spring负责控制对象的生命周期和对象间的关系AOP:面向切面编程主要用来解决一些系统层面上的问题,比如日志,事务,权限等DI:动态的向某个对象提供它所需要的其他对象三、多线程1.ThreadLocal类当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。2.BlockingQueue这个queue是单向队列,可以在队列头添加元素和在队尾删除或取出元素。除了传统的queue功能(表格左边的两列)之外,还提供了阻塞接口put和take,带超时功能的阻塞接口offer和poll。put会在队列满的时候阻塞,直到有空间时被唤醒;take在队列空的时候阻塞,直到有东西拿的时候才被唤醒。3.ThreadPoolExecutor4.常见线程池 ①newSingleThreadExecutor 单个线程的线程池,即线程池中每次只有一个线程工作,单线程串行执行任务 ②newFixedThreadExecutor(n) 固定数量的线程池,没提交一个任务就是一个线程,直到达到线程池的最大数量,然后后面进入等待队列直到前面的任务完成才继续执行 ③newCacheThreadExecutor(推荐使用) 可缓存线程池,当线程池大小超过了处理任务所需的线程,那么就会回收部分空闲(一般是60秒无执行)的线程,当有任务来时,又智能的添加新线程来执行。 ④newScheduleThreadExecutor 大小无限制的线程池,支持定时和周期性的执行线程  四、设计模式五、数据库1.乐观锁和悲观锁2.SQL优化3.索引4.Redis六、服务框架1.dubbo2.zookeeper

相关内容推荐