java面试题

  1. 编译java Application源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为(.class)
  2. 面向对象的三个特点是:封装、继承、多态。
  3. 设 x=2;则表达式(x++)/3的值是:0
package com.javalainxi;

public class Interview01 {
    public static void main(String[] args) {
      
       int a = 2;
       int x = (a++) / 3;
       System.out.println(x);
       System.out.println(a);
//结果
//0
//3

    }
}

  1. 代码 int a[] = new int[3]; 中a[0] 的值为(0)。如果是double类型则值为(0.0)。如果是String类型则值为(null)。
  2. java基本数据类型中的整型占用字节数为(4),字符型占用字节数为(2),短整型占用字节数为(2),byte占用字节数为(1),boolean占(1),float占(4),double占(8)。
  3. String str = " ABCDEF"; str.charAt(3)的值为(C)
  4. 创建线程既可以从Thread类继承,也可以实现(Runnable、Callable)接口。
  5. 下面代码输出结果为(2)
public class Interview01 {
    static int i =0;
    public static void main(String[] args) {
        Interview01 a = new Interview01();
        a.i = 1;

        Interview01 b = new Interview01();
        b.i = a.i + 1;
        System.out.println(a.i);
  1. IO流可分为字节流和字符流。
  2. 下面代码执行结果为:(B)
public class Interview01 {
    public String toString() {
        return "A";
    }

public class B  extends Interview01{
        public String toString() {
            return "B";
        }

    public static void main(String[] args) {
        Interview01 b = new B();
        System.out.println(b.toString());
        //结果  B
    }
}

二、选择题

public class Interview01 {
   static int a[] = new a[10];//a[10] 错误,将a改成int
    public static void main(String[] args) {
        System.out.println(a[10]);//索引越界
  1. 关于上面程序,哪项正确(编译时产生错误)
  2. 哪个关键字可以对对象加互斥锁(synchronized)
  3. int型public成员变量MAX_LENGTH,该值保持为常数100,则定义这个变量的语句是

A.public int MAX_LENGTH=100

B.final int MAX_LENGTH=100

C.public const int MAX_LENGTH=100

D.public final int MAX_LENGTH=100
正确答案:D
解析:本题考查Java中变量的声明。选项A虽然按照题目要求定义了一个变量,但没有满足保持为常数的要求,该变量可以被改变。选项B没有满足题目要求的public成员变量;选项C与C语言混淆,const是C语言用来定义常值变量的关键字,Java中定义常值变量使用的是 final属性,说明该值赋值以后永不改变,所以选项 D为正确答案。

  1. main 方法是 Java Application 程序执行的入口点,关于 main 方法的方法头以下哪项是合法的(B.E )?

A. public static void main()
B. public static void main(String args[])
C. public static int main(String [] arg)
D. public void main(String arg[])
E. public static void main(String[] args)

  1. 以下哪个方法声明能够被加入到child类中,编译正确(B)
public class Interview01 {
    public int addValue(int a ,int b){
        return a+b;
    }

public class B  extends Interview01{
    public void addValue(int b,int a){}//错误

A. int addValue(int a, int b){} //不写修饰符,默认是default(同一包下可以访问)
B. public void addValue(){}
C. public void addValue(int b, int a){} //返回值问题,Interview01 类的方法有返回值,这就会出现矛盾。

  1. 判断以下Teacher类的main方法的运行结果是()
public class Persion {
    public Persion(){func();}
    public void func(){
        System.out.println("1, ");
    }
}

package com.javalainxi;

public class Teacher extends Persion{
    public Teacher(){super();}
    public Teacher(int a ){
        System.out.println(a);
    }
    public void func(){
        System.out.println("2, ");
    }

    public static void main(String[] args) {
        Teacher t1 = new Teacher();
        Teacher t2 = new Teacher(3);
        System.out.println(t1);
        System.out.println(t2);
    }
}

//结果
//2, 
//2, 
//3
  1. 下面不允许作为外部类的访问控制符的是( private )

public
private
protected

  1. Set接口和Collection接口的区别是(A)
    A. Set不允许有重复值,Collection允许有重复元素。
    B. collection不允许有重复值,Set允许有重复值。
    C. 都允许有重复值。
  2. Statement和PreparedStatement的区别(B)
    A. DMBC对 Statement语句进行预编译,DMBC对PreparedStatement不进行预编译
    B. DMBC对 Statement语句不进行预编译,DMBC对PreparedStatement进行预编译
    C. Statement执行语句效率更高。

解释:Statement每次执行sql语句,数据库都要执行sql语句的编译,最好用于仅执行一次查询并返回结果的情形,效率高于PreparedStatement.但存在sql注入风险。PreparedStatement是预编译执行的。在执行可变参数的一条SQL时,PreparedStatement要比Statement的效率高

  1. System.out.println(“2”+6);的输出结果为(26)
  2. 下列字符串半段结果为true的是()
		String a = new String("ABC");
        String b = new String("ABC");
        String c = "ABC";
        System.out.println(a==b); //false
        System.out.println(a==c); //false
        System.out.println(c.equals(a)); //true
  1. 在一个窗口(JFrame)中单击事件必须实现哪个接口(A)
    A. ActionListenter
    B. MouseListenter
    C. MouseMotionListern

  2. 下面代码执行后输出的结果为(B)

public class ExceptionDemo {
    public static void main(String[] args) {
        int i = 0;
        try{
            i++;
            int j = Integer.parseInt("12a");
            i++;
        }catch (NumberFormatException e){
            i++;
        }
        finally {
            i++;
        }
        System.out.println(i);
    }
}

A. 2
B. 3
C. 4

  1. 请问所有的异常类皆直接继承于哪一个类?(C)
    A. java.applet.Applet
    B. java.lang.Throwable
    C. java.lang.Exception
    D. java.lang.Error

  2. 创建下列类的对象,不正确的是(C)


public class Persion {
    private String name;
    public Persion(String name){
        this.name = name;
    }
}


public class Student extends Persion {
    String name;
    private String number;
    public Student (String name,String number){
        super(name);
        this.name = name;
        this.number = number;
    }

    public static void main(String[] args) {
        Student liMing = new Student("LiMing", "123");
        Persion liMing1 = new Student("LiMing", "123");
        Persion liMing2 = new Persion("LiMing", "1234");//Persion类是一个参数
    }
}

A. Student liMing = new Student(“LiMing”, “123”);
B. Persion liMing1 = new Student(“LiMing”, “123”);
C. Persion liMing2 = new Persion(“LiMing”, “1234”);

  1. 下面代码不正确的是(都对啊啊,都有输出结果)
     A. Object i =10; 
        int j = (int)i;
        System.out.println(i);

   B.   int a =187;
        char b =(char)a;
        System.out.println(b);

   C.   Object x = " A";
        String q = (String)x;
        System.out.println(q);


//结果
//10
//»
// A
  1. 下面关于垃圾收集的说法正确的是(D)
    A. 一旦一个对象成为垃圾,就立刻被收集掉。
    B. 对象空间被收集掉之后,会执行该对象的finalize方法
    C. finalize方法和C++的析构函数是完全一回事情
    D. 一个对象成为垃圾是因为不再有引用指着它,但是线程并非如此

  2. 关于Java虚拟机垃圾回收以下说法正确的有哪些?(C, D)
    A. Java虚拟机中的自动垃圾回收机制能阻止程序运行时内存溢出
    B. 垃圾回收是一个独立的平台
    C. 当一个对象的所有引用都被置为空时,该对象就可以变为能被垃圾回收的
    D. System.gc()可以建议垃圾回收执行,但不能强迫其执行;
    三、简答题

public class B {
    public int i =5;
    private String s;
    protected double d;
    B b;
    public void test(){
        System.out.println("in B");
    }
}

public class C extends A {
    public C(){};
    public void test(){
        System.out.println("IN C ");
    }

}


public class A extends B {
    public byte i =1;
    public  A(){}
    public void test(){
        System.out.println(" in A");
    }

    public static void main(String[] args) {
        A a = new A();   //a可以访问的变量是 i , b , d
        C c = new C();  //c可以访问的变量是 i , b , d
        B a1 = new A();
        System.out.println("---------------");
        a1.test();// 打印结果   in A
        System.out.println(a1.i);//打印结果  5
       // A aa = (A)a1;
        C c2 = (C)a;//错误   ClassCastException

    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值