JAVA基础面试题2022

JAVA的事务

2.1、java事务有几种

       三种:JDBC事务、JTA(Java Transaction API)事务、容器事务。

2.2、java事务简述

       事务(TRANSACTION是作为单个逻辑工作单元执行的一系列SQL操作,这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行。如果任何一个SQL操作失败,那么整个操作就都失败,所有操作都会回滚到操作前状态,或者是上一个节点。

2.2.1、java事务和数据库事务的关联

一个Java应用系统,如果要操作数据库,则通过JDBC来实现的。增加、修改、删除都是通过相应方法间接来实现的,事务的控制也相应转移到Java程序代码中。因此,数据库操作的事务习惯上就称为Java事务。

2.3、Java三种事务的意义

       1、JDBC事务

JDBC 事务是用 Connection 对象控制的。JDBC Connection 接口( java.sql.Connection )提供了两种事务模式:自动提交和手动提交。

使用 JDBC 事务界定时,可以将多个 SQL 语句结合到一个事务中。

特点:事务的范围局限于一个数据库连接。一个 JDBC 事务不能跨越多个数据库。

2、JTA(Java Transaction API)事务

允许程序执行分布式事务处理,使用此事务,需要一个实现javax.sql.XADataSource、javax.sql.XAConnection和javax.sql.XAResource接口的JDBC驱动程序,一个XADataSource对象就是一个XAConnection对象的工厂,XAConnections是参与JTA事务的JDBC连接,对于XA的连接不能调用java.sql.Connection.commit()或者java.sql.Connection.rollback()

而是应该调用UserTransaction.begin()、UserTransaction.commit()和

UserTransaction.rollback()。

特点:可以跨越多个数据库,功能强大,使用复杂

3、容器事务

容器事务主要是J2EE应用服务器提供的,容器事务大多是基于JTA完成,这是一个基于JNDI的,相当复杂的API实现。

2.3.1、JAVA三种事务的差异

       1、JDBC事务控制的局限性是在一个数据库连接内,但其使用简单。

2、JTA事务的功能强大,事务可以跨越多个数据库或多个DAO,使用也比较复杂。

3、容器事务,主要指的是J2EE应用服务器提供的事务管理,局限于EJB应用使用。

4、总结,Java事务控制是构建应用不可缺少的一部分,合理选择使用何种事务对整个应用系统来说至关重要。一般说来,在单个JDBC连接的情况下可以选择JDBC事务,在跨多个连接或者数据库情况下,需要选择使用JTA事务,如果用到了EJB,则可以考虑使用EJB容器事务

2.4、Java事务的特性

                                          原子性、隔离性、一致性、持久性

  1. 原子性(Atomicity):
    事务是一个完整的操作。事务的各步操作是不可分的(原子的);要么都执行,要么都不执行。
  2. 一致性(Consistency):
    当事务执行失败时,所有被该事务影响的数据都应该恢复到事务执行前的状态。
  3. 隔离性(Isolation):
    对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方式依赖 于或影响其他事务。
  4. 持久性(Durability)
    事务完成后,它对数据库的修改被永久保持,事务日志能够保持事务的持久性。

2.5、Java事务的隔离级别

       (default)默认、(read_uncommitted)读未提交、(read_committed)读已提交、(repeatable_read)可重复读      

       串行话(Serializable:可避免脏读、不可重复读、幻读的发生。

可重复读(Repeatable read:可避免脏读、不可重复读的发生。

读已提交(Read committed:可避免脏读的发生。

读未提交(Read uncommitted:最低级别,任何情况都无法保证。

三、JAVA中类的继承和多态

3.1、类的继承

       继承是一个的关系,这个类既是一个新的类,也是其所继承的那个类

       java中使用extends关键字来表示继承关系时候,如果没有明确指出要继承的类,就总是隐式地从根类Object进行继承!也就是说所有类都是Object类的子类!!!!

注意事项:

       1.基类不含默认无参构造函数,派生类必须显式调用基类的有参构造函数。

2.Java 中的继承来说是单继承,即一个类最多只能显示地继承于一个父类,但是一个类可以拥有多个子类。

3.派生类并不是基类的子集,而是比基类包含更多的信息和方法。

4.父类的构造方法以及父类的private的变量与方法是不会被继承的!

3.2、多态

       面向对象时有三大特性:封装性、继承性、多态性。

       多态 - - -

extends继承或者implements

实现,无论是类与类之间的继承、类与接口之间的实现还是接口与接口间的继承,反正总会出现上下的层次关系,这种关系的产生就是多态性出现的前提.多态性的体现,其实就是一句话,父类引用指向子类对象

封装 - - -

使用权限修饰符

使用private作用在属性上,关闭直接访问的入口

使用public作用在方法上,提供调用的入口

3.3、重写和重载

重载:参数列表不同,方法名都相同。
重写:1.在具有继承关系的不同类里面。2.参数列表相同,方法名也相同。

3.4、多态的必要条件

       Java实现多态的三个必要条件:继承、重写、向上转型(基类的引用可以引用派生类的对象)!·

四、抽象类和接口

4.1、抽象类和接口的区别

抽象类  ·:
构造方法:有构造方法,用于子类实例化使用。
成员变量:可以是变量,也可以是常量。
成员方法:可以是抽象的,也可以是非抽象的。

接口

构造方法:没有构造方法

成员变量:只能是常量。默认修饰符:public static final

成员方法:jdk1.7只能是抽象的。默认修饰符:public abstract (推荐:默认修饰符请自己永远手动给出)

jdk1.8可以写以default和static开头的具体方法

类和接口的关系区别
类与类:
继承关系,只能单继承。可以多层继承。

类与接口:
实现关系,可以单实现,也可以多实现。
类还可以在继承一个类的同时实现多个接口。

接口与接口:
继承关系,可以单继承,也可以多继承。

4.2、普通类和抽象类的区别

普通类中不可含有抽象方法,可以被实例化

抽象类:则抽象类中所有的方法自动被认为是抽象方法,没有实现过程,不可被实例化

抽象类的子类,除非也是抽象类,否则必须实现该抽象类声明的方法

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GG-0408

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值