java常见笔试_Java 常见笔试题(2)

Java

笔试题

(测试题目答题时间60分钟,请独立完成)

一.

选择题

单选题(10)

1.

给出以下代码,请问该程序的运行结果是什么?()

class Example

{

public static void main(String

args[]){

String s1="ab";

String s2="abcd";

String s3="cd";

String s4=s1+s3;

s1=s4;

System.out.println ("s1"+((s1==s2)?"==":"!=")+"s2");

}

}

A.

s1==s2

B.

s1!=s2

C.

s1

D.

s1=”abcd”

2.

以下哪些方法可以启动一个线程?请选择一个正确答案:()

A.

start()

B.

run()

C.

init()

D.

main()

3.

以下关于Serializable的描述正确的是()

A.

Serializable是java语言中的一个关键字

B.

Serializable是一个可以被实现的接口

C.

Serializable是一个可以被继承的类

D.

以上均不对

4.

线程Z在访问对象A时加上了对象互斥锁,线程X在访问对象A时通过wait方法进入阻塞态,下面哪个条件可以使线程X重新进入可运行态()

A.

线程X被中止

B.

线程X的wait()方法超时

C.

线程Z释放锁并调用notifyAll()方法

D.

线程Z调用Thread.sleep(100)

5.

(1)

class Value{String

i;}

public class IfElse

{

public static void main(String

args[]){

Value v1=new Value();

Value v2=new Value();

v1.i=v2.i="abc";

System.out.println (v1.equals(v2));

}

}

(2)

public static void main(String

args[]){

String v1=new String ();

String v2=new String();

v1=v2="abc";

System.out.println (v1.equals(v2));

}

(3)

public static void main(String

args[]){

String s="Welcome";

String m="Welcame";

System.out.println (s.equals(m));

}

A.

false,true,false

B.

false, false true,

C.

true,false true,

D.

true,false,

false

6.

下列说法正确的有()

A.

class中的构造函数不可省略

B.

构造函数必须和class同名,但方法不能和class同名

C.

构造函数在一个对象被new时执行

D.

一个class只能定义一个构造函数

7.

执行如下代码

a=0;c=0;

do{

--c;

a=a-1;

}while(a>0);

System.out.println

(c);

的结果是

A.

0

B.

1

C.

-1

D.

死循环

8.

java.util.Hashtable实现了哪个接口?

A.

java.util.Map

B.

java.util.List

C.

java.util.Hashable

D.

java.util.Collection

9.

阅读下面代码,回答问题

1.

class A implements

Runnable{

2.

int i;

3.

public void run(){

4.

try{

5.

thread.sleep(5000);

6.

i=10;

7.

}catch(InterruptedException e){}

8.

}

9.

}

10.

11.

public class Test{

12.

public static void main(String args[]){

13.

try{

14.

A a=new A();

15.

Thread t=new Thread(a);

16.

t.start();

17.

18.

int j=a.i;

19.

20.

}catch(Exception e){}

21.

}

22.

}

下面哪个语句放在第17行,可以保证19行的j=10?

A.

t.wait();

B.

t.join();

C.

t.yield()

D.

t.notify();

10.

阅读下面代码,回答问题

class Test

{

public static void main(String

args[])

{

List list=new ArrayList();

test2(list);

System.out.println (list.size());

test3(list);

System.out.println (list.size());

}

public static void test2(List

list){

list=null;

}

public static void test3(List

list){

list.add("");

}

}

A.

0,1

B.

0,0

C.

1,1

D.

抛出异常

多选题(10)

1.

已知如下类定义:

class Base{

public Base(){}

public Base(int m){}

protected void fun(int n){}

}

public class Child extends

Base{

//成员方法

}

如下哪句可以正确地加入子类中()

A.

private void fun(int

n){}

B.

void fun(int n){}

C.

protected void fun(int n){}

D.

public void fun(int n){}

2.

以下关于线程四种状态,描述正确的有()

A.

新状态(New Thread):线程已经被创建尚未执行(start()尚未被调用)

B.

可执行状态(Runnable):线程可以执行,虽然不一定正在执行。CPU时间随时

可能被分配给该线程,从而使得它执行。

C.

死亡状态(Dead):在正常情况下run()返回使得线程死亡。调用stop()或destroy()亦有同样效果,但是不被推荐,前者会产生异常,后者是强制终止,不会释放锁。

