面试题4
JAVA笔试题(40分钟)
选择题(每题5分,共40分)
1. 下面的程序运行结果是(false)
String str1 = “zhongan”;
String str2 = “zhong” + new String(“an”);
System.err.println(str1 == str2);
2. 下列说法正确的是(C)
A. class中的constructor不可省略
B. constructor必须与class同名,但方法不能与class同名
C. constructor在一个对象被new时执行
D. 一个class只能定义一个constructor
3. 下列程序的运行结果:(C)
public static void main(String args[]){
Thread t = new Thread(){
Public void run(){
Show();
}
};
t.run();
System.out.pint(“abc”);
}
static void show(){
System.out.println(“xyz”);
}
A. abcxyz B.xyzabc C.abcxyz和xyzabc D.都不输出
4.下面哪个流类属于面向字符的输入流(D)
A.BufferedWriter B.FileInputStream
C.ObjectInputStream D.InputStreamReader
5.不通过构造函数也能创建对象吗(A)
A. 是 B.否]
解析:Java创建对象的几种方式(重要):
(1) 用new语句创建对象,这是最常见的创建对象的方法。
(2) 运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。
(3) 调用对象的clone()方法。
(4) 运用反序列化手段,调用java.io.ObjectInputStream对象的 readObject()方法。
(1)和(2)都会明确的显式的调用构造函数 ;(3)是在内存上对已有对象的影印,所以不会调用构造函数 ;(4)是从文件中还原类的对象,也不会调用构造函数。
6.下面程序的运行结果是()
结果:
static A
static B
T'm A class
HelloA
T'm B class
HelloB
7. System.out.println(“5”+2):的输出结果应该是(A).
A52 B.7 C.2 D.5
8. 下面的方法,当输入为2的时候的返回值是多少?( D)
Public static int getValue(int i){
int result = 0;
switch (i) {
case 1:
Result = result +i;
case 2:
result = result +i *2;
case 3:
result = result + i *3;
}
return result;
}
A 0 B 2 C 4 D 10
一, 基础部分
1. 请在下面的表格中,使用√勾选不同可见性关键字对应的作用域
2.什么叫线程安全,什么叫线程不安全? ThreadLocal为什么能避免线程安全问题?
线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。 线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据。
TreadLocal实现线程安全的原理:
ThreadLocalMap是ThreadLocal类的一个静态内部类,它实现了键值对的设置和获取(对比Map对象来理解),每个线程中都有一个独立的ThreadLocalMap副本,它所存储的值,只能被当前线程读取和修改。ThreadLocal类通过操作每一个线程特有的ThreadLocalMap副本,从而实现了变量访问在不同线程中的隔离。因为每个线程的变量都是自己特有的,完全不会有并发错误。还有一点就是,ThreadLocalMap存储的键值对中的键是this对象指向的ThreadLocal对象,而值就是你所设置的对象了。
2. try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后?
finally中的内容会被执行,在return后执行。
下面代码输出什么?
public static void main(String[] args) {
System.out.println(a());
}
public static String a() {
String s = null;
try {
s = "b";
return s;
}catch (Exception e) {
return "e";
}finally {
return "f";
}
}
查看原文:http://www.coder306.cn/?p=157