Java面试题(八股文+场景题)及答案最全总结(2024版)

​​大家好,我是小五!

7月毕业季很多同学在忙着找工作,小五抽空给大家整理了一份非常全面的Java面试题+场景题及答案!还有最新涉及的内容非常全面,包含:Redis、多线程、JVM、Spring、MySQL、Dubbo…等35个知识内容,希望对找工作的同学有所帮助。

由于平台篇幅原因,很多内容展示不了,需要的java面试宝典的伙伴们转发文章+关注后,扫描下方二维码免费获取:

图片

Redis 面试题

1、什么是 Redis?

2、Redis 的数据类型?

3、使用 Redis 有哪些好处?

4、Redis 相比 Memcached 有哪些优势?

5、Memcache 与 Redis 的区别都有哪些?

6、Redis 是单进程单线程的?

7、一个字符串类型的值能存储最大容量是多少?

8、Redis 的持久化机制是什么?各自的优缺点?

9、Redis 常见性能问题和解决方案:

10、redis 过期键的删除策略?

11、Redis 的回收策略(淘汰策略)?

12、为什么 edis 需要把所有数据放到内存中?

13、Redis 的同步机制了解么?

14、Pipeline 有什么好处,为什么要用 pipeline?

15、是否使用过 Redis 集群,集群的原理是什么?

16、Redis 集群方案什么情况下会导致整个集群不可用?

17、Redis 支持的 Java 客户端都有哪些?官方推荐用哪个?

18、Jedis 与 Redisson 对比有什么优缺点?

19、Redis 如何设置密码及验证密码?

20、说说 Redis 哈希槽的概念?

21、Redis 集群的主从复制模型是怎样的?

22、Redis 集群会有写操作丢失吗?为什么?

23、Redis 集群之间是如何复制的?

24、Redis 集群最大节点个数是多少?

25、Redis 集群如何选择数据库?

26、怎么测试 Redis 的连通性?

27、怎么理解 Redis 事务?

28、Redis 事务相关的命令有哪几个?

29、Redis key 的过期时间和永久有效分别怎么设置?

30、Redis 如何做内存优化?

31、Redis 回收进程如何工作的?

32、都有哪些办法可以降低 Redis 的内存使用情况呢?

33、Redis 的内存用完了会发生什么? 

34、一个 Redis 实例最多能存放多少的 keys?List、Set、Sorted Set他们最多能存放多少元素?

35、MySQL 里有 2000w 数据,redis 中只存 20w 的数据,如何保证

redis 中的数据都是热点数据?

36、Redis 最适合的场景? 

37、假如 Redis 里面有 1 亿个 key,其中有 10w 个 key 是以某个固定的已知的前缀开头的,如果将它们全部找出来?

38、如果有大量的 key 需要设置同一时间过期,一般需要注意什么?

39、使用过 Redis 做异步队列么,你是怎么用的?

40、使用过 Redis 分布式锁么,它是什么回事?

由于平台篇幅原因,很多内容展示不了,需要的java面试宝典的伙伴们转发文章+关注后,扫描下方二维码免费获取:

图片

MyBatis面试题

1、什么是 Mybatis?

2、Mybaits 的优点?

3、MyBatis 框架的缺点是什么?

4、MyBatis 框架适用场合:

5、MyBatis 与 Hibernate 有哪些不同?

6、#{}和${}的区别是什么?

7、当实体类中的属性名和表中的字段名不一样 ,怎么办 ?

8、 模糊查询 like 语句该怎么写?

9、通常一个 Xml 映射文件,都会写一个 Dao 接口与之对应,请问,这个 Dao 接口的工作原理是什么?Dao 接口里的方法,参数不同时,方法能重载吗?

10、Mybatis 是如何进行分页的?分页插件的原理是什么?

11、Mybatis 是如何将 sql 执行结果封装为目标对象并返回的?都有哪些映射形式?

12、如何执行批量插入?

13、如何获取自动生成的(主)键值?

14、在 mapper 中如何传递多个参数?

15、Mybatis 动态 sql 有什么用?执行原理?有哪些动态 sql?

