1 . 谈谈Java关键字transient和volatile。
transient
把一个对象的表示转化为字节流的过程称为串行化serialization,从字节流中把对象重建出来称为反串行化deserialization,transient 为不应被串行化的数据提供了一个语言级的标记数据方法。
对象的序列化(serialization)非常影响I/O的性能,尽量少用。对不需序列化的类的域使用transient关键字,以减少序列化的数据量。
参考:Serializable( 中文, 英文)
Java Serialization Example
Serializable java序列化可能带来的问题
空接口的使用( 给JAVA设计开发新手的一些建议和意见)
volatile
在Java中设置变量值的操作,除了long和double类型的变量外都是原子操作,也就是说,对于变量值的简单读写操作没有必要进行同步。这在JVM 1.2之前,Java的内存模型实现总是从主存读取变量,是不需要进行特别的注意的。而随着JVM的成熟和优化,现在在多线程环境下volatile关键字的使用变得非常重要。在当前的Java内存模型下,线程可以把变量保存在本地内存(比如机器的寄存器)中,而不是直接在主存中进行读写。这就可能造成一个线程在主存中修改了一个变量的值,而另外一个线程还继续使用它在寄存器中的变量值的拷贝,造成数据的不一致。要解决这个问题,只需要像在本程序中的这样,把该变量声明为volatile(不稳定的)即可,这就指示JVM,这个变量是不稳定的,每次使用它都到主存中进行读取。一般说来,多任务环境下各任务间共享的标志都应该加volatile修饰。( 来源和 其他参考 )
2. 一个关于swing的问题,忘记了,好像是组件之间如何传递消息,或者是窗口之间如何传递消息。
3. 一道关于Web Service的问题。 大意是一台机器上的程序使用VC dom写的,另一台机器提供的是J2EE服务,前者想使用后者的服务,该怎么做?(大意如此,我至今也不知道怎么做)
4. 写出下面程序的执行结果
class Base {
void showLine() {
System.out.println ("This method is in the base class.");
}
}
class Test extends Base {
void showLine() {
System.out.println("This method is in the test class.");
}
public static void main(String args[]) {
Base b = new Base();
Test t = new Test();
b.showLine();
t.showLine();
b = t;
b.showLine();
}
}
答:This method is in the base class.
This method is in the test class.
This method is in the test class.
5. 一个职工的个人信息包含:姓名,年龄,头衔等,其中头衔可以有若干也可以没有。 设计一个职工类,并设计相关方法,方法体请留空。
(我觉得主要是考一下对类的域的访问权限的问题,其他也没什么。考察类的合理封装。)
transient
把一个对象的表示转化为字节流的过程称为串行化serialization,从字节流中把对象重建出来称为反串行化deserialization,transient 为不应被串行化的数据提供了一个语言级的标记数据方法。
对象的序列化(serialization)非常影响I/O的性能,尽量少用。对不需序列化的类的域使用transient关键字,以减少序列化的数据量。
参考:Serializable( 中文, 英文)
Java Serialization Example
Serializable java序列化可能带来的问题
空接口的使用( 给JAVA设计开发新手的一些建议和意见)
volatile
在Java中设置变量值的操作,除了long和double类型的变量外都是原子操作,也就是说,对于变量值的简单读写操作没有必要进行同步。这在JVM 1.2之前,Java的内存模型实现总是从主存读取变量,是不需要进行特别的注意的。而随着JVM的成熟和优化,现在在多线程环境下volatile关键字的使用变得非常重要。在当前的Java内存模型下,线程可以把变量保存在本地内存(比如机器的寄存器)中,而不是直接在主存中进行读写。这就可能造成一个线程在主存中修改了一个变量的值,而另外一个线程还继续使用它在寄存器中的变量值的拷贝,造成数据的不一致。要解决这个问题,只需要像在本程序中的这样,把该变量声明为volatile(不稳定的)即可,这就指示JVM,这个变量是不稳定的,每次使用它都到主存中进行读取。一般说来,多任务环境下各任务间共享的标志都应该加volatile修饰。( 来源和 其他参考 )
2. 一个关于swing的问题,忘记了,好像是组件之间如何传递消息,或者是窗口之间如何传递消息。
3. 一道关于Web Service的问题。 大意是一台机器上的程序使用VC dom写的,另一台机器提供的是J2EE服务,前者想使用后者的服务,该怎么做?(大意如此,我至今也不知道怎么做)
4. 写出下面程序的执行结果
class Base {
void showLine() {
System.out.println ("This method is in the base class.");
}
}
class Test extends Base {
void showLine() {
System.out.println("This method is in the test class.");
}
public static void main(String args[]) {
Base b = new Base();
Test t = new Test();
b.showLine();
t.showLine();
b = t;
b.showLine();
}
}
答:This method is in the base class.
This method is in the test class.
This method is in the test class.
5. 一个职工的个人信息包含:姓名,年龄,头衔等,其中头衔可以有若干也可以没有。 设计一个职工类,并设计相关方法,方法体请留空。
(我觉得主要是考一下对类的域的访问权限的问题,其他也没什么。考察类的合理封装。)