10万字208道Java经典面试题总结(附答案)

作者简介:哪吒,CSDN2021博客之星亚军、新星计划导师博客专家

哪吒多年工作总结:Java学习路线总结,搬砖工逆袭Java架构师

技术交流:定期更新Java硬核干货,不定期送书活动

关注公众号【哪吒编程】,回复 面试题 ,获取《10万字208道Java经典面试题总结(附答案)》pdf,背题更方便,一文在手,面试我有

前言 

最近有很多粉丝问我,有什么方法能够快速提升自己,通过阿里、腾讯、字节跳动、京东等互联网大厂的面试,我觉得短时间提升自己最快的手段就是背面试题,最近总结了Java常用的面试题,分享给大家,希望大家都能圆梦大厂,加油,我命由我不由天。

10万字208道Java经典面试题总结(附答案)

目录

1、JDK 和 JRE 有什么区别/p>

2、== 和 equals 的区别是什么/p>

3、final 在 java 中有什么作用/p>

4、java 中的 Math.round(-1.5) 等于多少/p>

5、String 属于基础的数据类型吗/p>

6、String str=”i”与 String str=new String(“i”)一样吗/p>

7、如何将字符串反转/p>

8、String 类的常用方法都有那些/p>

9、new String(“a”) + new String(“b”) 会创建几个对象/p>

10、如何将字符串反转/p>

11、String 类的常用方法都有那些/p>

12、普通类和抽象类有哪些区别/p>

13、接口和抽象类有什么区别/p>

14、java 中 IO 流分为几种/p>

15、BIO、NIO、AIO 有什么区别/p>

16、Files的常用方法都有哪些/p>

17、什么是反射/p>

18、什么是 java 序列化么情况下需要序列化/p>

19、为什么要使用克隆何实现对象克隆拷贝和浅拷贝区别是什么/p>

20、throw 和 throws 的区别/p>

21、final、finally、finalize 有什么区别/p>

22、try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗/p>

23、常见的异常类有哪些/p>

24、hashcode是什么什么作用/p>

25、java 中操作字符串都有哪些类们之间有什么区别/p>

26、java 中都有哪些引用类型/p>

27、在 Java 中,为什么不允许从静态方法中访问非静态变量/p>

28、说说Java Bean的命名规范

29、Java Bean 属性命名规范问题分析

30、什么是 Java 的内存模型/p>

31、在 Java 中,什么时候用重载,什么时候用重写/p>

32、举例说明什么情况下会更倾向于使用抽象类而不是接口/p>

33、实例化对象有哪几种方式

34、byte类型127+1等于多少

35、Java 容器都有哪些/p>

36、Collection 和 Collections 有什么区别/p>

37、list与Set区别

38、HashMap 和 Hashtable 有什么区别/p>

39、说一下 HashMap 的实现原理/p>

40、set有哪些实现类/p>

41、说一下 HashSet 的实现原理/p>

42、ArrayList 和 LinkedList 的区别是什么/p>

43、如何实现数组和 List 之间的转换/p>

44、在 Queue 中 poll()和 remove()有什么区别/p>

45、哪些集合类是线程安全的

46、迭代器 Iterator 是什么/p>

47、Iterator 怎么使用什么特点/p>

48、Iterator 和 ListIterator 有什么区别/p>

49、怎么确保一个集合不能被修改/p>

50、队列和栈是什么什么区别/p>

51、Java8开始ConcurrentHashMap,为什么舍弃分段锁/p>

52、ConcurrentHashMap(JDK1.8)为什么要使用synchronized而不是如ReentranLock这样的可重入锁/p>

53、concurrentHashMap和HashTable有什么区别

54、HasmMap和HashSet的区别

55、请谈谈 ReadWriteLock 和 StampedLock

56、线程的run()和start()有什么区别/p>

57、为什么我们调用 start() 方法时会执行 run() 方法,为什么我们不能直接调用 run() 方法/p>

58、Synchronized 用过吗,其原理是什么/p>