16、Xml 映射文件中,除了常见的 select|insert|updae|delete 标签之外,还有哪些标签?

18、为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里?

19、 一对一、一对多的关联查询 ?

20、MyBatis 实现一对一有几种方式?具体怎么操作的?

21、MyBatis 实现一对多有几种方式,怎么操作的?

22、Mybatis 是否支持延迟加载?如果支持,它的实现原理是什么?23、Mybatis 的一级、二级缓存

24、什么是 MyBatis 的接口绑定?有哪些实现方式?

25、使用 MyBatis 的 mapper 接口调用时有哪些要求?

26、Mapper 编写有哪几种方式?

27、简述 Mybatis 的插件运行原理,以及如何编写一个插件。

由于平台篇幅原因,很多内容展示不了,需要的java面试宝典的伙伴们转发文章+关注后,扫描下方二维码免费获取:

图片

Java多线程面试题

  1. 并发编程三要素?

  2. 同步方法和同步块哪个是更好的选择?

  3. 谈谈原子性?哪些使用到了?

  4. 谈谈可见性?哪些使用到了?

  5. 谈谈有序性?举一个例子?

  6. 什么是线程池?

  7. 线程池有哪些创建方式?

  8. 谈谈四种线程池的创建?

  9. newCachedThreadPool?

  10. newFixedThreadPool ?

  11. newScheduledThreadPool ?

  12. newSingleThreadExecutor ?

  13. 多线程的优缺点?

  14. 创建线程的有哪些方式?

  15. 谈谈各种创建线程的优缺点?

  16. 对比下你应该选择哪种创建?

  17. Runnable和Callable的区别?

  18. 线程的状态流转图?有哪些状态?

  19. 谈谈Java线程五中基本状态?画一下?

  20. 各自的优缺点?

  21. 线程池的优点?

  22. 常用的并发集合类有哪些?

  23. ConcurrentHashMap实现?

  24. CopyOnWriteArrayList实现?

  25. CopyOnWriteArraySet实现?

  26. 谈谈COW?

  27. 常用的并发工具类有哪些?

  28. CyclicBarrier和CountDownLatch的应用场景?

  29. CyclicBarrier和CountDownLatch的区别?

  30. Semaphore的应用场景?

  31. synchronized的作用?底层如何实现?

  32. synchronized和ReentrantLock的区别?

  33. volatile关键字的作用?底层如何实现?

  34. 什么是CAS?底层如何实现?

  35. CAS有哪些问题?

  36. synchronized、volatile、CAS比较?

  37. 什么是Future?底层如何实现?

  38. 什么是FutureTask?

  39. 什么是AQS?底层如何实现?

  40. ReadWriteLock读写锁应用场景?

  41. ReadWriteLock底层实现?

  42. ThreadLocal是什么?底层如何实现?

  43. 死锁的常见原因有哪些?

  44. 如何避免死锁?有哪些解决方案?

  45. 怎么唤醒一个阻塞的线程?

  46. 什么是多线程的上下文切换?

  47. 线程调度算法是什么?

  48. 什么是线程调度器和时间分片?

  49. 单例模式的线程安全性?

  50. Executors是什么?

Java 并发编程(一)面试题

1、在 java 中守护线程和本地线程区别?

2、线程与进程的区别?

3、什么是多线程中的上下文切换?

4、死锁与活锁的区别,死锁与饥饿的区别?

5、Java 中用到的线程调度算法是什么?

6、什么是线程组,为什么在 Java 中不推荐使用?

7、为什么使用 Executor 框架?

8、在 Java 中 Executor 和 Executors 的区别? 

9、如何在 Windows 和 Linux 上查找哪个线程使用的 CPU 时间最长?

10、什么是原子操作?在 Java Concurrency API 中有哪些原子类(atomic classes)?

11、Java Concurrency API 中的 Lock 接口(Lock interface)是什么?

对比同步它有什么优势?

12、什么是 Executors 框架? 

13、什么是阻塞队列?阻塞队列的实现原理是什么?如何使用阻塞队列来实现生产者-消费者模型?

14、什么是 Callable 和 Future?

