java 经典面试真题

一、基础知识面试题

1.1 Java基础知识

  • 关于Java语言中main方法的描述中,正确的是()

    • A:Java程序的main方法必须写在类里面。
    • B:Java程序中可以有多个main方法
    • C:Java程序的main方法中,如果只有一条语句,可以不用大括号括起来
    • D:Java程序中类名必须和文件名一样
  • 答案:A、B

  • 解析:

    • A:Java是纯面向对象的语言。所以,所有的属性和方法都必须定义在类里面。main只是一个特殊的方法,程序的入口方法。

    • B:Java程序中定义多个main方法。但是只有public static void main(String[] args)才是Java程序的入口方法。

    • C:不多说

    • D:

      public class Test {
      
          public static void main(String[] args) {
              System.out.println("今天下雨了");
              
          }
          
          
      }
      
      class T{
          public static void main(String[] args) {
              System.out.println("今天下雨了,第二次了");
              
          }
      }
      

1.2 基础内容

  • 有以下代码
class A{
    public A(){
        System.out.prinln("A");
    }
}
class B extends A{
    public B(){
        System.out.println("B");
    }
    public static void main(String[] args){
        B b = new B();
    }
}

运行结果是什么

  • A:不确定
  • B:通过编译,输出为AB
  • C:通过编译,输出为B
  • D:通过编译,运行时错误

答案:A

解析:

1.3 面向对象

  • 面向对象的基本概念,少不了三大特性,封装,继承,多态。

  • 题1:有以下程序。请问是否有问题,有问题请指出,没有问题,请写出输出结果

    public class B extends A{
        public B(){
            System.out.println("B constructer");
        }
        {
            System.out.println("B class");
        }
        static{
            System.out.println("static B");
        }
        public static void main(String[] args){
            new B();
        }
    }
    class A{
        public A(){
            System.out.println("A constructer");
        }
        {
            System.out.println("A class");
        }
        static{
            System.out.println("static A");
        }
    }
    
  • 答案:

    static A
    static B
    A class
    A constructer
    B class
    B constructer
    
  • 解析:

    • 在Java语言中,当实例化对象时,对象所在的类的所有成员变量首先要进行初始化。只有这些初始化完成,才会用对象所在的类的构造方法创建对象。
    • Java程序初始化一般遵循三个原则:
      • 静态对象优先于非静态对象初始化,并且,静态对象(变量)只初始化一次,而非静态对象可能会初始化多次。
      • 父类优先于子类进行初始化
      • 按照成员变量定义的顺序进行初始化
    • Java程序初始化在不同代码块中完成,执行顺序:父类静态变量、父类静态代码块、子类静态变量、子类静态代码块、父类非静态变量、父类非静态代码块、父类构造方法、子类非静态变量、子类非静态代码块、子类构造方法。

1.4 智力拓展题

  • 题:现有8瓶酒,其中有一瓶有毒,需要用人测试,每次测试结果8小时后才会得出,如果只有8个小时的时间,那么最少需要多少个人进行测试

  • 答案:3

  • 解析:

    标号 二进制 情况
    1 000 没有人中毒
    2 001 只有第一个人中毒
    3 010 只有第二个人中毒
    4 011 第一和第二个人同时中毒
    5 100 只有第三个人中毒
    6 101 第一、第三个同时中毒
    7 110 第二、第三同时中毒
    8 111 全部中毒

第一个人:喝低位为1的标号的酒 2、4 、6 、8

第二个人:喝第二位为1的标号的酒 3 、 4 、 7 、8

第三个人:喝高位为1的标号的酒 5、6 、7 、 8

你可能感兴趣的:(java 经典面试真题)