Java软件工程师企业测评测试题.docx
《Java软件工程师企业测评测试题.docx》由会员分享,可在线阅读,更多相关《Java软件工程师企业测评测试题.docx(22页珍藏版)》请在冰豆网上搜索。
Java软件工程师企业测评测试题
Java 软件工程师企业测评测试题
一、选择题:
(每题 2 分)
1.名为 HelloWorld.java 的 Java 应用程序如下:
(B)
public class HelloWorld
{
public static void main(String args[])
{
System.out.println("Hello World!
");
}
}
将这个程序放在 C:
\Test 下,然后在命令行窗口中,进入到 C:
\Test 路径执行如下指令:
javac helloworld.java 将得到什么结果?
A. 编译出错。
B. 编译成功,生成名为 HelloWorld.class 的文件。
C. 编译成功,生成名为 helloworld.class 的文件。
D. 找不到名为 helloworld.java 的文件。
2.下面的程序名为 Student.java:
B
public class Student
{
private String name;
public Student(String s_name)//1
{
name = s_name;//2
}
public static void main(String args[])
{
Student s = new Student();//3
}
}
使用如下指令编译:
javac Student.java。
将会得到什么结果?
A. 将会顺利通过编译,并将产生一个 Student.class 的类文件。
B. 编译时在//3 处出错。
1
C.编译时在//2 处出错。
D. 编译时在//1 处出错。
3.关于下面的类描述中正确的是:
C
class Test {// 1
void test(int i) {// 2
System.out.println("I am an int.");// 3
}// 4
void test(String s) {// 5
System.out.println("I am a string.");// 6
}// 7
// 8
public static void main(String args[]) {// 9
Test t=new Test();// 10
char ch='y';// 11
t.test(ch);// 12
}// 13
}// 14
A. 编译出错
B. 编译通过,运行出错
C. 编译通过,运行时输出“I am an int”?
?
?
?
D. 编译通过,运行时输出“I am a string”
4.关于下述程序:
C
public class Test3
{
public static void main(String[] agrs)
{
byte b = 2,e =3;//1
byte f = b+e;//2
System.out.println(f); //3
}
}
描述正确的是?
A. 编译通过,运行时打印出 5。
B. 编译通过,运行时打印出 23。
C. 编译不通过,在//2 处有错误,因为此处 f 必须是一个 int 类型的变量。
?
D. 编译不通过,在//1 处有错误,不能这样定义变量
2
5.关于下述程序:
public class Divide
{
public static void main(String args[])
{
System.out.println("17.0/0 = "+17.0/3);//1
System.out.println("17/0 = "+17/3);//2
}
}
描述正确的是?
编译通过,运行 17.0/0=5.66666666666666?
17/0=5
A. 编译出错
B. 编译通过,运行时//1、//2 处均出现异常
C. 编译通过,运行时//1 处得到一个无穷大值,//2 处将出现异常
D. 编译通过,运行时//1 处出现异常,//2 处将得到一个无穷大值
6.关于下述程序:
D
public class Test4
{
public static void main(String[] agrs)
{
double x = 1.234;//1
double y = 2;//2
System.out.println(""+x+y);//3
System.out.println(x+y+"");//4
}
}
描述正确的是?
A. 编译出错。
B. 编译通过,执行的时候在//2 处报错。
C. 编译通过,执行时在//3 处打印出 3.234,在//4 处打印出 3.234。
D. 编译通过,执行时在//3 处打印出 1.2342.0,在//4 处打印出 3.234。
8.下述程序:
C
public class Test9
{
static int i = 1;
static
3
{
i++;
}
public Test9()
{
i++;
}
public static void main(String[] args)
{
Test9 t1 = new Test9();
System.out.println(t1.i); //12
Test9 t2 = new Test9();
System.out.println(t2.i); //2
}
}
编译运行后在//1 和//2 处分别打印出什么值?
A.2 和 2B. 3 和 3C. 3 和 4D. 4 和 3
9.关于下述三个接口:
A
public interface IA
{
public void methodA();
}
public interface IB
{
public void methodB();
}
public interface IC extends IA,IB
{
public void methodA();
}
正确的是?
A. 接口 IC 不能通过编译,因为它继承了两个接口。
4
B. 接口 IC 不能通过编译,因为它定义了一个和 IA 中一样的方法 methodA()。
C. 接口 IC 不能通过编译,因为它继承了两个接口,并且还定义了一个和 IA 一样的 methodA()方法。
D. 接口 IC 能够顺利通过编译。
10.下述语句执行结果为:
A
int[] arr = new int[10];
A.arr[0] 是 0B. arr[9] 是 0
C.arr[10]是 0D. arr[0] 是 null
11.关于 break 和 continue 语句,下面哪些说法是错误的?
AD
A. break 只能用于循环语句中。
B. continue 只能用于循环语句中。
C. 在循环语句中,break 语句将终止循环;而 continue 是略过当前循环中剩余的语句进入下一次循环。
D. 在循环语句中,continue 语句将终止循环;而 break 是略过当前循环中剩余的语句进入下一次循环。
12.下面哪些标识符是合法的?
ABD
A.IAMAClassB. $byteC. constD. _year
13.关于垃圾收集的哪些叙述是对的?
B
A. 程序开发者必须自己创建一个线程进行内存释放的工作。
B. 垃圾收集将检查并释放不再使用的内存。
C. 垃圾收集允许程序开发者明确指定并立即释放该内存。
D. 垃圾收集能够在期望的时间释放被 java 对象使用的内存。
14.下面的程序的输出结果是:
()B
class SuperClass {
static {
System.out.println("---SuperClass---");
}
SuperClass() {
System.out.println("SuperClass()");
}
public static void main(String[] args) {
SubClass sc = new SubClass();
}
}
class SubClass extends SuperClass {
static {
System.out.println("---SubClass---");
}
SubClass() {
System.out.println("SubClass()");
5
}
}
A. SuperClass/SubClass/SuperClass()/SubClass()/
B. SuperClass/ SuperClass()/SubClass /SubClass()/
C. SubClass / SuperClass / SubClass()/SuperClass()/
D. SubClass/ SubClass()/SuperClass / SuperClass()/
15.下面程序的运行结果是:
( A )
class SuperClass {
public void f() {
System.out.print("SuperClass.f()/");
}
}
class SubClass extends SuperClass {
public void f() {
System.out.print("SubClass.f()/");
}
}
class ThirdClass {
public void g(SuperClass arg) {
System.out.print("g(SuperClass)/");
arg.f();
}
public void g(SubClass arg) {
System.out.print("g(SubClass)/");
arg.f();
}
public static void main(String[] args) {
ThirdClass tc = new ThirdClass();
SuperClass sc = new SubClass();
tc.g(sc);
}
}
A.g(SubClass)/SubClass.f()/B. g(SuperClass)/SuperClass.f()/
C.g(SuperClass)/SubClass.f()/D. g(SubClass)/SuperClass.f()/
6
16.取出字符串 String target = "IbmSunJavaBeaWeblogicOracle..."中的子串“Java”的语句是:
(B )
A.target.substring(5,10);B. target.substring(6,10);java
C.target.substring(5,9);D. target.substring(6,9); jav
17.下列描述正确的是:
( B )
A. hashCode 返回是对象在内存唯一的标识,对象不同,hashCode 返回值一定不同。
B. hashCode 方法可以重写,但重写的逻辑要和 equals 保持一致性。
C. 语句 System.out.println("java"=="java");打印出的结果为“false”。
D. HashSet 容器在存放某一类的对象时,改变该类的 hashCode 方法可能会影响到 HashSet 容器的效率
18.属于 Collection 容器的方法是:
( AC)
A.iteratorB.hasNextElementC.toArrayD. next
19.下列三条输出语句输出的结果为:
( C )
System.out.print(Math.floor(156.1)+"/");
System.out.print(Math.ceil(-166.3)+"/");
System.out.print(Math.round(-123.5)+"/");
A.156.0/-167.0/-124/B. 157.0/-167.0/-123/
C.157.0/-166.0/-124/D. 156.0/-166.0/-123/
20.下面的程序会有编译错误,更正的方法为:
( ABC )
class OuterClass {
public void f() {
String s1 = "inner";
class InnerClass {
public void g() {
System.out.println(s1);
}
}
}
}
A.将变量 s1 声明为 staticB. 将变量 s1 声明为 public
C.将变量 s1 声明为 finalD. 将内部类 InnerClass 声明为 static
21.已有接口定义:
B
package test;
public interface Role {
public void action() throws java.io.IOException;
}
7
下面的类定义不会有编译错误的是:
A.
package test;
public class A implements Role {
public void action() throws java.io.FileNotFoundException {}
}
B.
package test;
public class B implements Role {
public void action() throws java.io.IOException {}
}
C.
package test;
public class C implements Role {
public void action() {};
}
D.
package test;
public class D implements Role {
public void action() throws Exception {}
}
22.下面的程序输出的结果为:
public class Test {
public static void main(String[] args) {
StringBuffer buffer = new StringBuffer();
int value = 18;
do {
int temp = value & 0x07;
buffer.append(temp);
}while((value>>>=3)!
=0);
System.out.println(buffer.reverse());
}
}
A.24B.23C.25D. 22?
?
?
8
二、简答题:
(每题 4 分)
1. 简述单例模式的思路,并且写出一种实现方案:
2. 接口,抽象类,具体类如何搭配使用
3. 简述 java 的异常处理机制
4.写出 private、public、protected 以及 Default 各自的访问范围:
5.用简短的语言解释下列词汇
a)JVM
b)垃圾回收机制
c)多态
d)动态绑定
e)关键字 synchronized(同步代码块)
三、编程题(每题 8 分)
1.写一个类,当该类的实例创建时即启动一个线程,按照指定格式每隔 5 秒循环打印出当前的时间(提
示:
使用 Runnable 接口或内部类创建线程。
(结合 run 接口和 thread)
public class ThreatDemo implements Runnable{
public ThreatDemo(){
Thread t=new Thread(this);
t.start();
}
public void run() {
while (true){
Date date=new Date();
9
SimpleDateFormat s=new SimpleDateFormat("yyyy-MM-dd HH:
mm:
ss");
try{
Thread.sleep(5000);
}catch(InterruptedException e){
e.printStackTrace();
}
System.out.println(s.format(date));
}
}
public static void main(String[] args) {
ThreatDemo fg = new ThreatDemo();
}
System.out.println("打印当前时间——>");
}
2.写一个程序统计输入字符串中以“,”分隔的各种单词出现的次数。
例如:
输入的字符串为
“java,java,j2ee,ibm,j2ee,ibm,j2me,java”,则该程序的输出结果应该为:
java3 个;j2ee2 个;ibm2 个;j2me1 个。
public static void main(String[] args) {
String str = "java,java,j2ee,ibm,j2ee,ibm,j2me,java";
String s[] = str.split(",");
int a[] = new int[s.length];
for(int i = 0;iString temp = new String((String) s[i]);
for(int j = 0;jif(temp.equals(s[j]))a[i]++;
}
}
Set set = new HashSet();
for(int i = 0;iset.add(s[i]+a[i]);
}
Iterator iter = set.iterator();
while(iter.hasNext()){
}
}
System.out.println(iter.next()+"个");
}
3.已知在文件路径“c:
\temp\target.bmp”,写出 Java 程序将该文件同名拷贝到路径“c:
\bak”下。
注意:
由于文件较大,应考虑到程序的效率问题。
public class CopyDemo {
public static void main(String[] args) throws Exception {
File f1=new File("d:
"+File.separator+"demo.txt");
File f2=new File("c:
"+File.separator+"demo.txt");
InputStream input=null;
input=new FileInputStream(f1);
OutputStream out=null;
out=new FileOutputStream(f2);
if(input!
=null&&out!
=null){
int temp=0;
while((temp=input.read())!
=-1){ 1.f2必须有所考文件名吗 是的2.c盘不需要提前创建所
拷贝的文件 是的3.d盘中所要考文件输入内容能否被写入c盘呢,可以4.f1中的文件名必须与f2中的文件名
一致吗 可以不一样。
out.write(temp);
}
System.out.println("拷贝完成!
");
10
}else{
System.out.println("拷贝失败!
");
}
input.close();
out.close();
}
}
4.写出一段程序,从备选字符串“red”、“green”、“blue”、“black”、“white”中随机选出 3 个不同
的字符串,并打印到控制台。
public class Color {
public static void main(String[] args) {
String str="red,green,blue,black,white";
Random r=new Random();
String[] s=str.split(",");
Set set=new HashSet();
for(int i=0;iset.add(r.nextInt(5));
if(set.size()==3)
break;
}
Iterator i=set.iterator();
while(i.hasNext()){
//System.out.println(i.next());
System.out.println(s[(Integer)i.next()]);
}
}
}
11