1.以下哪项不属于java类加载过程?
A 生成java.lang.Class对象
B int类型对象成员变量赋予默认值
C 执行static块代码
D 类方法解析
2.volatile关键字的说法错误的是
A 能保证线程安全
B volatile关键字用在多线程同步中,可保证读取的可见性
C JVM保证从主内存加载到线程工作内存的值是最新的
D volatile能禁止进行指令重排序
3.Which statement is true?
void waitForSignal()
{
Object obj = new Object();
synchronized(Thread.currentThread())
{
obj.wait();
obj.notify();
}
}
A This code may throw an InterruptedException
B This code may throw an IllegalStateException
C This code may throw a TimeOutException afterten minutes
D This code will not compile unless”obj.wait()”is replaced with”(Thread)obj).wait()”
E Reversing the order of obj.wait() and obj.notify()may cause this method to complete normally
4.下面代码的输出是什么?
public class Base
{
private String baseName = "base";
public Base()
{
callName();
}
public void callName()
{
System. out. println(baseName);
}
static class Sub extends Base
{
private String baseName = "sub";
public void callName()
{
System. out. println (baseName) ;
}
}
public static void main(String[] args)
{
Base b = new Sub();
}
}
A null
B sub
C base
5.下面对JVM叙述不正确的是:
A JVM的全称是Java Virtual Machine
B JVM是一种计算机硬件技术,它是Java程序的运行平台
C JVM是在计算机硬件系统上用软件实现的一台假想机
D Java程序在执行时.JVM把Java字节码解释成机器码
数据库事务的4个特征是:原子性、一致性、(持续性)、隔离性。(一元持续隔离)
6.仅仅提交更新部分的数据而不是全部数据违反了数据库的什么规则?
A 原子性 B 一致性 C 隔离性 D 持久性
1.B.既然是对象成员,那么肯定是在实例化对象之后才有.在类加载的时候赋予初值的是类变量,而非对象成员
2.BCD都是volatile的作用,你好好斟酌吧
可见最新🈲重排
3
1.使用wait()必须要对异常进行捕获,用try catch包围或者抛出InterruptedException
2.记住调用wait和notify方法必须必须采用当前锁调用,即必须采用sychronized中的方法
这题选A
4.这是道阿里巴巴的题
1.new Sub();在创造派生类的过程中首先创建基类对象,然后才能创建派生类。
首先,需要明白类的加载顺序
(1) 父类静态代码块(包括静态初始化块,静态属性,但不包括静态方法)
(2) 子类静态代码块(包括静态初始化块,静态属性,但不包括静态方法)
(3) 父类非静态代码块( 包括非静态初始化块,非静态属性 )
(4) 父类构造函数
(5) 子类非静态代码块 (包括非静态初始化块,非静态属性 )
(6) 子类构造函数
其中:类中静态块按照声明顺序执行,并且(1)和(2)不需要调用new类实例的时候就执行了(意思就是在类加载到方法区的时候执行的)
2.其次,需要理解子类覆盖父类方法的问题,也就是方法重写实现多态问题。 Base b = new Sub();它为多态的一种表现形式,声明是Base,实现是Sub类, 理解为 b 编译时表现为Base类特性,运行时表现为Sub类特性。
当子类覆盖了父类的方法后,意思是父类的方法已经被重写,题中
父类初始化调用的方法为子类实现的方法,子类实现的方法中调用的baseName为子类中的私有属性。
由1.可知,此时只执行到步骤4.,子类非静态代码块和初始化步骤还没有到,子类中的baseName还没有被初始化。所以此时baseName为空。 所以为null。
5.B
6
答案:A 数据库事务要求数据库的某些数据是一个单位,必须全部完成更新才算更新完成,只更新一部分违反了原子性原则。 数据库事务的原则解释如下:
数据库事务是指作为单个逻辑工作单元执行的一系列操作,这些操作要么全做要么全不做,是一个不可分割的工作单位。
数据库事务的四大特性(简称ACID)是:
(1) 原子性(Atomicity) 事务的原子性指的是,事务中包含的程序作为数据库的逻辑工作单位,它所做的对数据修改操作要么全部执行,要么完全不执行。这种特性称为原子性。
例如银行取款事务分为2个步骤(1)存折减款(2)提取现金。不可能存折减款,却没有提取现金。2个步骤必须同时完成或者都不完成。
(2)一致性(Consistency)
事务的一致性指的是在一个事务执行之前和执行之后数据库都必须处于一致性状态。这种特性称为事务的一致性。假如数据库的状态满足所有的完整性约束,就说该数据库是一致的。
例如完整性约束a+b=10,一个事务改变了a,那么b也应随之改变。
(3)分离性(亦称独立性Isolation)
分离性指并发的事务是相互隔离的。即一个事务内部的操作及正在操作的数据必须封锁起来,不被其它企图进行修改的事务看到。假如并发交叉执行的事务没有任何控制,操纵相同的共享对象的多个并发事务的执行可能引起异常情况。
(4)持久性(Durability)
持久性意味着当系统或介质发生故障时,确保已提交事务的更新不能丢失。即一旦一个事务提交,DBMS保证它对数据库中数据的改变应该是永久性的,即对已提交事务的更新能恢复。持久性通过数据库备份和恢复来保证。
这篇博客主要探讨了Java类加载的过程,包括静态和非静态代码块的执行顺序,volatile关键字在多线程中的作用,以及wait()和notify()的使用规则。同时,还涉及了Java虚拟机(JVM)的性质和数据库事务的四个特征。在数据库事务中,违反原子性的例子和事务的ACID原则也进行了详细阐述。
392





