1.手撕两个有序数组合并为一个(不能用额外数组):思路移动长的数组,双指针比较,后来发现其实可以比较大的数放尾部
2.讲了一下二叉树翻转的思路:递归(其他思路?栈模拟递归(具体实现不太清楚,只记得有这个方法))
java线程池
HashMap底层 引申到->
红黑树,AVL树
ConcurrentHashMap->引申到CAS
CAS(答的有点不清楚,主要回答了比较交换(没有问ABA原子引用,(类似版本链)))
线程池核心参数(答了具体的线程等待过程,以及抛弃策略)
Redis (问的不多,就问了清除缓存的策略,以及为什么使用Redis)(没有问Redis底层结构)
垃圾回收(串行,并行,CMS(具体过程:初始标记stw(GCRoot)、全标记、补充标记stw,标记清除))没有继续问G1(类似CMS的过程,但是使用了标记整理,且没有内存碎片(由于分成了多块,没有了分代的概念))
分布式锁(答到Reids使用Setnx可以模拟分布式锁,还有RedLock的一个包?记不清了)
没有答出来的:
Redis一致性解决?(只记得一个什么保证可靠的消息?就回答记不清了)
1.对于先删缓存,再更新数据库的这种:延迟双删(删缓存-更新数据库-sleep一段时间再删缓存)
2.对于先更新数据库,再删缓存这种:利用消息队列的重试机制(更新数据库-发消息-重复直到删掉缓存,保证最终一致性)
SpringMVC的Request请求到Controller的过程?(只记得请求转换来转换去最后返回了一个ModelAndView?,回答不太了解)
RPC框架?(就说了项目中用到了HttpClient,其他不了解)
原文:https://www.cnblogs.com/wsZzz1997/p/15345888.html