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