面试题:
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是单例的吗?