一、基础知识面试题
1.1 Java基础知识
-
关于Java语言中main方法的描述中,正确的是()
- A:Java程序的main方法必须写在类里面。
- B:Java程序中可以有多个main方法
- C:Java程序的main方法中,如果只有一条语句,可以不用大括号括起来
- D:Java程序中类名必须和文件名一样
答案:<font color="red">A、B</font>
-
解析:
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