Java core

  1. 线程安全的list,这种实现有什么问题(GC、最终一致)还有什么场景也用到这个思想?MySQL表结构变更、redis持久化过程中的子进程。
  2. java创建线程池有哪几个参数?最大和核心的区别是什么?如何设置这个值?我们为什么用线程池?在操作系统层面解释下为什么创建线程和线程切换是高成本操作?
  3. CMS的过程?重新标记的意义是什么?G1描述下?怎么达到可预测时间?你觉得两者的区别是什么?

    java web

  4. 说一下java的类加载机制中双亲委派以及原因?tomcat的类加载机制为什么打破这个原则?

  5. 多条件查询的分页缓存优化方案?深度分页缓存优化方案?

    redis

  6. redis的底层数据结构?跳表的原理?和哪个常见的数据结构相似?为什么不能互换使用?

  7. 什么是redis的rehash?什么时候触发rehash?存在缩容吗?为什么redis不希望在持久化过程中触发扩容?redis的rehash过程?rehash和reshard的区别?
  8. redis什么场景存在数据丢失?
  9. 布隆过滤器的原理?
  10. redis的哨兵机制?意义是什么?
  11. redis的集群机制?意义是什么?

    mysql

  12. 内存结构有哪些?分别作用是什么?做了哪些优化?

  13. 如何保存事务的一致性?redolog、双写、LMS?
  14. InnoDB引擎是如何实现4个隔离级别的?MVCC如何实现多版本是怎么样的读取顺序?gap锁是如何实现的? 是否了解唯一键插入死锁问题?解释其原因?
  15. 为什么数据库不采用IO多路复用的方式?而redis为什么要用?数据库的瓶颈在哪?网络IO的开销一定比磁盘IO的开销大吗?说说你仍未的网络IO和磁盘IO的延迟各自取决于哪些因素?

    操作系统

  16. 四次挥手的过程?2MSL的意义?

  17. epoll的过程,是否所有场景都比select或poll更加优秀?原因是什么?
  18. TCP拥塞控制和重发机制?

    分布式

  19. zookeeper你能想到的有哪些应用场景,分别是基于zk的什么特性设计的?配置中心、分布式锁、leader选举、监听回调。

  20. 数据库如何提高读写性能?主从架构是怎么实现的?同步和异步有什么区别?异步情况下如何解决写后立即读的一致性问题?什么是单调读?如何实现单调读(哈希路由)?
  21. 我们都说在数据过大的情况下(超10亿)单机数据库性能会降低,原因是什么?怎么解决?分布式数据怎么对数据分片的?不同分片方式会有什么问题?
  22. CAP理论是什么意思?为什么CA只能选一种?你知道哪些中间件是什么类型?分析一下为什么?

算法

  1. 煎饼排序