15、什么是 FutureTask?使用 ExecutorService 启动任务。

16、什么是并发容器的实现?

17、多线程同步和互斥有几种实现方法,都是什么?

18、什么是竞争条件?你怎样发现和解决竞争?

19、你将如何使用 thread dump?你将如何分析 Thread dump?

20、为什么我们调用 start()方法时会执行 run()方法,为什么我们不能直接调用 run()方法?

21、Java 中你怎样唤醒一个阻塞的线程?

22、在 Java 中 CycliBarriar 和 CountdownLatch 有什么区别?

23、什么是不可变对象,它对写并发应用有什么帮助?

24、什么是多线程中的上下文切换?

25、Java 中用到的线程调度算法是什么?

26、什么是线程组,为什么在 Java 中不推荐使用?

27、为什么使用 Executor 框架比使用应用创建和管理线程好? 

28、java 中有几种方法可以实现一个线程?

29、如何停止一个正在运行的线程?

30、notify()和 notifyAll()有什么区别?

31、什么是 Daemon 线程?它有什么意义?

32、java 如何实现多线程之间的通讯和协作?

33、什么是可重入锁(ReentrantLock)? 

34、当一个线程进入某个对象的一个 synchronized 的实例方法后,其它线程是否可进入此对象的其它方法?

35、乐观锁和悲观锁的理解及如何实现,有哪些实现方式?

36、SynchronizedMap 和 ConcurrentHashMap 有什么区别?

37、CopyOnWriteArrayList 可以用于什么应用场景?

38、什么叫线程安全?servlet 是线程安全吗?

39、volatile 有什么用?能否用一句话说明下 volatile 的应用场景?40、为什么代码会重排序?

41、在 java 中 wait 和 sleep 方法的不同?

42、用 Java 实现阻塞队列?

43、一个线程运行时发生异常会怎样?

44、如何在两个线程间共享数据?

45、Java 中 notify 和 notifyAll 有什么区别?

46、为什么 wait, notify 和 notifyAll 这些方法不在 thread 类里面?

47、什么是 ThreadLocal 变量?

48、Java 中 interrupted 和 isInterrupted 方法的区别?

49、为什么 wait 和 notify 方法要在同步块中调用?

50、为什么你应该在循环中检查等待条件?

51、Java 中的同步集合与并发集合有什么区别?

52、什么是线程池?为什么要使用它?

53、怎么检测一个线程是否拥有锁?

54、你如何在 Java 中获取线程堆栈?

56、Thread 类中的 yield 方法有什么作用?

57、Java 中 ConcurrentHashMap 的并发度是什么?

58、Java 中 Semaphore 是什么?

59、Java 线程池中 submit() 和 execute()方法有什么区别?

60、什么是阻塞式方法?

61、Java 中的 ReadWriteLock 是什么?

62、volatile 变量和 atomic 变量有什么不同?

63、可以直接调用 Thread 类的 run ()方法么?

64、如何让正在运行的线程暂停一段时间?

65、你对线程优先级的理解是什么?

66 、 什 么 是 线 程 调 度 器 (Thread Scheduler) 和 时 间 分 片 (TimeSlicing )?

67、你如何确保 main()方法所在的线程是 Java 程序最后结束的线程?

68、线程之间是如何通信的?

69、为什么线程通信的方法 wait(), notify()和 notifyAll()被定义在Object 类里?

70、为什么 wait(), notify()和 notifyAll ()必须在同步方法或者同步块

中被调用?

Java 并发编程(二)面试题

1、并发编程三要素?

2、实现可见性的方法有哪些?

3、多线程的价值?

4、创建线程的有哪些方式?

5、创建线程的三种方式的对比?

6、线程的状态流转图

7、Java 线程具有五中基本状态

8、什么是线程池?有哪几种创建方式?

9、四种线程池的创建:

10、线程池的优点?

11、常用的并发工具类有哪些?

12、CyclicBarrier 和 CountDownLatch 的区别

13、synchronized 的作用?

14、volatile 关键字的作用?

15、什么是 CAS

16、CAS 的问题

17、什么是 Future?

