1JavaSE考试题参考答案剖析_学4个月java找工作

 JavaSE考试题 )150分钟(时间

 选择题() 分75一.

 1.在Java中负责对字节码解释执行的是( B )

 A. 垃圾回收器

 B. 虚拟机

 C. 编译器

 D. 多线程机制

 2.BufferedReader的父类是( B )

 A. FileReader

 B. Reader

 C. PipedReader

 D. InputStreamReader

 3.在读字符文件Post.dat时,使用该文件作为参数的类( A )

 A. BufferedReader

 B. DataInputStream

 C. DataOutputStream

 D. FileInputStream

 4.下列不是InputStream子类的是( C )

 A. FileInputStream

 B. ObjectInputStream

 C. CharInputStream

 D. ZipInputStream

 5.下列方法中可以用来创建一个新线程的是( D )

 A. 实现java.lang.Runnable接口并重写start()方法

 B. 实现java.lang.Runnable接口并重写run()方法

 C. 继承java.lang.Thread类并重写start()方法

 D. 继承java.lang.Thread类并重写run()方法

 6.当启动Applet程序时,首先调用的方法是( B )

 A. stop()

 B. init()

 C. start()

 D. destroy()

 7.序列化一个类时,如果要隐藏某个成员,使之在反序列化时不能看到搞成员的真实

 数据,应当使用的关键字是( C )

 hiddern

  A.

 B. private

 C. transient

 D. destroy

 8.将键值对(key--value)保存到映射(Map)对象中的方法是( B )。

 A.add(Object key,Object value)

 B.put(Object key,Object value)

 C.insert(Object key,Object value)

 D.get(Object key,Object value)

 9. 一个java Application 运行后,在系统中是作为一个( B )

 A.线程

 B.进程

 C.进程或线程

 D.不可预知

 10.下列关于线程调度的叙述中,错误的是:( D )

 A. 调用线程的sleep()方法,可以使比当前线程优先级低的线程获得运行机会

 B. 调用线程的yield()方法,只会使与当前线程相同优先级的线程获得运行机会

 C. 当有比当前线程优先级高的线程出现时,高优先级的线程将抢占CPU并运行

 D. 具有相同优先级的多个线程的调度一定是分时的.

 11.下列关于线程优先级别的说法中,正确的是( C )

 A. 线程的优先级是不能改变的

 B. 线程的优先级在创建线程时设定

 C. 在创建线程后的任何时候都可以设置

 D. B,C

 12.实现一个线程的创建方法有几种( B )

 A. 一种

 B. 二种

 C. 三种

 D. 四种

 13.下列关于泛型的说法,错误的是( B )

 A、泛型是一种参数化类型

 B、可以取代继承机制。

 C、避免了运行时进行类型转换可能的潜在性错误

 D、增强了程序的灵活性和安全性

 14.以下那个是java.io包中一个兼有输入输出功能的类( C )

 A. Object

 B. Serializable

 RandomAccessFile

  C.

  中不存在这样的类D. Java.io

 ) 15.要串行化某些类的对象,这些类就必须实现( A 接口A.Serializable 接口B.java.io.Comparable 接口.java.io.DataImputC 接口.DataOutputD

 ) D 数据库的JDBC驱动程序类名及其完整包路径为( 16.Oraclejdbc.driver.oracle.OracleDriver .Ajdbc.oracle.driver..OracleDriver .Bdriver.oracle.jdbc.OracleDriver .Coracle.jdbc.driver.OracleDriver D.

 )

  ( C 17.下列数组a中,能够在程序运行时动态调整大小的是int[] a A.

 String[] a

 B.

 A=new ArrayList() C.

 A=new Array() D.

  Java图形用户界面编程中,若显示一些不需要用户修改的文本信息18.在 类的对象来实现 )一般使用( A

 Label .AButton .BTextArea .CTestField .D

 ) .WindowListener接口中,可以实现窗口关闭功能的方法是( A 19Public void windowClosing(WindowEvent e); A.Public void windowOpened(WindowEvent e); B.Public void windowClosed(WindowEvent e);

 C.Public void windowDeactivated(WindowEvent e); D.

 20.Panel默认的布局管理器是( C )

 A.GridLayout

 B.BorderLayout

 C.FlowLayout

 D.CardLayout

 21.容器Frame使用的缺省布局编辑策略是( B )。

 A.FlowLayout

 B.BorderLayout

 C.GridLayout

 CardLayout

 .D.

 22.Socket类的那个方法返回Socket对象绑定的本地端口( B )

 A.getPort()

 B.getLocalPort()

 C.getRemotePort()

 D.不存在这样的方法,因为Socket对象绑定的本地端口对程序是透明的。

 23.默认情况下,SocketChannel处于什么模式( A )

 A.阻塞模式

 B.非阻塞模式

 24.对于以下代码:

 int n=socketChannel.read(byteBuffer);//假设n>=0

 byteBuffer.flip();

 假定执行socket.read(byteBuffer)方法前,byteBuffer的容量、极限和位置分别为

 c,1,p,则执行完以上代码后,byteBuffer的容量、极限和位置分别是多少?( B )

 A.容量为c、极限为1,位置为p+n

 B.容量为c、极限为p+n,位置为0

 C.容量为l、极限为p+n,位置为0

 D.容量为c、极限为p+n,位置为p+n

 25.在服务器程序中,线程在那些情况下可能会进入阻塞状态?多选( CDE )

 A.线程执行Socket的getInputStream()方法获得输入流

 B.线程执行Socket的getOutputStream()方法获得输出流

 C.线程执行ServerSocket的Accept()方法

 D.线程执行Socket的输入流读取数据

 E.线程执行Socket的输出流写一批数据

 26.ServerSocketChannel可能会发生那个事件( A )

 A.SelectionKey.OP_ACCEPT接收连接就绪事件

 B.SelectionKey.OP_CONNECT连接就绪事件

 C.SelectionKey.OP_READ读就绪事件

 D.SelectionKey.OP_WRITE 写就绪事件

 27.SocketChannel可能会发生那个事件(多选)( BCD )

 A.SelectionKey.OP_ACCEPT接收连接就绪事件

 B.SelectionKey.OP_CONNECT连接就绪事件

 C.SelectionKey.OP_READ读就绪事件

 D.SelectionKey.OP_WRITE 写就绪事件

 28.下列程序的功能是在控制台上,每隔1秒钟显示字符串”Hello”,能够填写在程序中下划线位置,使程序完整,并能够正确运行的语句是( A )

 public class Test implements Runnable{

 public static void main(String[] args){

  Test t=new Test();

  Thread tt=new Thread(t);

  tt.start();

  }

  public void run(){

  for(;;){

  try{

  __________

  }

  catch(_________ e ){}

  System.out.println(“Hello”);

  }

  }

 }

 A. Thread. sleep (1000) InterruptedException

 A. sleep (1000) InterruptedException

 B. t. sleep (1000) InterruptedException

 C. Thread. sleep (1000) RuntimeException

 

 29.集合类保存在类包( A )

 A java.util

 B java.io

 C java.lang

 D java.text

 30. 线程实现同步方法的关键字是( A )

 A. synchronized

 B. asynchronized

 C. lock

 D. locked

 二.填空(4)

 分01.集合分为___Collection___________和___Map________两个最顶端的接口。

 2.获得集合中元素总数的方法是_size()_______。

 3.线程在生命周期中要经历5种状态,分别是

 新建状态、_可运行状态(或就绪状态)_、_正在运行状态__、阻塞状态和___死亡状态__。

 4.如果有一个类MyFrame是Frame的子类,能够被不同包中的类所使用,请写出该类的声明头:___public MyFrame extends Frame_________

 5.下面的类RandomEx从Random扩展,并为其添加一个public int nextInt(int min,int max)方法,以便产生min---max之间的随机数(包含下限min,但不包含上限max),试填空实现这个 功能。.

 class RandomEx extends Random{

  public int nextInt(int min,int max){

  int result=nextInt( max-min )+( min );

  return (result );

  }

 }

 6.设表student的结构如下:

 name varchar2(30),

 age int,

 salary number(6,2)

 连接对象为conn,

 String sqlUpdate=UPDATE studet SET salary = ?, age=? WHERE name = ?;

 现要修改name=”东方人华”这个人的age=25,salary=3546.8,

 写出用PreparedStatement 执行sqlUpdate语句的相关代码(按执行顺序)

  PreparedStatement ps=null;

  _ps= conn.prepareStatement(sqlUpdate) _______________;

 __ps.setDouble(1,3546.8) ________________________;

 __ps.setInt(2,25)___________________________;

 ___ps.setString(3,”东方人华”)_________________;

  int affectRow=ps.executeUpdate();//执行,并返回影响的行数

 7.假设数组 PPM中存放过去100天某地大气污染指数,下列方法计算过去100天该污染指数

  每天在10以上(含10),并且连续出现3天以上(含3天)的次数

  //例如: int[] PPM={5,2,10,15,16,15,3,5,6,17,18,17,20,31,20}; 应当返回2

  请将程序补充完整。

 static public int PpmCount(int[] PPM)

 {

  final int PpmValue=10; //污染指数临界值

  连续出现的天数界限值 final int ConDays=3; // int TempConDays=0;

  int GreatDays=0; //累计满足条件的天数 int Length=PPM.length;

  for(int i=0;i<Length;i++)

  {

  ) if( PPM[i]>=PpmValue 次数+1 TempConDays+=1; //

  else

  {

  if( TempConDays>=ConDays )

  GreatDays++;

 

  ( TempConDays=0 );

  }

  }

  if(TempConDays>=ConDays)

  GreatDays++;

 return ( GreatDays );

 }

 

 下列方法convertToBinary()使用链式列表将十进制数n转换为二进制数,

 .8 试填空完成之。

 public class TestConvert {

  public String convertToBinary(int n){

  LinkedList stack=new LinkedList();

  int m=n;

  while(m!=0){

  int remainder=( m % 2 )

  char c=(char)('0'+remainder);

  stack.addFirst(Character.valueOf(c));

  m=( m/2 );

  }

  Iterator it=stack.iterator();

  StringBuffer sb=new StringBuffer();

  while(it.hasNext()){

  char c=(Character)it.next();

  sb.append( c );

  }

  return sb.toString();

 

  }

 }

 三.编程题() 分351.设计一个线程,使得字符串”大连是一个美丽的海滨城市” 每隔1秒钟输出一个字符。

  运行结果如下:(多行输出)

  大

  大连

  大连是

  ……

 大连是一个美丽的海滨城市

 参考答案:

 class WordDisplay extends Thread{

  牰癩瑡?瑓楲杮琠硥?大连是一个美丽的海滨城市;

  public void run(){

  for(int i=1;i<=text.length();i++){

  try{

  System.out.println(text.substring(0,i));

  sleep(1000);//休眠1s

  }

  catch(InterruptedException e){

  e.print

  }

  }

  }

 }

 或

 class WordDisplay implements Runnable{

  牰癩瑡?瑓楲杮琠硥?大连是一个美丽的海滨城市;

  public void run(){

  for(int i=1;i<=text.length();i++){

  try{

  System.out.println(text.substring(0,i));

  sleep(1000);//休眠1s

  }

  catch(InterruptedException e){

 

  }

  }

  }

 }

 2.编写BankAccount类,要求如下:

  A. 该类由此款人姓名(String name ),存款余额(double balance),存期(int year)及年利

 率(double rate)四个数据成员,其中年利率的默认值为0.03.

 B. 该类有两个重载的构造方法.其中一个构造方法不含参数,设置默认的存款为

 10元,存期一年;另一个构造函数包含二个用于创建对象时设置存款额与存期

 的参数。

  C. 该类有三个方法:存款(save),取款(fetch)及计算存期满后的总金额(calcTotal).

 D. 创建一个账号fans,创建时即(利用构造函数)存入1000元,存期3年,后又存入

 2000元(利用save方法),计算存期满后的总金额(利用calcTotal方法)

 参考答案:

 public class BankAccount {

  private String name;//姓名(账号)

  存款余额balance;// private double

  private int year;//存期

 private double rate=0.03;//年利率

 //构造方法

 public BankAccount(String name){

  this(name,10.0,1);//默认存款10元,存期1 年

 }

 构造方法//

 public BankAccount(String name,double deposit,int year){

  =name;

  this.balance=deposit;

  this.year=year;

 

 }

 //存款

 public void save(double deposit){

  this.balance+=deposit;

 }

 //取款

 public double fetch(double reduce) throws Exception{

  if(this.balance>=reduce){

  this.balance-=reduce;//余额

  return reduce;

  }

  else{

  桴潲?敮?硅散瑰潩?不能透支!);

  }

 }

 //存期满后的总金额

 public double calcTotal(){

 

  double total=balance;

  for(int i=1;i<=year;i++){

  total=total*(1+rate);

  }

  return total;

 }

 public static void main(String[] args) {

  // TODO Auto-generated method stub

  //测试

  BankAccount fans=new BankAccount(

 ans,1000,1);

 fans.save(2000);

  double totalMoney=fans.calcTotal();

  System.out.println( otalMoney==>+totalMoney);

 

  }

 }

 附加题(选作):

 3.编写一个加密类Ecryption,在其中实现对字符串的加密和解密方法。加密原理是:

 加密后的字符串的第一个字符是原字符串的最后一个字符,其余的每个字符是对应的原welcome'e' “,字符串中的前一个字符的值加上3。比如:“末尾的字符为“welcom““zhofrp““ezhofrp“ 故加密后的结果为,依次加上3后成为

 参考答案

 class Ecryption{

  //加密方法:输入明文,返回密文

 public String encrypt(String source){

  //加密代码

  }

  //解密方法:输入密文,返回明文

 public String decrypt(String dest){

  //解密代码

  }

 }

 public class EncryptDecrypt {

  /**

  * @param args

  */

  public static void main(String[] args) {

  // TODO Auto-generated method stub

  String source=Apple12大连;

  String dest=encrypt(source);

  System.out.println(source+ 加密==>+dest);

 

  String resultSource=decrypt(dest);

  System.out.println(dest+ 解密==>+resultSource);

 

  }

 // 加密函数

  static public String encrypt(String str){

  StringBuilder result=new StringBuilder(str.substring(str.length()-1));//取最后一个字符放到结果字符串的开头

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

  char c=(char)(str.charAt(i)+3);//取出第i个字符;

  result.append(c);

  }

  return result.toString();

  }

  //解密函数

  static public String decrypt(String str){

  StringBuilder result=new StringBuilder();//取最后一个字符放到结果字符串的开头

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

  char c=(char)(str.charAt(i)-3);//取出第i个字符;

  result.append(c);

  }

  result.append(str.charAt(0));//原来第一个字符到现在最后一个字符

  return result.toString();

  }

 }

推荐访问:考试题 参考答案 剖析 JavaSE