本文收录的面试题包括MySQL、Redis、java、JVM等相关内容。我相信很多人都在计划着跳槽,也或者在等金三银四的到来,请对找工作保持十二分的热情,而且越早准备越好。临时狂背知识点什么的,可能大致的都了解,细问就什么都不知道了,面试京东我也是提前一个月就开始准备了,毕竟不打无准备的仗
一:Java
-
多个线程同时读写,读线程的数量远远大于写线程,你认为应该如何解决 并发的问题?你会选择加什么样的锁?
-
JAVA的AQS是否了解,它是干嘛的?
-
除了synchronized关键字之外,你是怎么来保障线程安全的?
-
什么时候需要加volatile关键字?它能保证线程安全吗?
-
线程池内的线程如果全部忙,提交一个新的任务,会发生什么?队列全部 塞满了之后,还是忙,再提交会发生什么?
二、Spring
-
你有没有用过Spring的AOP? 是用来干嘛的? 大概会怎么使用?
-
如果一个接⼝有2个不同的实现, 那么怎么来Autowire一个指定的实现?
-
Spring的声明式事务 @Transaction注解x般写在什么位置? 抛出了异常 会自动回滚吗?有没有办法控制不触发回滚?
-
如果想在某个Bean⽣成并装配完毕后执自己的逻辑,可以什么方式实 现?
-
SpringBoot没有放到web容器里为什么能跑HTTP服务?
三、MySQL
-
如果有很多数据插⼊MYSQL 你会选择什么方式?
-
如果查询很慢,你会想到的第一个方式是什么?索引是干嘛的?
-
如果建了一个单列索引,查询的时候查出2列,会用到这个单列索引吗?
-
如果建了一个包含多个列的索引,查询的时候只用了第一列,能不能用上 这个索引?查三列呢?
-
接上题,如果where条件后面带有一个 i + 5 < 100 会使用到这个索引吗?
-
怎么看是否用到了某个索引?
四、JVM
-
你知道哪些或者你们线上使用什么GC策略? 它有什么优势,适用于什么 场景?
-
JAVA类加载器包括几种?它们之间的父子关系是怎么样的?双亲委派机 制是什么意思?有什么好处?
-
如何自定义一个类加载器?你使⽤过哪些或者你在什么场景下需要一个自 定义的类加载器吗?
-
堆内存设置的参数是什么?
-
Perm Space中保存什么数据? 会引起OutOfMemory吗?
五、Redis
– 开发
-
缓存穿透可以介绍一下么?你认为应该如何解决这个问题
-
你是怎么触发缓存更新的?(比如设置超时时间(被动方式), 比如更新的时 候主动update)?如果是被动的方式如何控制多个入口同时触发某个缓存更 新?
-
你们用Redis来做什么?为什么不用其他的KV存储例如Memcached, Cassandra等?
– 运维
-
Redis持久化大概有几种方式? aof和rdb的区别是什么? AOF有什么优缺 点吗?
-
Redis Replication的大致流程是什么? bgsave这个命令的执行过程?