面试题整理

121 阅读2分钟

面试20+题:

Java基础

1.  jdk1.8的增强for循环跟普通的for循环有什么区别?哪个速度快?

2.  ConcurrentHashMap 的执行流程?

3.  Voliate能实现什么?怎么保证有序性、可见性?

4.  HashMap 的工作原理是什么? Hashmap 什么时候进行扩容呢?

JVM

5.  JVM了解多少?怎么优化?平时生产环境有没有遇到问题,怎么处理的?

6.     类加载器双亲委派模型机制?

7.  内存使用率满了怎么分析并解决?

Spring/Spring Boot

8.  BeanFactory 和 FactoryBean 什么区别,各自的使用场景是什么?

9.  Spring循环依赖怎么解决的?哪种循环依赖不能解决?为什么用三级缓存,二级缓存不行吗?

10.为什么用Springboot?SpringBoot自动配置原理?如何自定义starter?

Mysql

11.innodb底层的索引数据结构是什么?B+树和B树有什么区别?为什么B+树比B树查询速度快?

12.mysql怎么优化的?使用索引的注意事项?

Redis

13.redis使用场景,在项目哪地方用到了?分布式锁怎么实现的?redisson原理?

14.redis热点key怎么处理?缓存击穿、缓存穿透、缓存雪崩怎么处理?

15.redis的缓存淘汰机制?有哪些?

16.缓存跟数据库的数据一致性怎么解决?

业务场景

17.接口怎么防刷?如果有黑产刷你们接口怎么处理?ip经常更换、手机号、微信都是正常的又是怎么处理?

18.服务限流如何做?有哪几种方式?限流算法?漏桶算法和令牌桶算法

19.nginx如何限流,哪几种配置方式?

20.单表数据量非常大怎么解决?

21.分布式事务怎么解决?

22.elasticSearch大数据量写入怎么优化提升写入速度?