随笔之java笔试一

单选题
1、下列语句哪一个正确(B)
A.Java程序经编译后会产生machine code
B.Java程序经编译后会产生byte code
C.Java程序经编译后会产生DLL
D.以上都不正确

2、选出所有正确的答案
public class Outer{
  public void someOuterMethod(){
    //Line3
  }
  public class Inner{}
  public static void mani(String[] args){
    Outer o=new Outer();
    //Line8
  }
}
以下哪条语句正确的实例化Inner:()
A.new Inner();//At line3
B.new Inner();//At line8
C.new o.Inner();//At line8
D.new Outer.Inner();//At line8

3.以下代码运行输出是(C)
public class Person{
  private String name="Person";
  int age=0;
}
public class Child extends Person{
  public String grade;
  public static void main(String[] args){
    Person p=new Child();
    System.out.println(p.name);
  }
}
A.输出:Person
B.没有输出
C.编译错误
D.运行错误
解析:
子类不能访问父类私有成员

4.以下对抽象类的描述正确的是(C)
A.抽象类没有构造方法
B.抽象类必须提供抽象方法
C.有抽象方法的类一定是抽象类
D.抽象类可以通过new关键字直接实例化

5.以下对异常的描述不正确的有(C)
A.异常分为Error和Exception
B.Throwable是所有异常类的父类
C.Exception是所有异常类的父类
D.Exception包括RuntimeException和RuntimeException之外的异常

6.以下对继承的描述错误的是(B)
A.Java中的继承允许一个子类继承多个父类
B.父类更具有通用性,子类更具体
C.java中的继承存在着传递性
D.当实例化子类时会递归调用父类中的构造方法

7.假设有以下代码String s = "hello":String t = “hello”;char c [ ] = {'h','e','l','l','o'};下列选项中返回false的语句是?(B)
A.s.equals (t);
B.t.equals (c);
C.s==t;
D.t.equals (new String ("hello"));

8.下面代码运行结果是(B)
public class Demo{
  public int add(int a,int b){
    try{
      return a+b;
    }catch(Exception e){
      System.out.println("catch 语句块");
    }finally{
      System.out.println("finally 语句块");
    }
    return 0;
  }
  public static void main(String []args){
    Demo demo=new Demo();
    System.out.println("和是:"+demo.add(9,34));
  }
}
A.编译异常
B.finally语句块 和是:43
C.和是:43 finally语句块
D.catch语句块 和是:43

9.在java中,关于HashMap类的描述,以下描述错误的是(B)
A.HashMap使用键/值的形式保存数据
B.HashMap能够保证其中元素的顺序
C.HashMap允许将null用作键
D.HashMap允许将null用作值

10.Java中的集合类包括ArrayList、LinkedList、HashMap等类,下列关于集合类描述错误的是(B)
A.ArrayList和LinkedList均实现了List接口
B.ArrayList的访问速度比LinkedList快
C.添加和删除元素时,ArrayList的表现更佳
D.HashMap实现Map接口,它允许任何类型的键和值对象,并允许将null用作键或值
解析:
A正确,因为ArrayList和LinkedList都实现List接口。
B正确,ArrayList底层是数组,所以查询快,增删慢;而LinkedList底层是链表,查询慢,增删快。
C错误,见B解析。
D正确,描述正确,有一个Hashtable类,是不允许null作键和值的。

11.执行如下程序代码后,C的值是(C)
a=0;c=0;  
do{
  --c;  
  a=a-1;
  }while(a>0);
A.0 B.1 C.-1 D.死循环
解析:
(do while循环是先执行后判断)
Do while中的语句是至少要执行一次的。执行顺序为:do 中的语句,然后执行while条件,如果为false,则终止;如果为true,则继续执行Do中的语句,然后再检查while条件,如此循环。

12.提供Java存取数据库能力的包是(A)    
A.java.sql B.java.awt C.java.lang D.java.swing

多选题
13.不能用来修饰interface内方法的有(A、C、D)
A.private    B.public    C.protrcted       D.final

14.下列说法错误的有(A、C)
A.在类的静态方法中可用this来调用本类的静态方法
B.在类的静态方法中调用本类的静态方法时可直接调用
C.在类的静态方法中不能调用其他类中的静态方法
D.在类的静态方法中可用this来调用本类的非静态方法

15.在JDK1.7中,对于switch,switch后面的()中不可以是哪种类型:(F、G、H)
A.byte        B.char        
C.short        D.int    
E.String    F.枚举    
G.float        H.double
解析:
在jdk1.6之前,switch语句的判断条件只能接受int,byte,char,short类型的参数.但在jdk1.7之后,switch语句的判断条件可以接受String类型了,但要注意这里的String类型的参数是区分大小写的。

16.以下关于final关键字说法错误的是(A、C)
A.final是java中的修饰符,可以修饰类、接口、抽象类、方法和属性
B.final修饰的类肯定不能被继承
C.final修饰的方法不能被重载
D.final修饰的变量不允许被再次赋值

17.下列说法正确的有(B、C)
A. class中的constructor不可省略
B. constructor必须与class同名,但方法不能与class同名
C. constructor在一个对象被new时执行
D. 一个class只能定义一个constructor