59、JVM 对 Java 的原生锁做了哪些优化/p>

60、为什么 wait(), notify()和 notifyAll()必须在同步方法或者同步块中被调用/p>

61、Java 如何实现多线程之间的通讯和协作/p>

62、Thread 类中的 yield 方法有什么作用/p>

63、为什么说 Synchronized 是非公平锁/p>

64、请谈谈 volatile 有什么特点,为什么它能保证变量对所有线程的可见性/p>

65、为什么说 Synchronized 是一个悲观锁观锁的实现原理又是什么么是 CAS,它有什么特性/p>

66、乐观锁一定就是好的吗/p>

67、请尽可能详尽地对比下 Synchronized 和 ReentrantLock 的异同。

68、ReentrantLock 是如何实现可重入性的/p>

69、什么是锁消除和锁粗化/p>

70、跟 Synchronized 相比,可重入锁 ReentrantLock 其实现原理有什么不同/p>

71、那么请谈谈 AQS 框架是怎么回事儿/p>

72、AQS 对资源的共享方式/p>

73、如何让 Java 的线程彼此同步/p>

74、你了解过哪些同步器分别介绍下。

75、Java 中的线程池是如何实现的

76、创建线程池的几个核心构造参数

77、线程池中的线程是怎么创建的一开始就随着线程池的启动创建好的吗/p>

78、volatile 关键字的作用

79、既然 volatile 能够保证线程间的变量可见性,是不是就意味着基于 volatile 变量的运算就是并发安全的/p>

80、ThreadLocal 是什么哪些使用场景/p>

81、请谈谈 ThreadLocal 是怎么解决并发安全的/p>

82、很多人都说要慎用 ThreadLocal,谈谈你的理解,使用 ThreadLocal 需要注意些什么/p>

83、为什么代码会重排序/p>

84、什么是自旋

85、多线程中 synchronized 锁升级的原理是什么/p>

86、synchronized 和 ReentrantLock 区别是什么/p>

87、Java Concurrency API 中的 Lock 接口(Lock interface)是什么比同步它有什么优势/p>

88、jsp 和 servlet 有什么区别/p>

89、jsp 有哪些内置对象用分别是什么/p>

90、forward 和 redirect 的区别/p>

91、说一下 jsp 的 4 种作用域/p>

92、session 和 cookie 有什么区别/p>

93、如果客户端禁止 cookie 能实现 session 还能用吗/p>

94、什么是上下文切换/p>

95、cookie、session、token

96、说一下 session 的工作原理/p>

97、http 响应码 301 和 302 代表的是什么什么区别/p>

98、简述 tcp 和 udp的区别/p>

99、tcp 为什么要三次握手,两次不行吗什么/p>

100、OSI 的七层模型都有哪些/p>

101、get 和 post 请求有哪些区别/p>

102、什么是 XSS 攻击,如何避免/p>

103、什么是 CSRF 攻击,如何避免/p>

104、如何实现跨域一下 JSONP 实现原理/p>

105、websocket应用的是哪个协议

106、说一下 tcp 粘包是怎么产生的/p>

107、请列举出在 JDK 中几个常用的设计模式/p>

108、什么是设计模式是否在你的代码里面使用过任何设计模式/p>

109、Java 中什么叫单例设计模式用 Java 写出线程安全的单例模式

110、在 Java 中,什么叫观察者设计模式(observer design pattern)/p>

111、使用工厂模式最主要的好处是什么哪里使用/p>

112、请解释自动装配模式的区别/p>

113、举一个用 Java 实现的装饰模式(decorator design pattern)是作用于对象层次还是类层次/p>

114、什么是 Spring 框架pring 框架有哪些主要模块/p>

115、使用 Spring 框架能带来哪些好处/p>

116、Spring IOC、AOP举例说明

117、什么是控制反转(IOC)么是依赖注入/p>

118、BeanFactory 和 ApplicationContext 有什么区别/p>

119、什么是 JavaConfig/p>

