1.关于异常处理机制的叙述正确的是()
正确答案: C 你的答案: A (错误)
A:catch部分捕捉到异常情况时,才会执行finally部分
B:当try区段的程序发生异常时,才会执行finally部分
C:当try区段不论程序是否发生错误及捕捉到异常情况,都会执行finally部分
D:以上都是
解析:在Java语言的异常处理中,finally块的作用就是为了保证无论出现什么情况,finally块里的代码一定会执行。
由于程序执行return就意味着结束了对当前函数的调用并跳出这个函数体,因此任何语句执行都要放在return前执行(除非碰到exit函数),因此finally块里面的函数也是在return前执行的。
如果try-finally或者catch-finally中都有return语句,那么finally中的return语句会覆盖别处的,最终返回到调用者那里的是finally中的return值。
2.下列InputStream类中哪个方法可以用于关闭流?
正确答案: B 你的答案: B (正确)
A:skip()
B:close()
C:mark()
D:reset()
解析:close用于关闭流
3.以下关于继承的叙述正确的是
正确答案: A 你的答案: D (错误)
A:在Java中类只允许单一继承
B:在Java中一个类不能同时继承一个类和实现一个接口
C:在Java中接口只允许单一继承
D:在Java中一个类只能实现一个接口
解析:类支持单继承,接口支持多继承
4.下面是findSum(int m.int n)方法的定义,方法调用findSum(1,5)的返回结果是( )
int findSum(int m, int n){
int sum=0;
for(int i=m;i<=n;i++){
sum+=i;
}
return sum;
}
正确答案: D 你的答案: D (正确)
A:1
B:5
C:10
D:15
解析:for(i=1;i<=5;i++) 这样理解就好了,sum是1+2+3+4+5
5.JAVA属于( )。
正确答案: D 你的答案: D (正确)
A:操作系统
B:办公软件
C:数据库系统
D:计算机语言
解析:JAVA属于操作系统
6.关于类的叙述正确的是()。
正确答案: B 你的答案: D (错误)
A:在类中定义的变量称为类的成员变量,在别的类中可以直接使用
B:局部变量的作用范围仅仅在定义它的方法内,或者是在定义它的控制流块中
C:使用别的类的方法仅仅需要引用方法的名字即可
D:只要没有定义不带参数的构造函数,JVM都会为类生成一个默认构造函数
解析:类只定义了无参构造方法,jvm当然不会为它生成默认的构造方法。
7.下面有关java classloader说法错误的是?
正确答案: C 你的答案: C (正确)
A:Java默认提供的三个ClassLoader是BootStrap ClassLoader,Extension ClassLoader,App ClassLoader
B:ClassLoader使用的是双亲委托模型来搜索类的
C:JVM在判定两个class是否相同时,只用判断类名相同即可,和类加载器无关
D:ClassLoader就是用来动态加载class文件到内存当中用的
解析:比较两个类是否相等,只有这两个类是由同一个类加载器加载才有意义。否则,即使这两个类是来源于同一个Class文件,只要加载它们的类加载器不同,那么这两个类必定不相等。
8.java中用()字指明继承关系.用()关键字指明对接口的实现。
正确答案: B 你的答案: B (正确)
A:implements extends
B:extends implements
C:extend implement
D:implement extend
9.Which of the following statements are valid array declaration?
(A) int number();
(B) float average[];
© double[] marks;
(D) counter int[];
正确答案: A 你的答案: D (错误)
(B) & ©
(A)
(A) & ©
(D)
解析:invalid 无效的 valid 有效的
10.java语言中的数组元素下标总是从0开始,下标可以是整数或整型表达式。()
正确答案: A 你的答案: B (错误)
A:正确
B:错误
解析:例如平时有这样的用法
for(int i=0;i<10;i++){
a[i+1]=a[i]
}
这个i+1就是整数型表达式 或者a[5+3]就是a[8]
11.下列关于修饰符混用的说法,错误的是( )
正确答案: D 你的答案: D (正确)
A:abstract不能与final并列修饰同一个类
B:abstract 类中不建议有private的成员
C:abstract 方法必须在abstract类或接口中
D:static方法中能直接处理非static的属性
解析:不管是静态方法还是静态成员,都是类级别存在的,也就是说随着类的加载而加载,优先于对象的存在,而非静态成员和方法是对象级别的存在,所以在静态方法中调用非静态的成员或方法(此时还不存在对象),是不可能的,但是反过来是可以的:非静态中调用静态。于是也就有静态方法中不能使用this和super关键字。
12.有以下代码:
class A{
public A(String str){
}
}
public class Test{
public static void main(String[] args) {
A classa=new A(“he”);
A classb=new A(“he”);
System.out.println(classaclassb);
}
}
请问输出的结果是:
正确答案: A 你的答案: C (错误)
A:false
B:true
C:报错
D:以上选项都不正确
解析:答案为 false 因为 表示的是否指向的是同一个内存。调用的是t.run();方法,之间调用run方法就是普通的方法调用而已,所以肯定是先执行pong()再执行System.out.print(“ping”);
13.下列程序的运行结果
public static void main(String args[]) {
Thread t = new Thread() {
public void run() {
pong();
}
};
t.run();
System.out.print(“ping”);
}
static void pong() {
System.out.print(“pong”);
}
正确答案: B 你的答案: B (正确)
pingpong
pongping
pingpong和pongping都有可能
都不输出
解析:如果第7行换成t.start()方法,答案就应该选择c,因为t.start()后,线程变为就绪状态,什么时候开始执行时不确定的,可能是主程序先继续执行,也可能是新线程先执行。
14.For which of these values of a
I. 4
II.6
III. 8
is the expression
(a != 3 && a != 4 && a != 5 && a != 6)
false?
正确答案: D 你的答案: C (错误)
I only
II only
III only
I and II only
I, II, and III
解析:&& 运算时出现false时
15.下面关于Java package的描述,哪个是正确的:()
I. 包不提供将所有类名分区为更易管理的块的机制.
II. 包提供可见性控制机制.
III. 包的一个重要属性是包内定义的所有类都可以通过该包外的代码访问.
IV. 声明为包的一部分的类的.class文件可以存储在多个目录中.
正确答案: B 你的答案: D (错误)
只有I
只有II
只有III
只有IV
解析:包的作用:
1、把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。
2、如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。
3、包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。
Java 使用包(package)这种机制是为了防止命名冲突,访问控制,提供搜索和定位类(class)、接口、枚举(enumerations)和注释(annotation)等。
16.public class CharToString {
public static void main(String[] args)
{
char myChar = ‘g’;
String myStr = Character.toString(myChar);
System.out.println("String is: "+myStr);
myStr = String.valueOf(myChar);
System.out.println("String is: "+myStr);
}
}
此代码片段输出正确的值是()
正确答案: A 你的答案: B (错误)
String is: g
String is: g
String is: 103
String is: g
String is: g
String is: 103
String is: 103
String is: 103
17.下面关于Spring的说法中错误的是()
正确答案: D 你的答案: A (错误)
Spring是一系列轻量级Java EE框架的集合
Spring中包含一个“依赖注入”模式的实现
使用Spring可以实现声明式事务
Spring提供了AOP方式的日志系统
解析:Spring 框架是一个分层架构,由 7 个定义良好的模块组成。
核心容器,Spring上下文,Spring AOP, Spring DAO, Spring ORM, Spring Web, Spring MVC。
18.变量a是一个64位有符号的整数,初始值用16进制表示为:0x7FFFFFFFFFFFFFFF;变量b是一个64位有符号的整数,初始值用16进制表示为:0x8000000000000000。则a+b的结果用10进制表示为多少?
正确答案: B 你的答案: C (错误)
1
-1
263+262+…+22+21+2^0
–(263+262+…+22+21+2^0)
解析:a + b = 111……111(64位1)
取反:100……000(1位1,后面63位0)
加一:100……00(中间62位0)
10进制:-1。
19.Which statement is true for the class java.util.ArrayList?
正确答案: A 你的答案: C (错误)
The elements in the collection are ordered.
The collection is guaranteed to be immutable.
The elements in the collection are guaranteed to be unique.
The elements in the collection are accessed using a unique key.
The elements in the collections are guaranteed to be synchronized.
解析:元素在集合中有序,指的是元素插入过程中记录了元素的插入顺序。
20.下面代码的输出是什么?
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 你的答案: B (错误)
null
sub
base
解析:执行 Base b = new Sub();时由于多态 b编译时表现为Base类特性,运行时表现为Sub类特性,
Base b = new Sub();不管是哪种状态都会调用Base构造器执行 callName()方法;
执行方法时,由于多台表现为子类特性,所以会先在子类是否有 callName();
而此时子类尚未初始化(执行完父类构造器后才会开始执行子类),
如果有就执行,没有再去父类寻找.
如果把父类 callName()改为 callName2(),则会输出base
21.下面哪些语法结构是正确的?
正确答案: A C 你的答案: A (错误)
public class A extends B implements C
public class A implements A B
public class A implements B,C,D
public implements B
解析:继承只能有一个,接口可以有多个
22.关于以下代码的说明,正确的是( )
1. class StaticStuff
2. {
3. static int x=10;
4. static { x+=5;}
5. public static void main(String args[ ])
6. {
7. System.out.println(“x=” + x);
8. }
9. static { x/=3;}
10. }
正确答案: C 你的答案: A (错误)
4行与9行不能通过编译,因为缺少方法名和返回类型
9行不能通过编译,因为只能有一个静态初始化器
编译通过,执行结果为:x=5
编译通过,执行结果为:x=3
解析:类静态成员变量 父类静态代码块 子类静态成员变量 子类静态代码块 父类非静态成员变量,父类非静态代码块,父类构造函数,子类非静态成员变量,子类非静态代码块,子类构造函数
23.有关线程的哪些叙述是对的()
正确答案: B C D 你的答案: C (错误)
一旦一个线程被创建,它就立即开始运行。
使用start()方法可以使一个线程成为可运行的,但是它不一定立即开始运行。
当一个线程因为抢先机制而停止运行,它可能被放在可运行队列的前面。
一个线程可能因为不同的原因停止并进入就绪状态。
解析:线程被创建后不可能立即开始运行。不同优先级的线程间是抢先式的,同级线程间是轮转式的。 即使线程因为抢先而停止也不一定就进入可运行队列的前面。而同级线程是轮换式的,它的运行可能就是因为轮换,而它因抢占而停止后只能在轮换队列中排队而不能排在前面。
24.以下哪些方法是Object类中的方法
正确答案: A B C D 你的答案: B (错误)
clone()
toString()
wait()
finalize()
25.以下关于final关键字说法错误的是()
正确答案: A C 你的答案: C (错误)
final是java中的修饰符,可以修饰类、接口、抽象类、方法和属性
final修饰的类不能被继承
final修饰的方法不能被重载
final修饰的变量不允许被再次赋值
解析:
1.final修饰变量,则等同于常量
2.final修饰方法中的参数,称为最终参数。
3.final修饰类,则类不能被继承
4.final修饰方法,则方法不能被重写。
5. final 不能修饰抽象类
6.final修饰的方法可以被重载 但不能被重写
26.Consider the following code:
Integer s=new Integer(9);
Integer t=new Integer(9);
Long u=new Long(9);
Which test would return true?
正确答案: C D E 你的答案: B E (错误)
(su)
(st)
(s.equals(t))
(s.equals(9))
(s.equals(new Integer(9))
解析:因为 s 是 Integer 类型, u 是 Long 类型,两个不同类型的引用不能进行 == 比较
27.关于下面这段Java程序,哪些描述是正确的:( )
public class ThreadTest extends Thread {
public void run() {
System.out.println(“In run”);
yield();
System.out.println(“Leaving run”);
}
public static void main(String []argv) {
(new ThreadTest()).start();
}
}
正确答案: C 你的答案: C E (错误)
程序运行输出只有In run
程序运行输出只有Leaving run
程序运行输出先有In run后有Leaving run
程序运行输出先有Leaving run后有In run
程序没有任何输出就退出了
程序将被挂起,只能强制退出
解析yield()从未导致线程转到等待/睡眠/阻塞状态。在大多数情况下,yield()将导致线程从运行状态转到可运行状态,但有可能没有效果:
28.public class NameList
{
private List names = new ArrayList();
public synchronized void add(String name)
{
names.add(name);
}
public synchronized void printAll() {
for (int i = 0; i < names.size(); i++)
{
System.out.print(names.get(i) + ””);
}
}
public static void main(String[]args)
{
final NameList sl = new NameList();
for (int i = 0; i < 2; i++)
{
new Thread()
{
public void run()
{
sl.add(“A”);
sl.add(“B”);
sl.add(“C”);
sl.printAll();
}
} .start();
}
}
}
Which two statements are true if this class is compiled and run?
正确答案: E G 你的答案: D E (错误)
An exception may be thrown at runtime.
The code may run with no output, without exiting.
The code may run with no output, exiting normally(正常地).
The code may rum with output “A B A B C C “, then exit.
The code may rum with output “A B C A B C A B C “, then exit.
The code may ruin with output “A A A B C A B C C “, then exit.
The code may ruin with output “A B C A A B C A B C “, then exit.
解析:在每个线程中都是顺序执行的,所以sl.printAll();必须在前三句执行之后执行,也就是输出的内容必有(连续或非连续的)ABC。
而线程之间是穿插执行的,所以一个线程执行 sl.printAll();之前可能有另一个线程执行了前三句的前几句。
E答案相当于线程1顺序执行完然后线程2顺序执行完。
G答案则是线程1执行完前三句add之后线程2插一脚执行了一句add然后线程1再执行 sl.printAll();输出ABCA。接着线程2顺序执行完输出ABCABC
输出加起来即为ABCAABCABC。
29.下列容器中,哪些容器按 key 查找的复杂度为 O(log(n)) ()
正确答案: B C 你的答案: B C (正确)
std::unordered_set
std::multimap
std::map
std::deque
解析:STL库中,map和multimap底层都是红黑树实现的,两者的不同在于multimap允许重复的可以,而map中不行。
红黑树的查找复杂度为O(log(n))
unodered_map/_set底层是哈希表实现的,查找复杂度为O(1)
30.下列说法错误的有( )
正确答案: B C D 你的答案: B C (错误)
A:能被java.exe成功运行的java class文件必须有main()方法
B:J2SDK就是Java API
C:Appletviewer.exe可利用jar选项运行.jar文件
D:能被Appletviewer成功运行的java class文件必须有main()方法
解析:J2SDK是编程工具