D.

阻塞状态(Not Runnable):线程不被分配CPU时间,无法执行

3.

以下关于继承哪些叙述是正确的()

A.

在java中只允许单继承

B.

在java中一个类只能实现一个接口

C.

在java中的一个类不能同时继承一个类和实现一个接口

D.

java的单一继承使代码更可靠

4.

线程下列哪些类继承自Collection接口()

A.

List

B.

Set

C.

Map

D.

Collection

5.

下列说法正确的是()

A.

java.lang.Cloneable是类

B.

java.lang.Runnable是接口

C.

Double类在java.lang包中

D.

Double a=10是正确的java语句

6.

下列哪两个接口可以保证集合类中的元素是没有重复的()

A.

java.util.Map

B.

java.util.Set

C.

java.util.List

D.

java.util.StoredSet

E.

java.util.StoredMap

F.

java.util.Collection

7.

下列哪两个接口使用键-值存储()

A.

java.util.Map

B.

java.util.Set

C.

java.util.List

D.

java.util.StoredSet

E.

java.util.StoredMap

F.

java.util.Collection

8.

阅读下面代码,回答问题

public class

SyncTest

{

public static void main(String args[])

{

final StringBuffer s1=new StringBuffer();

final StringBuffer s2=new StringBuffer();

new Thread(){

public void run(){

synchronized(s1){

s2.append("A");

synchronized(s2){

s2.append("B");

System.out.println (s1);

System.out.println (s2);

}

}

}

}.start();

new Thread(){

public void run(){

synchronized(s2){

s2.append("C");

synchronized(s1){

s2.append("D");

System.out.println (s1);

System.out.println (s2);

}

}

}

}.start();

}

}

哪两个是描述正确的?()

A.

打印结果是”ABBCAD”

B.

打印结果是”CDDACB”

C.

打印结果是”ADCBADBC”

D.

The output is a non-deterministic point because of

a possible deadlock condition.

E.

The output is dependent on the threading model of

the system the program is running on.

9.

关于HashMap与HashTable的说法,正确的有()

A.

HashTable是线程安全的,也就是说是同步的

B.

HashMap是线程不安全的,不是同步的

C.

HashMap可空,HashTable不可空

D.

HashMap不可空,HashTable不可空

10.

下列说法错误的有()

A.

数组是一种对象

B.

数组属于一种原生类

C.

int number=[]={31,23,33,43,35,63};

D.

数组的大小可以任意改变

二.

编程题

给定任意字符串(可有中文),长度为任意,要求找出其出现次数最多的字符并计算其次数。请写出编程思路和程序代码。

(以下代码买有考虑字符个数相同的情况,参考代码如下)

import

java.util.Scanner;

import

java.util.ArrayList;

class Test

{

String

str="";//接收字符串输入

ArrayList al=new

ArrayList();//存储字符及其个数信息

public void input()

{

//输入

System.out.println ("请输入一个字符串(可以包含汉字):");

Scanner sc=new Scanner(System.in);

str=sc.next();

while(str.length()!=0)

{

String sub=str.charAt(0)+"";

int n=0;

//统计每个字符个数

for (int i = 0; i< str.length() ; i++)

{

String sub1=str.charAt(i)+"";

if(sub1.equals(sub))

{

++n;

}

}

al.add(sub+":"+n);

//将已统计字符清空

str=str.replaceAll(sub,"");

}

}

public void output()

{

//输出

for (int i = 0; i

{

System.out.println (al.get(i));

}

}

public void getMax()

{

//比较

//定义一个与链表相同大小的数组用来存储每个字符的个数

int num[]=new int[al.size()];

for (int i = 0; i

{

String em=al.get(i).toString();

String

emsub=em.substring(em.indexOf(":")+1);

//取出每个字符的个数存于num数组中

num[i]=Integer.parseInt(emsub);

}

int maxindex=0;

//比较num数组中的最大值,没有考虑重复情况

for (int i = 1; i

{

if(num[maxindex]

maxindex=i;

}

System.out.println ("出现最多的是:"+al.get(maxindex)+"次!");

}

public static void main(String

args[])

{

Test test=new Test();

test.input();

test.output();

test.getMax();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值