Java高频面试题及答案整理(会持续更新)

简介: Java高频面试题及答案整理(会持续更新)

一:Java基础


1.Java支持多继承吗?


Java中类不支持多继承,只支持单继承,即一个类只有一个父类。但Java中的接口支持多继承,即一个子接口可以有多个父接口,接口的作用是用来拓展对象的功能,一个子接口继承多个父接口,说明子接口拓展了多个功能,当类拓展接口时,类就拓展了相应的功能。

2.


二:操作系统基础


1.进程和线程的区别是什么?


进程是执行着的应用程序,进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。而线程是进程内部的一个执行序列,一个进程可以有多个线程,线程又叫轻量级进程。


三:数据库基础


1.不考虑数据库的隔离性会发生什么?


脏读:

脏读是指一个事务在处理数据的过程中,读取到另一个未提交事务的数据。

例:


--原数据
--id    name
--1     lisi
--事务1
START TRANSACTION;
updata t_table set name = 'wangwu' where id = 1;    --此时事务2查询id = 1
ROLLBACK;
--事务2
select * from t_table where id = 1;        --查询到 id = 1, name = 'wangwu'

事务1并没有提交,name 还是 lisi,但是事务2却读到了 name = wangwu,这就是脏读。

2. 不可重复读:

不可重复读是指对于数据库中的某个数据,一个事务范围内的多次查询却返回了不同的结果,这是由于在查询过程中,数据被另外一个事务修改并提交了。

--原数据
--id    name
--1     lisi
--事务1
select * from t_table where id = 1;    -- 查询到 id = 1, name = list, 事务2在此时提交
select * from t_table where id = 1;    -- 查询到 id = 1, name = wangwu
--事务2
start transaction;
update t_table set name = 'wangwu' where id = 1;
COMMIT;

不可重复读和脏读的区别是,脏读读取到的是一个未提交的数据,而不可重复读读取到的是前一个事务提交的数据。

3. 幻读:

幻读是事务非独立执行时发生的一种现象。例如事务T1对一个表中所有的行的某个数据项做了从“1”修改为“2”的操作,这时事务T2又对这个表中插入了一行数据项,而这个数据项的数值还是为“1”并且提交给数据库。而操作事务T1的用户如果再查看刚刚修改的数据,会发现还有一行没有修改,其实这行是从事务T2中添加的,就好像产生幻觉一样,这就是发生了幻读。


幻读和不可重复读都是读取了另一条已经提交的事务(这点就脏读不同),所不同的是不可重复读查询的都是同一个数据项,而幻读针对的是一批数据整体(比如数据的个数)。


2.数据库的隔离级别?


读未提交(Read Uncommitted):

在该隔离级别中,所有事务都可以看到其他未提交事务的执行结果。读取未提交的数据(脏读)。

读已提交(Read Committed):

这是大多数数据库系统默认的隔离级别(但不是MySQL默认的)。它满足了隔离的简单定义:一个事务只能看见已经提交事务所做的改变。

可重复读(Repeable Read):

这是MySQL的默认事务隔离级别,它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行。

可串行化(Serializable):

这是最高的隔离级别,它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。

在MySQL中,实现了这四种隔离级别,分别有可能产生的问题如下图所示:


20210120162314504.png


相关文章
|
2天前
|
存储 安全 Java
[Java基础面试题] Map 接口相关
[Java基础面试题] Map 接口相关
|
2天前
|
Java
[Java 面试题] ArrayList篇
[Java 面试题] ArrayList篇
|
3天前
|
Java 调度
Java面试必考题之线程的生命周期,结合源码,透彻讲解!
Java面试必考题之线程的生命周期,结合源码,透彻讲解!
29 1
|
3天前
|
存储 安全 Java
每日一道Java面试题:说一说Java中的泛型?
今天的每日一道Java面试题聊的是Java中的泛型,泛型在面试的时候偶尔会被提及,频率不是特别高,但在日后的开发工作中,却是是个高频词汇,因此,我们有必要去认真的学习它。
15 0
|
3天前
|
Java 编译器
每日一道Java面试题:方法重载与方法重写,这把指定让你明明白白!
每日一道Java面试题:方法重载与方法重写,这把指定让你明明白白!
14 0
|
7天前
|
XML 缓存 Java
Java大厂面试题
Java大厂面试题
19 0
|
7天前
|
存储 安全 Java
Java大厂面试题
Java大厂面试题
14 0
|
7天前
|
存储 安全 Java
Java大厂面试题
Java大厂面试题
14 0
|
3天前
|
安全 Java 调度
Java线程:深入理解与实战应用
Java线程:深入理解与实战应用
22 0
|
1天前
|
消息中间件 缓存 NoSQL
Java多线程实战-CompletableFuture异步编程优化查询接口响应速度
Java多线程实战-CompletableFuture异步编程优化查询接口响应速度