200个Java经典面试题总结附带答案.docx

上传人:b****6 文档编号:8776969 上传时间:2023-02-01 格式:DOCX 页数:115 大小:116.09KB
下载 相关 举报
200个Java经典面试题总结附带答案.docx_第1页
第1页 / 共115页
200个Java经典面试题总结附带答案.docx_第2页
第2页 / 共115页
200个Java经典面试题总结附带答案.docx_第3页
第3页 / 共115页
200个Java经典面试题总结附带答案.docx_第4页
第4页 / 共115页
200个Java经典面试题总结附带答案.docx_第5页
第5页 / 共115页
点击查看更多>>
下载资源
资源描述

200个Java经典面试题总结附带答案.docx

《200个Java经典面试题总结附带答案.docx》由会员分享,可在线阅读,更多相关《200个Java经典面试题总结附带答案.docx(115页珍藏版)》请在冰豆网上搜索。

200个Java经典面试题总结附带答案.docx

200个Java经典面试题总结附带答案

Java经典面试题总结(附答案)

1、JDK和JRE有什么区别?

2、==和equals的区别是什么?

3、final在java中有什么作用?

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

5、String属于基础的数据类型吗?

6、Stringstr="i"与Stringstr=newString(“i”)一样吗?

7、如何将字符串反转?

8、String类的常用方法都有那些?

9、newString("a")+newString("b")会创建几个对象?

10、如何将字符串反转?

11、String类的常用方法都有那些?

12、普通类和抽象类有哪些区别?

13、接口和抽象类有什么区别?

14、java中IO流分为几种?

15、BIO、NIO、AIO有什么区别?

16、Files的常用方法都有哪些?

17、什么是反射?

18、什么是java序列化?

什么情况下需要序列化?

19、为什么要使用克隆?

如何实现对象克隆?

深拷贝和浅拷贝区别是什么?

20、throw和throws的区别?

21、final、finally、finalize有什么区别?

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

23、常见的异常类有哪些?

24、hashcode是什么?

有什么作用?

25、java中操作字符串都有哪些类?

它们之间有什么区别?

26、java中都有哪些引用类型?

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

28、说说JavaBean的命名规范

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

30、什么是Java的内存模型?

31、在Java中,什么时候用重载,什么时候用重写?

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

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

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

35、Java容器都有哪些?

36、Collection和Collections有什么区别?

37、list与Set区别

38、HashMap和Hashtable有什么区别?

39、说一下HashMap的实现原理?

40、set有哪些实现类?

41、说一下HashSet的实现原理?

42、ArrayList和LinkedList的区别是什么?

43、如何实现数组和List之间的转换?

44、在Queue中poll()和remove()有什么区别?

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

46、迭代器Iterator是什么?

47、Iterator怎么使用?

有什么特点?

48、Iterator和ListIterator有什么区别?

49、怎么确保一个集合不能被修改?

50、队列和栈是什么?

有什么区别?

51、Java8开始ConcurrentHashMap,为什么舍弃分段锁?

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

53、concurrentHashMap和HashTable有什么区别

54、HasmMap和HashSet的区别

55、请谈谈ReadWriteLock和StampedLock

56、线程的run()和start()有什么区别?

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

58、Synchronized用过吗,其原理是什么?

59、JVM对Java的原生锁做了哪些优化?

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

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

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

63、为什么说Synchronized是非公平锁?

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

65、为什么说Synchronized是一个悲观锁?

乐观锁的实现原理又是什么?

什么是CAS,它有什么特性?

66、乐观锁一定就是好的吗?

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

68、ReentrantLock是如何实现可重入性的?

69、什么是锁消除和锁粗化?

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

71、那么请谈谈AQS框架是怎么回事儿?

72、AQS对资源的共享方式?

73、如何让Java的线程彼此同步?

74、你了解过哪些同步器?

请分别介绍下。

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

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

77、线程池中的线程是怎么创建的?

是一开始就随着线程池的启动创建好的吗?

78、volatile关键字的作用

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

80、ThreadLocal是什么?

有哪些使用场景?

