4.8美团优选一面1.平时怎么学java的2.java创建线程的方式3.runnable接口和callable接口的区别4.线程池的参数5.线程池创建线程的方法6.线程池的运行机制7.线程池拒绝策略 什么时候拒绝8.concurrentHashMap如何实现线程安全的9.concurrentHashMap底层结构10.hashmap扩容机制11.countdownlatch有了解过吗12.synchronized和reentrantLock区别13.读写锁知道吗?什么是读写锁分离?为什么要有读写锁分离14.sql里面有哪些锁15.MVCC多版本并发控制16.如何去实现一个乐观锁17.数据库的索引结构18.索引失效的场景19.什么是回表?如何减少回表的次数20.创建索引的sql语句21.springBoot和spring的区别22.什么是SpringIOC23.SpringAOP是什么?SpringAOP的应用场景24.Spring中的事务有什么用?用到的是声明式事务还是注解式事务?25.@Transactional的实现使用了哪些组件?26.说说对Redis的了解。Redis的数据结构、Redis为什么这么快?Redis里面有什么数据结构导致它能这么快27.Redis单线程的优势?Redis里面的IO多路复用,epoll流程28.Zset的数据结构跳表。如果让你设计一个跳表,你应该如何实现29.AOF和RDB,这两种持久化方式哪个更好呢?30.jvm内存的模型划分31.堆划分32.每个代使用的垃圾收集器和垃圾回收策略33.jvm中的一些参数(比如调大新生代区域大小的一些参数)算法:合并k个升序链表