1 下列代码的执行结果是:(B )
A.1和1
B.1和1.0
C.1.0和1
D.1.0和1.0
2,以下说法中正确的有?A
A.StringBuilder是 线程不安全的
B.Java类可以同时用 abstract和final声明
C.HashMap中,使用 get(key)==null可以 判断这个Hasmap是否包含这个key
D.volatile关键字不保证对变量操作的原子性
解释:
A: StringBuffer和stringBuilder的区别在于:StringBuffer是线程安全的而stringBuilder不是。
B:final的类不能被重写和继承,而abstract的类是抽象类,本身没有实现,只能通过子类来实现,也就是说必须被继承。所以说它们是没法同时做修饰符的。
C:如果java程序需要区分存的值是null和key不存在这两种情况,则需要使用:
if(map.containskey(key)){
//key 存在
}else{
//不存在
}
T t = map.get(key);
if(t==null){
//存的值是null
}
D:使用volatile关键字虽然能够使线程共享的变量在并发情况下完全可见,起到线程信息交互和通信的作用,但对于非原子操作,volatile并不能保证该操作的原子性
3、ArrayList list = new ArrayList(20);中的list扩充几次 A
A.0
B.1
C.2
D.3
解释:
ArrayList list=new ArrayList(); 这种是默认创建大小为10的数组,每次扩容大小为1.5倍
ArrayList list=new ArrayList(20); 这种是指定数组大小的创建,创建时直接分配其大小,没有扩充。
所以,扩充为0次
4:以下哪个I / O类可以附加或更新文件A
A.RandomAccessFile()
B.OutputStream()
C.DataOutputStream()
D.None of the above
A:RandomAccessFile,用来随机访问文件的类。它支持对随机访问文件的读取和写入。这里的随机并不意味着不可控制,而是意味着可以访问文件内容的任意位置
5,下面关于垃圾收集的说法正确的是D
A. 一旦一个对象成为垃圾,就立刻被收集掉。 不会随时动
B. 对象空间被收集掉之后,会执行该对象的finalize方法 之前
C. finalize方法和C++的析构函数是完全一回事情 析构可以主动,Finalize是被动的
D.一个对象成为垃圾是因为不再有引用指着它,但是线程并非如此
6、给定以下方法声明,调用执行mystery(1234)的输出结果?B
public void mystery (int x)
{
System.out.print(x % 10);
if ((x / 10) != 0)
{
mystery(x / 10);
}
System.out.print(x % 10);
}
A.1441
B.43211234
C.3443
D.12344321
7、下列关于构造函数说法正确的是( D)
A.构造函数的返回值为void
B.构造函数不可以被重载
C.构造函数可以是内联函数
D.构造函数可以没有参数
【解析】
构造函数的功能是对对象进行初始化,即对数据成员进行初始化。构造函数是类成员函数,它除了具有一般成员函数的特性之外,还具有一些特殊的性质:①构造函数的名字必须与类名相同;②构造函数不指定返回类型,它隐含有返回值,由系统内部使用;③构造函数可以有一个或多个参数,因此构造函数可以重载;④在创建对象时,系统会自动调用构造函数
8、以下关于Integer与int的区别错误的是D
A.int是java提供的8种原始数据类型之一
B.Integer是java为int提供的封装类
C.int的默认值为0
D.Integer的默认值为1
解析:包装类默认是NULL
9、关于windows下的多线程安全,选项中说法错误的是( B )
A.如果多线程的程序运行结果是可预期的,在功能逻辑上与单线程实现的程序运行结果一致,那么我们说这个程序是多线程安全的。
B.只要使用了多线程CRT(multithreaded CRT)进行编译链接,那么CreateThread启动的线程就可以随便使用CRT函数,而不用担多线程安全问题。
C.如果在线程函数中不直接或者间接使用crt函数,那么使用CreateThread和使用_beginthreadex启动 的线程在thread-safe方面区别不大。
D.在线程函数中,尽量避免使用crt函数,如果一定要用,尽量使用_beginthreadex来启动线程
10、AccessViolationException异常触发后,下列程序的输出结果为( )
static void Main(string[] args)
{
try
{
throw new AccessViolationException();
Console.WriteLine(“error1”);
}
catch (Exception e)
{
Console.WriteLine(“error2”);
}
Console.WriteLine(“error3”);
}
A.error2
error3
B.error3
C.error2
D.error1
解析:
链接:
(1)
1.若catch(){}块中,如果有throw 语句,则,try{}catch(){} finally{}块之外的代码不执行;否则,执行。
2.try{}中有异常,则异常下面代码不执行。
3.finally{}中代码必执行。
(2)
try{ //正常执行的代码 }catch (Exception e){ //出错后执行的代码 }finally{ //无论正常执行还是出错,之后都会执行的代码 } //跟上面try catch无关的代码 正常执行的代码如果出现异常,就不会执行出现异常语句后面的所有正常代码.
11(多选)以下哪些方法是Object类中的方法 ABCD
A.clone()
B.toString()
C.wait()
D.finalize()
12、(多选)以下哪种方式实现的单例是线程安全的 ABCD
A.枚举
B.静态内部类
C.双检锁模式
D.饿汉式
13,下面关于静态方法说明正确的是B
A.在静态方法中可用this来调用本类的类方法
B.在静态方法中调用本类的静态方法时可直接调用
C.在静态方法中只能调用本类中的静态方法
D.在静态方法中绝对不能调用实例方法
14(多选)下面有关java threadlocal说法正确的有?ABCD
A.ThreadLocal存放的值是线程封闭,线程间互斥的,主要用于线程内共享一些数据,避免通过参数来传递
B.从线程的角度看,每个线程都保持一个对其线程局部变量副本的隐式引用,只要线程是活动的并且 ThreadLocal 实例是可访问的;在线程消失之后,其线程局部实例的所有副本都会被垃圾回收
C.在Thread类中有一个Map,用于存储每一个线程的变量的副本
D.对于多线程资源共享的问题,同步机制采用了“以时间换空间”的方式,而ThreadLocal采用了“以空间换时间”的方式
15,(多选)判断一块内存空间是否符合垃圾收集器收集的标准有哪些?ABD
A.给对象赋予了空值null,以下再没有调用过
B.对象重新分配了内存空间
C.给对象赋予了空值null
D.给对象赋予了新值
16,在Java中,一个类可同时定义许多同名的方法,这些方法的形式参数个数、类型或顺序各不相同,传回的值也可以不相同。这种面向对象程序的特性称为C
A.隐藏
B.覆盖
C.重载
D.Java不支持此特性
17、(多选)以下程序执行后,错误的结果是(ABC)
public class Test {
private String name = “abc”;
public static void main(String[] args) {
Test test = new Test();
Test testB = new Test();
String result = test.equals(testB) + “,”;
result += test.name.equals(testB.name) + “,”;
result += test.name == testB.name;
System.out.println(result);
}
}
A.true,true,true
B.true,false,false
C.false,true,false
D.false,true,true
18,关于protected 修饰的成员变量,以下说法正确的是A
A.可以被该类自身、与它在同一个包中的其它类、在其它包中的该类的子类所访问
B.可以被该类自身、与它在同一个包中的其它类、在其它包中的该类的子类所访问
C.只能被该类自身所访问
D.只能被同一个包中的类访问
19:、抽象类和接口的区别,一下说法错误的是 D
A.接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的。
B.abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface,实现多重继承。接口还有标识(里面没有任何方法,如Remote接口)和数据共享(里面的变量全是常量)的作用。
C.在abstract class 中可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是 static final的,不过在 interface中一般不定义数据成员),所有的成员方法默认都是 public abstract 类型的
D.abstract class和interface所反映出的设计理念不同。其实abstract class表示的是"has-a"关系,interface表示的是"is-a"关系。
20,(多选)下面哪些具体实现类可以用于存储键,值对,并且方法调用提供了基本的多线程安全支持:(A E )
A.java.util.ConcurrentHashMap
B.java.util.Map
C.java.util.TreeMap
D.java.util.SortMap
E.java.util.Hashtable
F.java.util.HashMap
21:(多选)下列关于final、finally、finalize说法正确的是( ABD)
A.final可以用来修饰类、方法、变量
B.finally是java保证重点代码一定要被执行的一种机制
C.变量被final修饰后不能再指向其他对象,但可以重写
D.finalize设计的目的是保证对象在被垃圾收集前完成特定资源的回收
22、jdbc的事务必须在一个数据库连接上完成。编程时必须去掉数据库的自动提交功能。当成功后调用commit,当失败后调用rollback。判断这句话正确与否A
A.T
B.F
23:在Java中,什么是Garbage Collection?()C
A.自动删除在程序中导入但未使用的任何包
B.JVM检查任何Java程序的输出并删除任何没有意义的东西
C.当对象的所有引用都消失后,对象使用的内存将自动回收
D.操作系统定期删除系统上可用的所有java文件
24、(多选)关于equals和hashCode描述正确的是 (ABC)
A.两个obj,如果equals()相等,hashCode()一定相等(符合代码规范的情况下)
B.两个obj,如果hashCode()相等,equals()不一定相等
C.两个不同的obj, hashCode()可能相等
D.其他都不对
25、(多选)关于java中的数组,下面的一些描述,哪些描述是准确的:(A,C,E)
A.数组是一个对象,不同类型的数组具有不同的类
B.数组长度是可以动态调整的
C.数组是一个连续的存储结构
D.一个固定长度的数组可类似这样定义:int array[100]
E.两个数组用equals方法比较时,会逐个便利其中的元素,对每个元素进行比较
F.可以二维数组,且可以有多维数组,都是在java中合法的。
26、以下哪种JAVA的变量表达式使得变量a和变量b具有相同的内存引用地址(B)
A.String a = “hello”; String b = “hello”;
B.Integer a; Integer b = a;
C.int a = 1; Integer b = new Integer(1);
D.int a = 1; Integer b = 1;
27、(多选)在Java中,关于HashMap类的描述,以下正确的是 (ACD)
A.HashMap使用键/值得形式保存数据
B.HashMap 能够保证其中元素的顺序
C.HashMap允许将null用作键
D.HashMap允许将null用作值
28:多选) 对Collection和Collections描述正确的是BD
A.Collection是java.util下的类,它包含有各种有关集合操作的静态方法
B.Collection是java.util下的接口,它是各种集合结构的父接口
C.Collections是java.util下的接口,它是各种集合结构的父接口
Collections是java.util下的类,它包含有各种有关集合操作的静态方法
29:.局部内部类可以用哪些修饰符修饰?CD
A.public
B.private
C.abstract
D.final
30:(多选)下面有关forward和redirect的描述,正确的是(B,C,D) ?
A.forward是服务器将控制权转交给另外一个内部服务器对象,由新的对象来全权负责响应用户的请求
B.执行forward时,浏览器不知道服务器发送的内容是从何处来,浏览器地址栏中还是原来的地址
C.执行redirect时,服务器端告诉浏览器重新去请求地址
D.forward是内部重定向,redirect是外部重定向
E.redirect默认将产生301 Permanently moved的HTTP响应
31:.ArrayLists和LinkedList的区别,下述说法正确的有?ABCD
A.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
B.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
C.对于新增和删除操作add和remove,LinkedList比较占优势,因为ArrayList要移动数据。
D.ArrayList的空间浪费主要体现在在list列表的结尾预留一定的容量空间,而LinkedList的空间花费则体现在它的每一个元素都需要消耗相当的空间。
32:关于访问权限说法正确的是 ?B
A.外部类前面可以修饰public,protected和private
B.成员内部类前面可以修饰public,protected和private
C.局部内部类前面可以修饰public,protected和private
D.以上说法都不正确
34:下面说法正确的是C
A.构造函数先调用自己的构造函数然后初始化成员变量最后调用基类构造函数
B.构造函数先调用基类构造函数然后调用自己的构造函数最后初始化成员变量
C.构造函数先调用基类构造函数然后初始化成员变量最后调用自己的构造函数
D.构造函数先调用自己的构造函数然后调用基类构造函数最后初始化成员变量
35:Which of the following can be applied to constructors:E
A.final
B.static
C.synchronized
D.native
E.None of these.
36,下面哪个语句是创建数组的正确语句?( ABDE)
A.float f[][] = new float[6][6];
B.float []f[] = new float[6][6];
C.float f[][] = new float[][6];
D.float [][]f = new float[6][6];
E.float [][]f = new float[6][];
37,基本的Java语言函数存储在以下哪个java包中?(A)
A.java.lang
B.java.io
C.java.net
D.java.util
11,Java 的屏幕坐标是以像素为单位,容器的左下角被确定为坐标的起点。B
A.正确
B.错误