81、请谈谈ThreadLocal是怎么解决并发安全的?

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

83、为什么代码会重排序?

84、什么是自旋

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

86、synchronized和ReentrantLock区别是什么?

87、JavaConcurrencyAPI中的Lock接口(Lockinterface)是什么?

对比同步它有什么优势?

88、jsp和servlet有什么区别?

89、jsp有哪些内置对象?

作用分别是什么?

90、forward和redirect的区别?

91、说一下jsp的4种作用域?

92、session和cookie有什么区别?

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

94、什么是上下文切换?

95、cookie、session、token

96、说一下session的工作原理?

97、http响应码301和302代表的是什么?

有什么区别?

98、简述tcp和udp的区别?

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

为什么?

100、OSI的七层模型都有哪些?

101、get和post请求有哪些区别?

102、什么是XSS攻击,如何避免?

103、什么是CSRF攻击,如何避免?

104、如何实现跨域?

说一下JSONP实现原理?

105、websocket应用的是哪个协议

106、说一下tcp粘包是怎么产生的?

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

108、什么是设计模式?

你是否在你的代码里面使用过任何设计模式?

109、Java中什么叫单例设计模式?

请用Java写出线程安全的单例模式

110、在Java中,什么叫观察者设计模式(observerdesignpattern)?

111、使用工厂模式最主要的好处是什么?

在哪里使用?

112、请解释自动装配模式的区别?

113、举一个用Java实现的装饰模式(decoratordesignpattern)?

它是作用于对象层次还是类层次?

114、什么是Spring框架?

Spring框架有哪些主要模块?

115、使用Spring框架能带来哪些好处?

116、SpringIOC、AOP举例说明

117、什么是控制反转(IOC)?

什么是依赖注入?

118、BeanFactory和ApplicationContext有什么区别?

119、什么是JavaConfig?

120、什么是ORM框架?

121、Spring有几种配置方式?

122、请解释SpringBean的生命周期?

123、SpringBean的作用域之间有什么区别?

Spring容器中的bean可以分为5个范围:

124、如何在SpringBoot中禁用Actuator端点安全性?

125、什么是Springinnerbeans?

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

127、请解释SpringBean的自动装配?

128、如何开启基于注解的自动装配?

129、什么是SpringBatch?

130、springmvc和struts的区别是什么?

131、请举例解释@Required注解?

132、Spring常用注解

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

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

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

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

137、请举例说明如何在Spring中注入一个JavaCollection?

138、mybatis中#{}和${}的区别是什么?

139、mybatis是否支持延迟加载?

延迟加载的原理是什么?

140、说一下mybatis的一级缓存和二级缓存?

141、mybatis有哪些执行器(Executor)?

142、mybatis和hibernate的区别有哪些?

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

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

145、mybatis如何防止sql注入

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

147、hibernate有几种查询方式?

148、hibernate实体类可以被定义为final吗?

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

150、什么是SpringBoot?

SpringBoot有哪些优点?

151、SpringBoot中的监视器是什么?

152、什么是YAML?

153、如何使用SpringBoot实现分页和排序?

154、如何使用SpringBoot实现异常处理?

155、单点登录

156、SpringBoot比Spring多哪些注解

157、打包和部署

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

159、查询网站在线人数

160、easyExcel如何实现

161、什么是Swagger?

你用SpringBoot实现了它吗?

162、数据库的三范式是什么?

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

164、如何获取当前数据库版本?

165、说一下ACID是什么?

166、char和varchar的区别是什么?

167、float和double的区别是什么?

168、Oracle分页sql

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

170、如何设计数据库

171、性别是否适合做索引

172、如何查询重复的数据

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

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

175、mysql的内连接、左连接、右连接有什么区别?

176、RabbitMQ的使用场景有哪些?

177、RabbitMQ有哪些重要的角色?

有哪些重要的组件?

178、RabbitMQ中vhost的作用是什么?

179、说一下jvm的主要组成部分?

及其作用?

180、说一下jvm运行时数据区?

181、什么是类加载器,类加载器有哪些?

