1、有关线程的叙述正确的是(B)
A、可以获得对任何对象的互斥锁定。
B、通过继承Thread类或实现Runnable接口,可以获得对类中方法的互斥锁定。
C、线程通过使用synchronized关键字可获得对象的互斥锁定。
D、线程的创建只能通过继承Thread类来实现。
解析:
互斥锁指的是只有一个线程可以访问该对象。
通过继承Thread类或实现Runnable接口,只是创建线程的两种方式。
2、以下程序的运行结果是:( C )
TreeSet<Integer> set = new TreeSet<Integer>();
TreeSet<Integer> subSet = new TreeSet<Integer>();
for(int i=
606
;i<
613
;i++){
if(i%
2
==
0
){
set.add(i);
}
}
subSet = (TreeSet)set.subSet(
608
,true,
611
,true);
set.add(
629
);
System.out.println(set+
" "
+subSet);
A、编译失败
B、发生运行时异常
C、[606, 608, 610, 612, 629] [608, 610]
D、[606, 608, 610, 612, 629] [608, 610,629]
解析:
去翻了API=======subset(form,true,to,true)是Treeset的非静态方法,该方法返回从form元素到to元素的一个set集合,两个boolean类型是确认是否包含边境值用的。
3、关于下面的程序Test.java说法正确的是( D )。
public class Test { static String x= "1" ; static int y= 1 ; public static void main(String args[]) { static int z= 2 ; System.out.println(x+y+z); } }
|
A、3
B、112
C、13
D、程序有编译错误
解析:
被static修饰的变量称为静态变量,静态变量属于整个类,而局部变量属于方法,只在该方法内有效,所以static不能修饰局部变量。
4、String s = new String("xyz");创建了几个StringObject? A
A、两个或一个都有可能
B、两个
C、一个
D、三个
解析:
1.String对象的两种创建方式:
第一种方式: String str1 = "aaa"; 是在常量池中获取对象("aaa" 属于字符串字面量,因此编译时期会在常量池中创建一个字符串对象),
第一种方式: String str1 = "aaa"; 是在常量池中获取对象("aaa" 属于字符串字面量,因此编译时期会在常量池中创建一个字符串对象),
第二种方式: String str2 = new String("aaa") ; 一共会创建两个字符串对象一个在堆中,一个在常量池中(前提是常量池中还没有 "aaa" 字符串对象)。
5、对 Map 的用法,正确的有: CD
A、new java.util.Map().put("key" , "value") ;
B、new java.util.SortedMap().put("key" , "value") ;
C、new java.util.HashMap().put( null , null ) ;
D、new java.util.TreeMap().put( 0 , null ) ;
解析:
选C、D。考察的是Map接口实现类的创建对象以及对象类型包含的方法。
A选项Map属于接口类型,不可以new的方式创建对象。所以A错误。
B选项SortedMap属于接口类型,不可以new的方式创建对象。所以B错误。
C选项HashMap基于哈希表实现Map接口的类,并允许null的值和null键。
D选项TreeMap通过红黑树实现Map接口的类,key不可以为null,会报NullPointerException异常,value可以为null。
6、下面代码的输出结果是什么? D
public
class
ZeroTest {
public
static
void
main(String[] args) {
try
{
int
i =
100
/
0
;
System.out.print(i);
}
catch
(Exception e){
System.out.print(
1
);
throw
new
RuntimeException();
}
finally
{
System.out.print(
2
);
}
System.out.print(
3
);
}
}
A、3
B、123
C、1
D、12
解析:
1、inti = 100/ 0; 会出现异常,会抛出异常,System.out.print(i)不会执行,
2、catch捕捉异常,继续执行System.out.print(1);
3、当执行 thrownewRuntimeException(); 又会抛出异常,这时,除了会执行finally中的代码,其他地方的代码都不会执行
7、下列不属于算法结构的是(C)
A、输入数据
B、处理数据
C、存储数据
D、输出结果
8、下面字段声明中哪一个在interface主体内是合法的? (B)
A、private final static int answer = 42;
B、public static int answer = 42;
C、final static answer = 42;
D、int answer;
解析:
在接口中,属性都是默认public static final修饰的,所以:
A(错误):不能用private修饰;
B(正确):在接口中,属性默认public static final,这三个关键字可以省略;
C(错误):没写属性的类型;
D(错误):final修饰的属性必须赋值;
9、Which method you define as the starting point of new thread in a class from which n thread can be execution?
A、public void start()
B、public void run()
C、public void int()
D、public static void main(String args[])
E、public void runnable()
解析:
要写一个线程类,可以继承Thread方法,然后override他的run()方法
另一种方法是实现Runable接口,即为实现run()方法。
A,start()是启动一个线程的方法
10、阅读如下代码。 请问,对语句行 test.hello(). 描述正确的有(A)
package NowCoder; class Test { public static void hello() { System.out.println( "hello" ); } } public class MyApplication { public static void main(String[] args) { // TODO Auto-generated method stub Test test= null ; test.hello(); } }
|
A、能编译通过,并正确运行
B、因为使用了未初始化的变量,所以不能编译通过
C、以错误的方式访问了静态方法
D、能编译通过,但因变量为null,不能正常运行
解析:
因为Test类的hello方法是静态的,所以是属于类的,当实例化该类的时候,静态会被优先加载而且只加载一次,所以不受实例化new Test();影响,只要是使用到了Test类,都会加载静态hello方法!
另外,在其他类的静态方法中也是可以调用公开的静态方法,此题hello方法是使用public修饰的所以在MyApplication中调用hello也是可以的。
总结:即使Test test=null;这里也会加载静态方法,所以test数据中包含Test类的初始化数据。(静态的,构造的,成员属性)
因此test.hello是会调用到hello方法的。
附上运行图:
11、下列哪些操作会使线程释放锁资源?
A、sleep()
B、wait()
C、join()
D、yield()
12、在使用super和this关键字时,以下描述错误的是(BCD)
A、在子类构造方法中使用super()显示调用父类的构造方法,super()必须写在子类构造方法的第一行,否则编译不通过
B、super()和this()不一定要放在构造方法内第一行
C、this()和super()可以同时出现在一个构造函数中
D、this()和super()可以在static环境中使用,包括static方法和static语句块
解析:
super和this都只能位于构造器的第一行,而且不能同时使用,这是因为会造成初始化两次,this用于调用重载的构造器,super用于调用父类被子类重写的方法。
13、当编译并运行下面程序时会发生什么结果(D )
public
class
Bground
extends
Thread{
public
static
void
main(String argv[]){
Bground b =
new
Bground();
b.run();
}
public
void
start(){
for
(
int
i=
0
;i<
10
;i++){
System.out.println(
"Value of i = "
+i);
}
}
}
A、编译错误,指明run方法没有定义
B、运行错误,只鞥呢run方法没有定义
C、编译通过并输出0到9
D、编译通过,但无输出
解析:
对于线程而言,start是让线程从new变成runnable。run方法才是执行体的入口。
但是在Thread中,run方法是个空方法,没有具体实现。
Bground继承了Thread,但是没有重写run方法,那么调用run方法肯定是无输出。
14、ArrayList list = new ArrayList(20);中的list扩充几次 A
A、0
B、1
C、2
D、3
解析:
Arraylist默认数组大小是10,扩容后的大小是扩容前的1.5倍。
本题在创建时直接分配了数组的大小,没有扩充。
15、以下 json 格式数据,错误的是 AC
A、{company:4399}
B、{"company":{"name":[4399,4399,4399]}}
C、{[4399,4399,4399]}
D、{"company":[4399,4399,4399]}
E、{"company":{"name":4399}}
解析:
A:错误 {company:4399} 首先,其为json对象。但json对象要求属性必须加双引号。
C:错误 {[4399,4399,4399]} 。使用 {} 则为json对象。json对象必须由一组有序的键值对组成。