18.对于异常处理,一下描述哪个是正确的:(A、C、D)
A:捕获异常是一种积极的异常处理方式,通过try、catch等关键字来实现
B:try必须跟catch连用,而finally是可以没有的
C:catch之后的()用于接收异常对象,因此需要指定异常类型和变量名称,比如catch(Exception e)
D:在JDK1.7中,允许在catch中捕获多个类型异常,如 catch(NullPointerExceptione1|ClassCastExceptione2) E:对于finally代码块而言,仅当执行try语句并没有触发异常时才执行,如果发生异常则进入catch代码块,不再执行finally代码块

19.请排列下列源代码顺序,完成枚举定义:(D C B A E)
enum Signal{
[ ]
[ ]
[ ]
[ ]
[ ]
A.public String info(){return "Signal Data";}
B.};
C.RED{public String info(){return "Stop";}
D.YELLOW,BLUE,
E.}
解析:
public enum Signal {
    YELLOW, BLUE, RED {
        public String info() {
            return "Stop";
        }
    };
    public String info() {
        return "Signal Data";
    }
}

20.以下哪些类是线程安全的(A、D、E)
A.Vector
B.HashMap
C.ArrayList
D.StringBuffer
E.Properties
解析:
HashTable继承于比较古老的Dictionary,而HashMap是接口Map的实现。
HashMap是HashTable的一个轻量级实现,HashMap不是线程安全的,而HashTable是线程安全的。
HashMap允许key或者value为null,而HashTable是不允许的。
在效率方面:HashMap的效率略过于HashTable。
而Properties是HashTable的子类,不过Properties添加了两个方法,load()和store()可以直接导入或者将映射写入文件。另外Properties是的映射。

简答题
1、请简述java反射机制
解析:
在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。

2、JDK和JRE的区别
解析:
JDK是Java开发工具包,JDK是整个JAVA的核心,包括了Java运行环境JRE(Java Runtime Envirnment)、一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。
JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器),只是针对于使用Java程序的用户。
JDK=JRE+JVM+其它 运行Java程序一般都要求用户的电脑安装JRE环境(Java Runtime Environment);没有jre,java程序无法运行;而没有java程序,jre就没有用武之地。

3、java支持的基本数据类型有哪些?什么是自动拆装箱?
解析:
四个整数型:byte short int long
两个浮点型:float double
一个字符类型:char
一个布尔型:boolean

Integer interger=10;//就是自动装箱,即执行了:Integer integer=Integer.valueOf(10);

Integer interger=10;//装箱
int i=interger;//就是自动拆箱,即执行了:int i=i.intValue();

4、创建线程有哪几种方式?你喜欢哪一种?为什么?
解析:
extends Thread
implements Runnable
implements Callable

喜欢实现Runnable接口,还可以继承其他类,可以多个线程共享一个目标对象,即多个线程来处理同一份资源

5、Comparable和Comparator接口是干什么的?列出它们的区别
解析:
Comparable接口只包含一个compareTo()方法,此方法可以给两个对象排序。具体来说,它返回负数,0,正数来表明输入对象小于,等于,大于已经存在的对象。

Comparator接口包含compare()和equals()两个方法:
compare()方法用来给两个输入参数排序,返回负数,0,正数表明第一个参数是小于,等于,大于第二个参数。equals()方法需要一个对象作为参数,它用来决定输入参数是否和comparator相等。只有当输入参数也是一个comparator并且输入参数和当前comparator的排序结果是相同的时候,这个方法才返回true。

6、finalize()方法什么时候被调用?析构函数(finalization)的目的是什么?
解析:
当GC内存紧张时,而去回收某些对象时会调用finalize()方法;不紧张时就不会调用。

Finalizetion主要用来释放被对象占用的资源(不是指内存,而是指其他资源,比如文件(File Handle)、端口(ports)、数据库连接(DB Connection)等)。

4.编程题
4.1    
请用ReentranLock和Condition实现一个简单的阻塞队列,原型如下:
class BlockingQueue{
  private int maxLength=20;
  public Object take(){}
  public void offer(Object o){}
}
解析:
并发编程:ReentranLock和Condition
1、Lock是为了更高效的同步而应运而生的,替代synchronized关键字
2、Condition是为了更灵活的等待唤醒机制,替代了Object的wait()、notify()、notifyAll()方法。



1、给出下列代码,如何使成员变量m被方法fun()直接访问? (C)
class Test{
    private int m;
    public static void fun(){
    //some other code…
    }
}
A.将private int m改为protected int m
B.将private int m改为public int m
C.将private int m改为static m
D.将private int m改为int m
解析:
在静态方法中不能直接访问非静态的成员,如果要在fun()中直接访问变量m,应将变量m用static修饰。

2、已知如下代码:
1: class Example{
2: String str;
3: public Example(){
4: str= "example";
5: }
6: public Example(String s){
7: str=s;
8: }
9:} }
10: class Demo extends Example{
11: }
12: public class Test{
13:public void f () {
14:Example ex = new Example("Good");
15:Demo d = new Demo("Good");
16:} }
哪句语句会导致错误?(E)
A、 line 3 B、line 6 C、line 10 D、line 14 E、line 15

你可能感兴趣的:(随笔之java笔试一)