182、说一下类加载的执行过程?

183、JVM的类加载机制是什么?

184、什么是双亲委派模型?

185、怎么判断对象是否可以被回收?

186、说一下jvm有哪些垃圾回收算法?

187、说一下jvm有哪些垃圾回收器?

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

189、新生代垃圾回收器和老生代垃圾回收器都有哪些?

有什么区别?

190、详细介绍一下CMS垃圾回收器?

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

192、Redis是什么?

193、Redis都有哪些使用场景?

194、Redis有哪些功能?

195、Redis支持的数据类型有哪些?

196、Redis取值存值问题

197、Redis为什么是单线程的?

198、Redis真的是单线程的吗?

199、Redis持久化有几种方式?

200、Redis和memecache有什么区别?

201、Redis支持的java客户端都有哪些?

202、jedis和redisson有哪些区别?

203、什么是缓存穿透?

怎么解决?

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

205、Redis,什么是缓存穿透?

怎么解决?

206、Redis怎么实现分布式锁?

207、Redis分布式锁有什么缺陷?

208、Redis如何做内存优化?

1、JDK和JRE有什么区别?

JDK(JavaDevelopmentKit),Java开发工具包

JRE(JavaRuntimeEnvironment),Java运行环境

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

2、==和equals的区别是什么?

对于基本类型,==比较的是值;

对于引用类型,==比较的是地址;

equals不能用于基本类型的比较;

如果没有重写equals,equals就相当于==;

如果重写了equals方法,equals比较的是对象的内容;

3、final在java中有什么作用?

final修饰的成员变量,必须在声明的同时赋值,一旦创建不可修改;

final修饰的方法,不能被子类重写;

final类中的方法默认是final的;

private类型的方法默认是final的;

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

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属于基础的数据类型吗?

不属于。

八种基本数据类型:

byte、short、char、int、long、double、float、boolean。

6、Stringstr="i"与Stringstr=newString(“i”)一样吗?

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

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

7、如何将字符串反转?

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

8、String类的常用方法都有那些?

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

length:

获取字符串长度;

charAt(intindex):

获取指定索引位置的字符;

indexOf(intch):

返回指定字符在此字符串中第一次出现处的索引;

substring(intstart):

从指定位置开始截取字符串,默认到末尾;

substring(intstart,intend):

从指定位置开始到指定位置结束截取字符串;

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

equals(Objectobj):

比较字符串的内容是否相同,区分大小写;

contains(Stringstr):

判断字符串中是否包含传递进来的字符串;

startsWith(Stringstr):

判断字符串是否以传递进来的字符串开头;

endsWith(Stringstr):

判断字符串是否以传递进来的字符串结尾;

isEmpty():

判断字符串的内容是否为空串"";

(3)常见String类的转换功能

byte[]getBytes():

把字符串转换为字节数组;

char[]toCharArray():

把字符串转换为字符数组;

StringvalueOf(char[]chs):

把字符数组转成字符串。

valueOf可以将任意类型转为字符串;

toLowerCase():

把字符串转成小写;

toUpperCase():

把字符串转成大写;

concat(Stringstr):

把字符串拼接;

(4)常见String类的其他常用功能

replace(charold,charnew)将指定字符进行互换

replace(Stringold,Stringnew)将指定字符串进行互换

trim()去除两端空格

intcompareTo(Stringstr)会对照ASCII码表从第一个字母进行减法运算返回的就是这个减法的结果,如果前面几个字母一样会根据两个字符串的长度进行减法运算返回的就是这个减法的结果,如果连个字符串一摸一样返回的就是0。

9、newString("a")+newString("b")会创建几个对象?

对象1:

newStringBuilder()

对象2:

newString("a")

对象3:

常量池中的"a"

对象4:

newString("b")

对象5:

常量池中的"b"

深入剖析:

StringBuilder中的toString():

对象6:

newString("ab")

强调一下,toString()的调用,在字符串常量池中,没有生成"ab"

附加题

Strings1=newString("1")+newString("1");//s1变量记录的地址为:

newString

