没有合适的资源?快使用搜索试试~ 我知道了~
java面试讲题汇总-word可打印版
需积分: 5 1 下载量 83 浏览量
2023-01-12
11:32:06
上传
评论
收藏 2.29MB DOCX 举报
温馨提示
试读
82页
java面试讲题汇总
资源推荐
资源详情
资源评论
1 / 82
1、JDK 和 JRE 有什么区别?
2、== 和 equals 的区别是什么?
3、final 在 java 中有什么作用?
4、java 中的 Math.round(-1.5) 等于多少?
5、String 属于基础的数据类型吗?
6、String str="i"与 String str=new String(“i”)一样
吗?
7、如何将字符串反转?
8、String 类的常用方法都有那些?
9、new String("a") + new String("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、说说 Java Bean 的命名规范
29、Java Bean 属性命名规范问题分析
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 、 Java Concurrency API 中 的 Lock 接 口 (Lock
interface)是什么?对比同步它有什么优势?
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 中,什么叫观察者设计模式(observer
design pattern)?
111、使用工厂模式最主要的好处是什么?在哪里
使用?
112、请解释自动装配模式的区别?
113、举一个用 Java 实现的装饰模式(decorator
design pattern)?它是 作用于 对象层次还是类层
次?
114、什么是 Spring 框架?Spring 框架有哪些主
要模块?
2 / 82
115、使用 Spring 框架能带来哪些好处?
116、Spring IOC、AOP 举例说明
117、什么是控制反转(IOC)?什么是依赖注入?
118、BeanFactory 和 ApplicationContext 有什么区
别?
119、什么是 JavaConfig?
120、什么是 ORM 框架?
121、Spring 有几种配置方式?
122、请解释 Spring Bean 的生命周期?
123 、Spring Bean 的作用域之间有什么区别?
Spring 容器中的 bean 可以分为 5 个范围:
124、如何在 Spring Boot 中禁用 Actuator 端点安
全性?
125、什么是 Spring inner beans?
126 、Spring 框架中的单例 Beans 是线程安全的
么?
127、请解释 Spring Bean 的自动装配?
128、如何开启基于注解的自动装配?
129、什么是 Spring Batch?
130、spring mvc 和 struts 的区别是什么?
131、请举例解释@Required 注解?
132、Spring 常用注解
133、项目中是如何实现权限验证的,权限验证需
要几张表
134、谈谈 controller,接口调用的路径问题
135、如何防止表单重复提交
136、Spring 中都应用了哪些设计模式
137 、请举例说明如何在 Spring 中注入一个 Java
Collection?
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 、什么是 Spring Boot ?Spring Boot 有哪些优
点?
151、Spring Boot 中的监视器是什么?
152、什么是 YAML?
153、如何使用 Spring Boot 实现分页和排序?
154、如何使用 Spring Boot 实现异常处理?
155、单点登录
156、Spring Boot 比 Spring 多哪些注解
157、打包和部署
158、Spring Boot 如何访问不同的数据库
159、查询网站在线人数
160、easyExcel 如何实现
161 、什么是 Swagger ?你用 Spring Boot 实现了
它吗?
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 如何做内存优化?
3 / 82
1、JDK 和 JRE 有什么区别?
JDK(Java Development Kit),Java 开发工具包
JRE(Java Runtime Environment),Java 运行环境
JDK 中包含 JRE,JDK 中有一个名为 jre 的目录,里面包含两个文件夹 bin 和 lib,bin 就是 JVM,lib 就是 JVM 工作所需要
的类库。
2、== 和 equals 的区别是什么?
对于基本类型,==比较的是值;
对于引用类型,==比较的是地址;
equals 不能用于基本类型的比较;
如果没有重写 equals,equals 就相当于==;
如果重写了 equals 方法,equals 比较的是对象的内容;
3、final 在 java 中有什么作用?
(1)用来修饰一个引用
如果引用为基本数据类型,则该引用为常量,该值无法修改;
如果引用为引用数据类型,比如对象、数组,则该对象、数组本身可以修改,但指向该对象或数组的地址的引用不能
修改。
如果引用时类的成员变量,则必须当场赋值,否则编译会报错。
(2)用来修饰一个方法
当使用 final 修饰方法时,这个方法将成为最终方法,无法被子类重写。但是,该方法仍然可以被继承。
(3)用来修饰类
当用 final 修改类时,该类成为最终类,无法被继承。
比如常用的 String 类就是最终类。
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、String str="i"与 String str=new String(“i”)一样吗?
String str="i"会将起分配到常量池中,常量池中没有重复的元素,如果常量池中存中 i,就将 i 的地址赋给变量,如果没
有就创建一个再赋给变量。
String str=new String(“i”)会将对象分配到堆中,即使内存一样,还是会重新创建一个新的对象。
7、如何将字符串反转?
4 / 82
将对象封装到 stringBuilder 中,调用 reverse 方法反转。
8、String 类的常用方法都有那些?
(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(): 判断字符串的内容是否为空串"";
(3)常见 String 类的转换功能
byte[] getBytes(): 把字符串转换为字节数组;
char[] toCharArray(): 把字符串转换为字符数组;
String valueOf(char[] chs): 把字符数组转成字符串。valueOf 可以将任意类型转为字符串;
toLowerCase(): 把字符串转成小写;
toUpperCase(): 把字符串转成大写;
concat(String str): 把字符串拼接;
(4)常见 String 类的其他常用功能
replace(char old,char new) 将指定字符进行互换
replace(String old,String new) 将指定字符串进行互换
trim() 去除两端空格
int compareTo(String str) 会对照 ASCII 码表 从第一个字母进行减法运算 返回的就是这个减法的结果,如果前面几个字
母一样会根据两个字符串的长度进行减法运算返回的就是这个减法的结果,如果连个字符串一摸一样 返回的就是 0。
9、new String("a") + new String("b") 会创建几个对象?
对象 1:new StringBuilder()
对象 2:new String("a")
对象 3:常量池中的"a"
对象 4:new String("b")
对象 5:常量池中的"b"
深入剖析:StringBuilder 中的 toString():
5 / 82
对象 6:new String("ab")
强调一下,toString()的调用,在字符串常量池中,没有生成"ab"
附加题
String s1 = new String("1") + new String("1");//s1 变量记录的地址为:new String
s1.intern();//在字符串常量池中生成"11"。如何理解:jdk6:创建了一个新的对象"11",也就有新的地址;jdk7:此时常
量池中并没有创建"11",而是创建了一个指向堆空间中 new String("11")的地址;
String s2 = "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 之前,接口中的方法都是抽象方法,省略了 public abstract。②java8 之后;接口中可以定义静态方法,静态方
法必须有方法体,普通方法没有方法体,需要被实现;
(2)抽象类
抽象类使用 abstract 修饰;
抽象类不能被实例化;
抽象类只能单继承;
抽象类中可以包含抽象方法和非抽象方法,非抽象方法需要有方法体;
如果一个类继承了抽象类,①如果实现了所有的抽象方法,子类可以不是抽象类;②如果没有实现所有的抽象方法,
子类仍然是抽象类。
14、java 中 IO 流分为几种?
(1)按流划分,可以分为输入流和输出流;
(2)按单位划分,可以分为字节流和字符流;
字节流:inputStream、outputStream;
字符流:reader、writer;
15、BIO、NIO、AIO 有什么区别?
(1)同步阻塞 BIO
一个连接一个线程。
JDK1.4 之前,建立网络连接的时候采用 BIO 模式,先在启动服务端 socket,然后启动客户端 socket,对服务端通信,客
户端发送请求后,先判断服务端是否有线程响应,如果没有则会一直等待或者遭到拒绝请求,如果有的话会等待请求
结束后才继续执行。
剩余81页未读,继续阅读
资源评论
小道士写程序
- 粉丝: 4932
- 资源: 24
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功