微信

使用微信服务,更方便

职友集>Java面试题 > Java笔试试卷二

Java笔试试卷二

2015-10-31 06:30:02 阅读( 48 )

2736人 收藏本页

标签:Java面试题

试题1
已知变量a和obj的定义如下:
Object[] a1 = { “a”, “b”, “c” };
Object obj = a1;
则下面语句运行时会抛出异常的是( )。
A. Object[] a2 = (Object[])obj;
B. String str1 = (String)((Object[])obj)[1]
C. String[] a3 = (String[])obj
D. String str2 = (String)a1[2]

试题2
已知类Foo的定义如下:
public class Foo {
int value;
Foo(int value) {
this.value = value;
}
}
运行下面程序段:
Foo[] a1 = { new Foo(1), new Foo(2), new Foo(3) };
Foo[] a2 = new Foo[a1.length];
System.arraycopy(a1, 0, a2, 0, a1.length);
System.out.println((a1 == a2) + “,” + (a1[1] == a2[1]));
控制台输出的结果是( )。
A. false,true
B. false,false
C. true,true
D. true,false

试题3
已知类Foo的定义如下:
public class Foo {
int value;
Foo(int value) {
this.value = value;
}
public boolean equals(Object obj) {
if (obj instanceof Foo) {
Foo foo = (Foo) obj;
return value == foo.value;
} else {
return false;
}
}
运行下面程序段:
ArrayList list = new ArrayList();
HashSet set = new HashSet();
list.add(new Foo(1));
set.add(new Foo(1));
System.out.println(list.contains(new Foo(1)) + “,”
+ set.contains(new Foo(1)));
控制台输出的结果是( )。

A.true,false
B. true,true
C. false,false
D. false,true

试题4
已知类A、B、C和接口D的定义如下:
public class A{…}
public class B extends A implements D {…}
public class C extends A {…}
public interface D {…}
变量a、b、c、d的定义如下:
A a = new A(); B b = new B();
C c = new C(); D d = null;
则下列语句会有编译错误的是( )。

A. a = b;
B. d = b;
C. d = (D)a;
D. c = (C)b;

试题5
运行如下代码:
class COne {
public void f() {
System.out.println(“COne.f”);
}
}

class CTwo extends COne{
public void f() {
System.out.println(“CTwo.f”);
}
}

class CThree {
public void g(COne one) {
System.out.println(“g(Cone)”);
one.f();
}

public void g(CTwo two) {
System.out.println(“g(Ctwo)”);
two.f();
}
}
public class Main {
public static void main(String[] args) {
COne one = new CTwo();
CThree three = new CThree();
three.g(one);
}
}
控制台输出的结果是( )。

A. g(Cone)
CTwo.f
B. g(Cone)
COne.f
C. g(Ctwo)
CTwo.f
D. g(Ctwo)
COne.f

试题6
运行如下代码
class Foo {
private int value = 5;
public Foo() {
System.out.println(“Foo()”);
System.out.println(value);
}
}

class Bar extends Foo{
private int value = 10;
public Bar() {
System.out.println(“Bar()”);
System.out.println(value);
}
}

public class Main {
public static void main(String[] args) {
Bar bar = new Bar();
}
}
控制台输出的结果是( )。

A.Bar()
10
Foo()
5
B. Foo()
5
Bar()
10
C. Bar()
5
Foo()
10
D. Foo()
10
Bar()
5

试题7
实现Point类的equals方法,具体逻辑为:“成员变量x和y分别相等的Point对象被视为相等”。
public class Point {
private int x;
private int y;

public boolean equals(Object obj) {

}
}
以下代码正确的是( )。

A.
if(obj.x == this.x || obj.y == this.y){
return true;
}
return false;
B.
if(obj.x == this.x && obj.y == this.y){
return true;
}
return false;
C.
if(!(obj instanceof Point)) return false;
if(((Point)obj).x == ((Point)obj).y && this.x == this.y){
return true;
}
return false;
D.
if(!(obj instanceof Point)) return false;
if(((Point)obj).x == this.x && ((Point)obj).y == this.y){
return true;
}
return false;

试题8
运行如下代码:
List list = new ArrayList();
//向list中插入内容{1,2,3,4,5,6}
list.set(2, list.set(5,list.get(2)))
System.out.println(list);
控制台的输出结果是( )。

A. [1, 2, 5, 4, 5, 2]
B. [1, 5, 3, 4, 2, 6]
C. [1, 2, 6, 4, 5, 3]
D. [1, 2, 3, 4, 5, 3]

试题9
运行如下代码:
List list = new ArrayList();
//向list中插入内容{1,2,3,4,5,6}
… … …
list.subList(2, 5).clear();
System.out.println(list);
控制台的输出结果是( )。

A. [1, 2, 3, 6]
B. [1, 2]
C. [1, 2, 3]
D. [1, 2, 6]

试题10
题示代码的功能为:将两个有序的ArrayList合并为一个有序的ArrayList。
对于两个存放Integer对象的ArrayList,
内容分别为:list1:{1,3,4,6,8} 和 list2:{2,5,9}
合并后的list3: {1,2,3,4,5,6,8,9}


List list3 = new ArrayList();
int size = list1.size() + list2.size();

for (int i = 0, j = 0, k = 0; k < size; k++) {

}
System.out.println(list3);


完成该功能应该填入的代码是( )。

A.
if (j >= list2.size() || i > list1.size()
&& list1.get(i) < list2.get(j)) {
list3.add(list1.get(i++));
} else {
list3.add(list2.get(j++));
}
B.
if (j >= list2.size() || i < list1.size()
&& list1.get(i) < list2.get(j)) {
list3.add(list1.get(i++));
} else {
list3.add(list2.get(j++));
}
C.
if (j >= list2.size() || i < list1.size()
&& list1.get(i) > list2.get(j)) {
list3.add(list1.get(i++));
} else {
list3.add(list2.get(j++));
}
D.
if (j >= list2.size() || i < list1.size()
|| list1.get(i) < list2.get(j)) {
list3.add(list1.get(i++));
} else {
list3.add(list2.get(j++));
}

试题11
运行如下代码:
String ss = "abcdefcde";
int i = ss.indexOf("cde", 3);
System.out.println(i);
控制台输出的结果是( )。

A. 6
B. 3
C. 2
D. 7

试题12
运行如下代码:
String ss = "abcdefcde";
char cc = ss.charAt(3);
System.out.println(cc);
控制台输出的结果是( )。

A. b
B. e
C. c
D. d

试题13
运行如下代码:
String ss = "abcdefcde";
String s = ss.substring(2, 4);
System.out.println(s);
控制台输出的结果是( )。

A. cdef
B. cd
C. cde
D. bcde

试题14
下面说法正确的是

A. 一个接口可以继承另外一个接口
B. 一个类只能实现一个接口
C. Java语言支持多继承
D. 抽象类中的非抽象方法不可以调用其抽象方法

试题15
下面的代码用于输出字符数组ch中字符出现的种类和个数,应该填入的代码是()。

public static void main(String[] args) {
char[] ch = { 'a', 'c', 'a', 'b', 'c', 'b' };
HashMap map = new HashMap();
for (int i = 0; i < ch.length; i++) {

}
System.out.println(map);
}

A.
if (map.contains(ch[i])) {
map.put(ch[i], map.get(ch[i]) + 1);
} else {
map.put(ch[i], 1);
}
B.
if (map.contains(ch[i])) {
map.put(ch[i], (Integer) map.get(ch[i]) + 1);
} else {
map.put(ch[i], 1);
}
C.
if (map.containsKey(ch[i])) {
map.put(ch[i], (int) map.get(ch[i]) + 1);
} else {
map.put(ch[i], 1);
}
D.
if (map.containsKey(ch[i])) {
map.put(ch[i], (Integer) map.get(ch[i]) + 1);
} else {
map.put(ch[i], 1);
}

试题16
关于String和StringBuffer对象描述,错误的是

A. StringBuffer是可变对象,而String是不可变对象
B. 对字符串进行删除、插入等可变操作时一般使用StringBuffer
C. String对象池的作用在于提升效率
D. StringBuffer的append方法将返回一个全新的StringBuffer对象

试题17
已知静态方法random(int n)用于返回大于等于0且小于n的随机整数。
利用此函数实现对ArrayList的“洗牌”操作。所谓“洗牌”操作,
即将ArrayList元素的位置随机打乱,使得ArrayList的每个元素的位置
在除原位置外的其他随机位置上。
应该填入的代码是
public class shuffleUtils {
public static void shuffle(ArrayList list) {


}

public static int random (int n) {
… … …
}
}

A.
for (int i = list.size(); i > 1; i–) {
int j = random(i);
list.set(j,list.get(i-1));
}
B.
for (int i = list.size(); i > 1; i–) {
int j = random(i);
list.set(i-1, list.set(j,list.get(i-1));
}
C.
for (int i = list.size(); i > 1; i–) {
int j = random(i);
list.set(i-1,list.get(j));
}
D.
for (int i = list.size(); i > 1; i–) {
int j = random(i);
list.set(i, list.set(j,list.get(i));
}

试题18
ArrayList的初始化内容如下:
ArrayList list = new ArrayList();
list.add(“java”);
list.add(“aaa”);
list.add(“java”);
list.add(“java”);
list.add(“bbb”);

下面可以删除list中所有的“java”的代码是:

A.
for (int i = list.size() – 1; i >= 0; i–) {
if (“java”.equals(list.get(i))) {
list.remove(i);
}
}
B.
for (int i = 0; i < list.size() – 1; i++) {
if (“java”.equals(list.get(i))) {
list.remove(i);
}
}
C.
list.remove(“java”);
D.
list.removeAll(“java”);

试题19
下面字符串和正则表达式 [JQK]{2}[a-z0-9]+ 匹配的字符串是
A. JQ
B. JKK
C. QQ001
D. Q123abc

试题20
下面描述正确的是:

A. str是字符串变量,“java”.equals(str) 和 str.equlas(“java”)在任何时候都是等价的
B. 成员访问修饰符按照可访问的范围由大到小的顺序是 public default protected private
C. abstract 和 final 共同修饰一个类时,final应该放在abstract 的前面
D. 当某一个类的int类型常量值(用static final修饰)经过修改并重新编译后。用到的该常量的其他类也必须重新编译后才能用的新修改后的值

来自IT公司面试手册

下一篇:介绍一下java的引用类型以及对象创建过程

上一篇:四种操作xml的方式:SAX, DOM, JDOM , DOM4J的比较

亲~ 如果您有更好的答案 可在评论区发表您独到的见解。

您想查看更多的信息: 面试题