Java面试题总结(附答案)

这篇博客汇总了Java面试中的核心知识点,包括Java基础、集合、多线程、网络、设计模式、Spring/SpringMVC等多个领域,覆盖了从基础到高级的全面问题,适合准备Java面试者参考学习。
摘要由CSDN通过智能技术生成

题目篇
一、Java基础
1、JDK 和 JRE 有什么区别?
2、== 和 equals 的区别是什么?
3、两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?
4、final 在 java 中有什么作用?
5、java 中的 Math.round(-1.5) 等于多少?
6、String 属于基础的数据类型吗?
7、java 中操作字符串都有哪些类?它们之间有什么区别?
8、String str="i"与 String str=new String(“i”)一样吗?
9、如何将字符串反转?
10、String 类的常用方法都有那些?
11、抽象类必须要有抽象方法吗?
12、普通类和抽象类有哪些区别?
13、抽象类能使用 final 修饰吗?
14、接口和抽象类有什么区别?
15、java 中 IO 流分为几种?
16、BIO、NIO、AIO 有什么区别?
17、Files的常用方法都有哪些?
18、什么是反射?
19、什么是 java 序列化?什么情况下需要序列化?
20、动态代理是什么?有哪些应用?
21、怎么实现动态代理?
22、为什么要使用克隆?
23、如何实现对象克隆?
24、深拷贝和浅拷贝区别是什么?
25、throw 和 throws 的区别?
26、final、finally、finalize 有什么区别?
27、try-catch-finally 中哪个部分可以省略?
28、try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?
29、常见的异常类有哪些?
30、new String("a") + new String("b") 会创建几个对象?

二、Java集合
1、java 容器都有哪些?
2、Collection 和 Collections 有什么区别?
3、List、Set、Map 之间的区别是什么?
4、HashMap 和 Hashtable 有什么区别?
5、说一下 HashMap 的实现原理?
6、set有哪些实现类?
7、说一下 HashSet 的实现原理?
8、ArrayList 和 LinkedList 的区别是什么?
9、如何实现数组和 List 之间的转换?
10、ArrayList 和 Vector 的区别是什么?
11、Array 和 ArrayList 有何区别?
12、在 Queue 中 poll()和 remove()有什么区别?
13、哪些集合类是线程安全的?
14、迭代器 Iterator 是什么?
15、Iterator 怎么使用?有什么特点?
16、Iterator 和 ListIterator 有什么区别?
17、怎么确保一个集合不能被修改?
18、队列和栈是什么?有什么区别?

三、多线程
1、Synchronized 用过吗,其原理是什么?
2、请对比下 volatile 对比 Synchronized 的异同。
3、请谈谈 volatile 有什么特点,为什么它能保证变量对所有线程的可见性?
4、JVM 对 Java 的原生锁做了哪些优化?
5、为什么说 Synchronized 是非公平锁?
6、什么是锁消除和锁粗化?
7、为什么说 Synchronized 是一个悲观锁?乐观锁的实现原理又是什么?什么是 CAS,它有什么特性?
8、乐观锁一定就是好的吗?
9、跟 Synchronized 相比,可重入锁 ReentrantLock 其实现原理有什么不同?
10、那么请谈谈 AQS 框架是怎么回事儿?
11、请尽可能详尽地对比下 Synchronized 和 ReentrantLock 的异同。
12、ReentrantLock 是如何实现可重入性的?
13、除了 ReetrantLock,你还接触过 JUC 中的哪些并发工具?
14、请谈谈 ReadWriteLock 和 StampedLock。
15、如何让 Java 的线程彼此同步?你了解过哪些同步器?请分别介绍下。
16、CyclicBarrier 和 CountDownLatch 看起来很相似,请对比下呢?
17、Java 线程池相关问题
18、Java 中的线程池是如何实现的?
19、创建线程池的几个核心构造参数?
20、线程池中的线程是怎么创建的?是一开始就随着线程池的启动创建好的吗?
21、既然提到可以通过配置不同参数创建出不同的线程池,那么 Java 中默认实现好的线程池又有哪些呢?请比较它们的异同
22、如何在 Java 线程池中提交线程?
23、什么是 Java 的内存模型,Java 中各个线程是怎么彼此看到对方的变量的?
24

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值