Java基础面试题

一

  1. map怎么实现hashcode和equals,为什么重写equals必须重写hashcode

  2. 使用过concurrent包下的哪些类,使用场景等等。

  3. concurrentHashMap怎么实现?concurrenthashmap在1.8和1.7里面有什么区别

  4. CountDownLatch、LinkedHashMap、AQS实现原理

  5. 线程池有哪些RejectedExecutionHandler,分别对应的使用场景

  6. 多线程的锁?怎么优化的?偏向锁、轻量级锁、重量级锁?

  7. 组合索引?B+树如何存储的?

  8. 为什么缓存更新策略是先更新数据库后删除缓存

  9. OOM说一下?怎么排查?哪些会导致OOM?

  10. OSI七层结构,每层结构都是干什么的?

  11. java的线程安全queue需要注意的点

  12. 死锁的原因,如何避免

二

  1. jvm虚拟机老年代什么情况下会发生gc,给你一个场景,一台4核8G的服务器,每隔两个小时就要出现一次老年代gc,现在有日志,怎么分析是哪里出了问题

  2. 数据库索引有哪些?底层怎么实现的?数据库怎么优化?

  3. 数据库的事务,四个性质说一下,分别有什么用,怎么实现的?

  4. 服务器如何负载均衡,有哪些算法,哪个比较好,一致性哈希原理,怎么避免DDOS攻击请求打到少数机器

  5. volatile讲讲

  6. 哪些设计模式?装饰器、代理讲讲?

  7. redis集群会吗?

  8. mysql存储引擎

  9. 事务隔离级别

  10. 不可重复度和幻读,怎么避免,底层怎么实现(行锁表锁)

三

  1. 项目介绍

  2. 分布式锁是怎么实现的

  3. MySQL有哪几种join方式,底层原理是什么

  4. Redis有哪些数据结构?底层的编码有哪些?有序链表采用了哪些不同的编码?

  5. Redis扩容,失效key清理策略

  6. Redis的持久化怎么做,aof和rdb,有什么区别,有什么优缺点。

  7. MySQL数据库怎么实现分库分表,以及数据同步?

  8. 单点登录如何是实现?

  9. 谈谈SpringBoot和SpringCloud的理解

  10. 未来的技术职业怎么规划?

  11. 为什么选择我们公司?