120、什么是 ORM 框架/p>

121、Spring 有几种配置方式/p>

122、请解释 Spring Bean 的生命周期/p>

123、Spring Bean 的作用域之间有什么区别pring容器中的bean可以分为5个范围:

124、如何在 Spring Boot 中禁用 Actuator 端点安全性/p>

125、什么是 Spring inner beans/p>

126、Spring 框架中的单例 Beans 是线程安全的么/p>

127、请解释 Spring Bean 的自动装配/p>

128、如何开启基于注解的自动装配/p>

129、什么是 Spring Batch/p>

130、spring mvc 和 struts 的区别是什么/p>

131、请举例解释@Required 注解/p>

132、Spring常用注解

133、项目中是如何实现权限验证的,权限验证需要几张表

134、谈谈controller,接口调用的路径问题

135、如何防止表单重复提交

136、Spring中都应用了哪些设计模式

137、请举例说明如何在 Spring 中注入一个 Java Collection/p>

138、mybatis 中 #{}和 ${}的区别是什么/p>

139、mybatis 是否支持延迟加载迟加载的原理是什么/p>

140、说一下 mybatis 的一级缓存和二级缓存/p>

141、mybatis 有哪些执行器(Executor)/p>

142、mybatis 和 hibernate 的区别有哪些/p>

143、myBatis查询多个id、myBatis常用属性

144、mybatis一级缓存、二级缓存

145、mybatis如何防止sql注入

146、hibernate 中如何在控制台查看打印的 sql 语句/p>

147、hibernate 有几种查询方式/p>

148、hibernate 实体类可以被定义为 final 吗/p>

149、在 hibernate 中使用 Integer 和 int 做映射有什么区别/p>

150、什么是 Spring Bootpring Boot 有哪些优点/p>

151、Spring Boot 中的监视器是什么/p>

152、什么是 YAML/p>

153、如何使用 Spring Boot 实现分页和排序/p>

154、如何使用 Spring Boot 实现异常处理/p>

155、单点登录

156、Spring Boot比Spring多哪些注解

157、打包和部署

158、Spring Boot如何访问不同的数据库

159、查询网站在线人数

160、easyExcel如何实现

161、什么是 Swagger用 Spring Boot 实现了它吗/p>

162、数据库的三范式是什么/p>

163、一张自增表里面总共有 7 条数据,删除了最后 2 条数据,重启 mysql 数据库,又插入了一条数据,此时 id 是几/p>

164、如何获取当前数据库版本/p>

165、说一下 ACID 是什么/p>

166、char 和 varchar 的区别是什么/p>

167、float 和 double 的区别是什么/p>

168、Oracle分页sql

169、数据库如何保证主键唯一性

170、如何设计数据库

171、性别是否适合做索引

172、如何查询重复的数据

173、数据库一般会采取什么样的优化方法/p>

174、索引怎么定义,分哪几种

175、mysql 的内连接、左连接、右连接有什么区别/p>

176、RabbitMQ的使用场景有哪些/p>

177、RabbitMQ有哪些重要的角色哪些重要的组件/p>

178、RabbitMQ中 vhost 的作用是什么/p>

179、说一下 jvm 的主要组成部分其作用/p>

180、说一下 jvm 运行时数据区/p>

181、什么是类加载器,类加载器有哪些/p>

182、说一下类加载的执行过程/p>

183、JVM的类加载机制是什么/p>

184、什么是双亲委派模型/p>

185、怎么判断对象是否可以被回收/p>

186、说一下 jvm 有哪些垃圾回收算法/p>

187、说一下 jvm 有哪些垃圾回收器/p>

188、JVM栈堆概念,何时销毁对象

189、新生代垃圾回收器和老生代垃圾回收器都有哪些什么区别/p>

190、详细介绍一下 CMS 垃圾回收器/p>

191、简述分代垃圾回收器是怎么工作的/p>

192、Redis是什么/p>

193、Redis都有哪些使用场景/p>

194、Redis有哪些功能/p>

