面试题:

1、项目中登录的过程?

2、登录用户名和密码的登录过程?

缓存、排行榜、计数器、分布式会话、分布式锁、社交网络、最新列表、消息系统

4、数据库和缓存的读一致性?

5、数据库和缓存的写一致性?(先删缓存再更新数据库?先更新数据库再删缓存?)

6、缓存过期的时间是怎样定的?

缓存过期时间的设置:使用slidingExpiration时间时,如果再次命中,将延长缓存项目的生命期;使用expireTime时,无论是否命中,时间到的时候,都会失效。

7、MySQL慢查询如何看?

8、建立了索引没有用到的场景?

9、INNODB的索引是什么形式的?

聚集索引、辅助索引

10、B+树相对于B树的优势是什么?

B+树的磁盘读写代价更低、B+树的查询效率更加稳定.....。

11、集合中哪些是线程安全哪些是线程不安全的?

Vector、HashTable、Properties是线程安全的;

ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap等都是线程不安全的;

12、为什么HashMap多线程下不安全?

在多线程情况下,会导致hashmap出现链表闭环,一旦进入了闭环get数据,程序就会进入死循环,所以导致HashMap是非线程安全的。

13、HashTable和ConcurrentHashMap实现线程安全的区别是什么?

15、ReentranLock和Synchronized的区别是什么?

16、怎样实现Lock?

17、死锁的四个条件是什么?

18、从避免死锁上区分Lock和Synchronized的区别?(不剥夺条件)

19、Synchronized是否可以响应中断?

corePoolSize(核心线程数)、queueCapacity(任务队列容量)、maxPoolSize(最大线程数)、keepAliveTime(线程空闲时间)、allowCoreThreadTimeout(允许核心线程超时)、rejectedExecutionHandler(任务拒绝处理器);

21、提交任务后,线程池的工作流程是怎样的?

22、常见的饱和策略有哪些?

AbortPolicy(默认的饱和策略,直接抛出异常,阻止系统工作)、CallerRunsPolicy(只要线程池未关闭,该策略直接在调用者线程中运行当前被丢弃的任务,调用者线程性能可能急剧下降)、DiscardOldestPolicy(丢弃队列里最近的一个任务,执行当前任务)、DiscardPolicy(不做任何处理,直接丢弃该任务)。

23、Http和TCP的关系是怎样的?

24、Http是有状态的还是无状态的?

HTTP本身是一个无状态的连接协议,为了支持客户端与服务器之间的交互,我们就需要通过不同的技术为交互存储状态。

25、Https的实现过程是怎样的?

26、对称加密和非对称加密?

27、Spring IOC和AOP的概念和应用场景?

28、AOP的实现原理是怎样的?

29、常见的设计模式?

30、Spring中的设计模式?

31、Spring的Bean是单例的吗?