[面试实战] 杭州有赞一面

246 阅读2分钟

第一场面试 面试的感受,整体上题目还是比较基础的,可能因为是一面,也或者我投的岗位层级不够,所以问的题目深度不是很够。

即使这样,自我感觉有些题目回答的还不是很好,我的回答也缺乏深度。

spring

  1. aop的原理
    《Spring设计思想》AOP设计基本原理
  2. 嵌套的aop方法是否会生效
    确实没想过这个问题,其实是不会的,具体原理参考这篇文章

mysql

  1. mysql索引的结构
    B+树
  2. 索引为什么使用B+树呢
    Mysql索引为啥用B+树
  3. 用hash是否可以?为什么
    简单来说,hash查找单key效率高,但是不适合范围查询

线程池

  1. 线程池的原理
  2. 核心线程数和最大线程数

分布式中间件

  1. 数据一致性
    基本是消息表+队列,保证发送的动作的事务性,这个问题网上方案很多。
  2. 消息队列的顺序性怎么保证的
    锁?控制顺序读写
    kafka的顺序写入?
    这个问题回答的不好,可以参考这个文章:深度剖析 Kafka/RocketMQ 顺序消息的一些坑
  3. dubbo,客户端反馈超时,服务端load很高,来分析下可能的原因
    1. netty,超过out channel buffer的水位
    2. tcp,zero window或者silly window
    3. 客户端 fullgc stw
    4. 客户端 死锁(这个没有想到)

redis

  1. 数据过期删除和淘汰机制
    Redis的过期策略及内存淘汰机制
  2. 节点数据迁移 渐进式rehash

虚拟机

  1. 常用哪些jvm指令
    JVM监控和调优常用命令工具总结

引申

  1. java动态代理机制
  2. spring事务的传播机制
  3. 聚集索引和非聚集索引
  4. LRU、2K、LFU算法
  5. hash槽和一致性hash
  6. 死锁问题怎么定位
  7. 线程池核心线程数的合理设置