京东一面
1、leedcode俩个一组反转链表
2、介绍项目实时核算说说有啥技术难点
3、AOP用的多不多
4、反射对jvm的影响?
5、redis为啥很快
6、线程池参数,有一个任务阻塞了,再来一个线程 参数是cool 1 max 2 queue 1
7、mysql 索引 abc 是否走索引
覆盖索引
8、分布式id算法
携程一面
1、场景题,RPC调用发起一个任务,或者触发一个任务,如何做到幂等 --请求带唯一键
2、redission如何解决主从复制造成的延时问题
3、CPU满了如何处理
- 定位进程:用
top
查看,确认是哪个 Java 进程占 CPU 高。- 定位线程:用
top -H -p <PID>
找出占用最高的线程 ID。- 转 16 进制:
printf "%x" tid
,转成 16 进制。- 查堆栈:
jstack <PID> | grep <16进制ID> -A 20
,看是哪段代码在跑。- 分析原因:常见的是死循环、正则性能问题、频繁 GC、线程池滥用等。
- 解决:修复代码,优化逻辑,必要时调整 JVM 或重启服务。
核心思路:从系统到线程,快速定位到具体代码行。
4、并发请求QPS很大,数据库扛不住,除了加机器、限流,MQ还有啥方式
面对高 QPS,我会四步应对:
- 限流:用 Sentinel 或网关限流,防系统崩溃。
- 扩容:加机器,负载均衡,横向扛流量。
- 缓存:热点数据放 Redis,减轻数据库压力。
- 异步:非核心操作用 MQ 削峰,提升吞吐。
核心:稳住系统、分摊压力、提升处理能力。