1 java服务CPU使用率达到90%,怎么快速排查问题
死循环或死锁会导致CPU飙高
死循环:HashMap在并发使用时,头插法在扩容期间会产生循环链表,然后执行get() 会触发死循环,造成 CPU 100% 的惨案。(1.8版本后改为了尾插法)
具体排查步骤:
2 并发场景除了加锁还有什么解决方式
- 加锁:乐观锁,悲观锁,分布式锁
- 使用消息队列异步串行化处理,达到削峰效果
3 kafka 的重试机制,怎么保证消息不丢失,如何处理消息积压
4 线程的创建方式有几种,CompletableFuture ,Callable,ArrayBlockingQueue为什么要做成阻塞的,CallerRunsPolicy的缺点,怎么结束一个线程,核心线程怎么保证一直运行?
5 redis hash的底层实现
6 spring 使用2层缓存能解决循环依赖吗?
7 怎么保证订单不重复提交,怎么保证幂等,幂等怎么实现的
6 建议:多去探索原因和原理