195、Redis支持的数据类型有哪些/p>

196、Redis取值存值问题

197、Redis为什么是单线程的/p>

198、Redis真的是单线程的吗/p>

199、Redis持久化有几种方式/p>

200、Redis和 memecache 有什么区别/p>

201、Redis支持的 java 客户端都有哪些/p>

202、jedis 和 redisson 有哪些区别/p>

203、什么是缓存穿透么解决/p>

204、怎么保证缓存和数据库数据的一致性/p>

205、Redis,什么是缓存穿透么解决/p>

206、Redis怎么实现分布式锁/p>

207、Redis分布式锁有什么缺陷/p>

208、Redis如何做内存优化/p>


1、JDK 和 JRE 有什么区别/h2>

JDK(Java Development Kit),Java开发工具包

JRE(Java Runtime Environment),Java运行环境

JDK中包含JRE,JDK中有一个名为jre的目录,里面包含两个文件夹bin和lib,bin就是JVM,lib就是JVM工作所需要的类库。

2、== 和 equals 的区别是什么/h2>
  1. 对于基本类型,==比较的是值;
  2. 对于引用类型,==比较的是地址;
  3. equals不能用于基本类型的比较;
  4. 如果没有重写equals,equals就相当于==;
  5. 如果重写了equals方法,equals比较的是对象的内容;

3、final 在 java 中有什么作用/h2>

(1)用来修饰一个引用

  1.  如果引用为基本数据类型,则该引用为常量,该值无法修改;
  2.  如果引用为引用数据类型,比如对象、数组,则该对象、数组本身可以修改,但指向该对象或数组的地址的引用不能修改。
  3.  如果引用时类的成员变量,则必须当场赋值,否则编译会报错。

(2)用来修饰一个方法

当使用final修饰方法时,这个方法将成为最终方法,无法被子类重写。但是,该方法仍然可以被继承。

(3)用来修饰类

当用final修改类时,该类成为最终类,无法被继承。

 比如常用的String类就是最终类。

4、java 中的 Math.round(-1.5) 等于多少/h2>

Math提供了三个与取整有关的方法:ceil、floor、round

(1)ceil:向上取整;

Math.ceil(11.3) = 12;

Math.ceil(-11.3) = 11;

(2)floor:向下取整;

Math.floor(11.3) = 11;

Math.floor(-11.3) = -12;

(3)round:四舍五入;

加0.5然后向下取整。

Math.round(11.3) = 11;

Math.round(11.8) = 12;

Math.round(-11.3) = -11;

Math.round(-11.8) = -12;

5、String 属于基础的数据类型吗/h2>

不属于。

八种基本数据类型:byte、short、char、int、long、double、float、boolean。

6、String str=”i”与 String str=new String(“i”)一样吗/h2>

String str=”i”会将起分配到常量池中,常量池中没有重复的元素,如果常量池中存中i,就将i的地址赋给变量,如果没有就创建一个再赋给变量。

String str=new String(“i”)会将对象分配到堆中,即使内存一样,还是会重新创建一个新的对象。

7、如何将字符串反转/h2>

将对象封装到stringBuilder中,调用reverse方法反转。

10万字208道Java经典面试题总结(附答案)

8、String 类的常用方法都有那些/h2>

(1)常见String类的获取功能

length:获取字符串长度;
charAt(int index):获取指定索引位置的字符;
indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引;
substring(int start):从指定位置开始截取字符串,默认到末尾;
substring(int start,int end):从指定位置开始到指定位置结束截取字符串;

(2)常见String类的判断功能

equals(Object obj): 比较字符串的内容是否相同,区分大小写;
contains(String str): 判断字符串中是否包含传递进来的字符串;
startsWith(String str): 判断字符串是否以传递进来的字符串开头;
endsWith(String str): 判断字符串是否以传递进来的字符串结尾;
isEmpty(): 判断字符串的内容是否为空串

来源:哪 吒

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年7月19日
下一篇 2022年7月19日

相关推荐