18、什么是 AQS

19、AQS 支持两种同步方式:

20、ReadWriteLock 是什么

21、FutureTask 是什么

22、synchronized 和 ReentrantLock 的区别

23、什么是乐观锁和悲观锁

24、线程 B 怎么知道线程 A 修改了变量

25、synchronized、volatile、CAS 比较

26、sleep 方法和 wait 方法有什么区别?

27、ThreadLocal 是什么?有什么用?

28、为什么 wait()方法和 notify()/notifyAll()方法要在同步块中被调用

29、多线程同步有哪几种方法?

30、线程的调度策略

由于平台篇幅原因,很多内容展示不了,需要的java面试宝典的伙伴们转发文章+关注后,扫描下方二维码免费获取:

图片

MySQL面试题及答案

  1. MySQL有哪些常见存储引擎?

  2. MySQL默认是哪个存储引擎?

  3. MySQL的架构设计?

  4. 详细说一下一条 MySQL 语句执行的步骤?

  5. 非关系型数据库(NOSQL)的优点?

  6. 谈谈数据库设计三大范式?

  7. 谈谈MySQL索引?

  8. MySQL表可以创建多少列索引?

  9. MySQL索引包含哪些?优缺点?

  10. 谈谈MySQL主键索引?

  11. 谈谈MySQL唯一索引?

  12. 谈谈MySQL全文索引?

  13. 索引,主键,唯一索引,联合索引的区别?

  14. 什么情况下设置了索引但无法使用?

  15. 举几个:最典型的例子?

  16. MySQL索引的底层原理,是如何实现的?

  17. MySQL事务的隔离级别有哪些?区别?

  18. MySQL事务的四大特征?

  19. MySQL事务原理?

  20. 谈谈bin log?

  21. 谈谈redo log?

  22. 谈谈undo log?

  23. 这三种Log在MySQL应用在哪里?

  24. SQL常见的查询语句有哪些?

  25. 有哪些对SQL语句优化的方法?

  26. Mysql中有哪几种锁?

  27. 表级锁、行级锁、页面锁区别?

  28. 优化数据库的方法有哪些?

  29. MySQL主从复制模式?

  30. 什么半同步复制?底层实现?

  31. 什么是异步复制?底层实现?

  32. 什么是全同步复制?底层实现?

Dubbo面试题及答案

  1. 谈谈你理解的Dubbo

  2. 什么是单一应用架构?

  3. 什么是垂直应用架构?

  4. 什么是分布式服务架构?

  5. Dubbo的主要应用场景?

  6. Dubbo的核心功能?

  7. Dubbo的核心组件有哪些?

  8. Dubbo服务注册?

  9. Dubbo发现的流程?

  10. Dubbo的架构设计?

  11. Dubbo的架构分哪些层?

  12. Dubbo服务的调用流程?

  13. Dubbo支持哪些协议?

  14. Dubbo各种协议的应用场景?

  15. Dubbo各种协议的优缺点?

  16. Dubbo推荐使用什么协议?

  17. Dubbo有哪些注册中心?

  18. Dubbo的服务治理?

  19. Dubbo的注册中心集群挂掉?

  20. Dubbo发布者和订阅者之间还能通信么?

  21. Dubbo与Spring的关系?

  22. dubbo 和 dubbox 之间的区别?

  23. 除了Dubbo还有哪些分布式框架?

  24. Dubbo和Spring Cloud的关系?

  25. dubbo和spring cloud的区别?

  26. Dubbo使用的是什么通信框架?

  27. Dubbo提供了哪些负载均衡策略?

  28. Dubbo的集群容错方案有哪些?

  29. Dubbo的默认集群容错方案?

  30. Dubbo支持哪些序列化方式?

  31. Dubbo默认使用哪个序列化方式?

  32. Dubbo超时时间怎样设置?

  33. 服务调用超时问题怎么解决?

  34. Dubbo在安全机制方面是如何解决?

  35. 图片

由于平台篇幅原因,很多内容展示不了,需要的java面试宝典的伙伴们转发文章+关注后,扫描下方二维码免费获取:

图片

  • 24
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值