高级、资深工程师面试题
java
集合类用过哪些?
hashmap 1.8比1.7有哪些变化?
红黑树的查询时间复杂度?
为什么链表长度>8时转成红黑树treeMap和hashmap有哪些区别?
Collections.sort() 用的那种排序算法,时间复杂度
采用了2种排序算法 -- 基本类型数据使用快速排序法,对象数组使用归并排序。O(log n)场景:比如有一个服务,昨天上了一次线,今天从服务监控上看,这个服务所有的接口的平均响应耗时增加了不少,让你来排查这个问题,你会从哪几个方面考虑?
QPS增高?锁?线程池配置的不合理?full gc线程池
线程池工作原理,参数含义jvm
jdk1.8 和1.7相比 jvm内存模型有什么区别,这个升级有什么用
描述JVM中一次完整的GC流程,对象如何从创建到老年代,被回收的
线上发生OOM 该如何排查?
cpu负载非常高,如何排查?多线程
场景:有5个子线程,我想让5个子线程都执行完之后,主线程再往下执行。怎么实现?
CyclicBarrir或countDownLatch原理
volatile 的两个cpu语义,是如何实现内存可见性的(JMM内存模型)
aqs的实现原理,
cas的缺陷
redis
- redis的数据结构用过哪些,及其底层存储的数据结构
场景:redis底层是用c语音写的,‘\0’ 在c语音字符串中会被认为是字符串的结束。如果redis字符串存储,‘123\0123’,那么get出来是什么? 为什么?
简述hash表的扩容过程
跳跃表的时间复杂度 - 候选人redis采用的架构模式是哪种,存在什么缺点
- 主从架构下的问题,集群模式的问题
场景:主从模式下,set key设置过期时间,比如10分钟,过了10分钟之后,get key,还能把set的值拿出来,问题可能出在哪? - 过期机制了解几种,讲一下
- redis是单线程的,为什么单线程还这么快呢?
- 如何防止缓存雪崩
mysql数据库
场景:线上数据库出现慢查询,如何排查优化,
如何优化索引
有哪几种索引?
聚簇索引结构
非聚簇索引和聚簇索引结构有何不同
mysql事务和隔离级别
隔离级别有哪几个,各自存在的问题
事务是如何实现的?MVCC?
spring
aop的例子,设计实现原理。动态代理
spring中还使用了哪些设计模式?
自己有没有写过切面
rocketmq
- rocketmq如何保证性能的?
- 和kafka的区别?
- 场景:用户对一个商品下单,然后支付完成。下单、支付成功各自发了mq,消费者消费了这两个mq,但这俩mq显然是有先后顺序的,如何:
如何保证不重复消费?
如何保证顺序消费?
kafka
kafka 为什么快
kafka怎么实现顺序消费
Kafka消息是采用Pull模式,还是Push模式?
微服务
- dubbo 和 spring cloud用过哪个?讲一下注册发现的过程,zk(cp模型)和eureka(ap模型)的区别,从cap模型讲,各属于什么模型,哪个更适合做注册中心?
- 分布式下的事务,数据一致性。有哪种分布式事务框架
- 怎么实现分布式锁,有几种方式,优缺点