面试题

高级、资深工程师面试题

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模型讲,各属于什么模型,哪个更适合做注册中心?
  • 分布式下的事务,数据一致性。有哪种分布式事务框架
  • 怎么实现分布式锁,有几种方式,优缺点

你可能感兴趣的:(面试题)