s1.intern();//在字符串常量池中生成"11"。

如何理解:

jdk6:

创建了一个新的对象"11",也就有新的地址;jdk7:

此时常量池中并没有创建"11",而是创建了一个指向堆空间中newString("11")的地址;

Strings2="11";

System.out.println(s1==s2);//jdk6:

false;jdk7:

true

10、如何将字符串反转?

添加到StringBuilder中,然后调用reverse()。

11、String类的常用方法都有那些?

equals、length、contains、replace、split、hashcode、indexof、substring、trim、toUpperCase、toLowerCase、isEmpty等等。

12、普通类和抽象类有哪些区别?

抽象类不能被实例化;

抽象类可以有抽象方法,只需申明,无须实现;

有抽象方法的类一定是抽象类;

抽象类的子类必须实现抽象类中的所有抽象方法,否则子类仍然是抽象类;

抽象方法不能声明为静态、不能被static、final修饰。

13、接口和抽象类有什么区别?

(1)接口

接口使用interface修饰;

接口不能实例化;

类可以实现多个接口;

①java8之前,接口中的方法都是抽象方法,省略了publicabstract。

②java8之后;接口中可以定义静态方法,静态方法必须有方法体,普通方法没有方法体,需要被实现;

(2)抽象类

抽象类使用abstract修饰;

抽象类不能被实例化;

抽象类只能单继承;

抽象类中可以包含抽象方法和非抽象方法,非抽象方法需要有方法体;

如果一个类继承了抽象类,①如果实现了所有的抽象方法,子类可以不是抽象类;②如果没有实现所有的抽象方法,子类仍然是抽象类。

14、java中IO流分为几种?

(1)按流划分,可以分为输入流和输出流;

(2)按单位划分,可以分为字节流和字符流;

字节流:

inputStream、outputStream;

字符流:

reader、writer;

15、BIO、NIO、AIO有什么区别?

(1)同步阻塞BIO

一个连接一个线程。

JDK1.4之前,建立网络连接的时候采用BIO模式,先在启动服务端socket,然后启动客户端socket,对服务端通信,客户端发送请求后,先判断服务端是否有线程响应,如果没有则会一直等待或者遭到拒绝请求,如果有的话会等待请求结束后才继续执行。

(2)同步非阻塞NIO

NIO主要是想解决BIO的大并发问题,BIO是每一个请求分配一个线程,当请求过多时,每个线程占用一定的内存空间,服务器瘫痪了。

JDK1.4开始支持NIO,适用于连接数目多且连接比较短的架构,比如聊天服务器,并发局限于应用中。

一个请求一个线程。

(3)异步非阻塞AIO

一个有效请求一个线程。

JDK1.7开始支持AIO,适用于连接数目多且连接比较长的结构,比如相册服务器,充分调用OS参与并发操作。

16、Files的常用方法都有哪些?

exist

createFile

createDirectory

write

read

copy

size

delete

move

17、什么是反射?

所谓反射,是java在运行时进行自我观察的能力,通过class、constructor、field、method四个方法获取一个类的各个组成部分。

在Java运行时环境中,对任意一个类,可以知道类有哪些属性和方法。

这种动态获取类的信息以及动态调用对象的方法的功能来自于反射机制。

18、什么是java序列化?

什么情况下需要序列化?

序列化就是一种用来处理对象流的机制。

将对象的内容流化,将流化后的对象传输于网络之间。

序列化是通过实现serializable接口,该接口没有需要实现的方法,implementSerializable只是为了标注该对象是可被序列化的,使用一个输出流(FileOutputStream)来构造一个ObjectOutputStream对象,接着使用ObjectOutputStream对象的writeObejct(Objectobject)方法就可以将参数的obj对象到磁盘,需要恢复的时候使用输入流。

序列化是将对象转换为容易传输的格式的过程。

例如,可以序列化一个对象,然后通过HTTP通过Internet在客户端和服务器之间传输该对象。

在另一端,反序列化将从流中心构造成对象。

一般程序在运行时,产生对象,这些对象随着程序的停止而消失,但

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 从业资格考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1