java高频面试题-基础篇

1,数据库中的事务是什么?

数据库事务(Database Transaction) ,是指 作为单个逻辑工作单元执行的一系列操作,
要么完全地执行,要么完全地不执行。事务处理可以确保除非事务性单元内的所有操作都成功完成,
否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,
可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,
必须满足所谓的 ACID(原子性、一致性、隔离性和持久性) 属性。
事务是数据库运行中的逻辑工作单位,由DBMS中的事务管理子系统负责事务的处理

数据库事务四大特性
原子性
事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。
通常,与某个事务关联的操作具有共同的目标,并且是相互依赖的。
如果系统只执行这些操作的一个子集,则可能会破坏事务的总体目标。
原子性消除了系统处理操作子集的可能性。

一致性
事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,
所有规则都必须应用于事务的修改,以保持所有数据的完整性。
事务结束时,所有的内部数据结构(如 B 树索引或双向链表)都必须是正确的。
某些维护一致性的责任由应用程序开发人员承担,
他们必须确保应用程序已强制所有已知的完整性约束。
例如,当开发用于转帐的应用程序时,应避免在转帐过程中任意移动小数点。

隔离性
由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。
事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,
要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。
这称为隔离性,因为它能够重新装载起始数据,并且重播一系列事务,
以使数据结束时的状态与原始事务执行的状态相同。
当事务可序列化时将获得最高的隔离级别。在此级别上,
从一组可并行执行的事务获得的结果与通过连续运行每个事务所获得的结果相同。
由于高度隔离会限制可并行执行的事务数,所以一些应用程序降低隔离级别以换取更大的吞吐量。

持久性
事务完成之后,它对于系统的影响是永久性的。该修改即使出现致命的系统故障也将一直保持。
事务有三种模型:
1. 隐式事务是指每一条数据操作语句都自动地成为一个事务,事务的开始是隐式的,
事务的结束有明确的标记。
2. 显式事务是指有显式的开始和结束标记的事务,每个事务都有显式的开始和结束标记。
3. 自动事务是系统自动默认的,开始和结束不用标记。

2,heap 和 stack 有什么区别?

java的内存分为两类,一类是栈内存(stack),一类是堆内存(heap)。
栈内存是指程序进入一个方法时,会为这个方法单独分配一块私属存储空间,
用于存储这个方法内部的局部变量,当这个方法结束时,分配给这个方法的栈会释放,
这个栈中的变量也将随之释放。

堆是与栈作用不同的内存,一般用于存放不在当前方法栈中的那些数据,
例如,使用new创建的对象都放在堆里,所以,它不会随方法的结束而消失。
方法中的局部变量使用final修饰后,放在堆中,而不是栈中。


3,Collection 和 Collections 的区别?

Collection 是一个集合接口,它提供了对集合对象进行基本操作的通用接口方法,
所有集合都是它的子类,比如 List、Set 等。

Collections 是一个包装类,包含了很多静态方法,不能被实例化,就像一个工具类,
比如提供的排序方法: Collections. sort(list)。

4,数据库三范式是什么?

第一范式:强调的是列的原子性,即数据库表的每一列都是不可分割的原子数据项。

第二范式:要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性。

第三范式:任何非主属性不依赖于其它非主属性。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值