java面试题以及解析

一、不定项选择题

1.如下程序
class Test{
public static void main(String[] args){
doSomething(1);
doSomething(1,2);
}
//insert code here
}
在程序中插入下列哪一行代码可以编译通过:
A.static void doSomething(int[] args){}
B.static void doSomething(int args…){}
C.static void doSomething(int args…,int x){}
D.static void doSomething(int x,int …args){}
答案,C,D。
这道题考的是可变参数,可变参数的定义:数据类型… 变量
他可以代表单个数,也可以代表数组的传递,如果调用的时候我们发现了正好能匹配的方法就不会调用可变参数的方法,否则则调用可变参数方法。
2.下列哪几种声明是合法的?
A.int KaTeX parse error: Expected 'EOF', got '#' at position 22: …nt _123; C.int #̲y; Dshort [] z[…、_组成,不能由数字或其他开头,而且定义的数组不能直接定义长度。
3.如下程序:
class Foo{
class bar{}
}

class Test{
public static void main(String[] args){
Foo f=new Foo();
//insert code here
}
}
在程序中插入下列哪一行代码可以创建Bar的实例?
A.Foo.bar b=new Foo.Bar();
B.Foo.Bar b=new f.new Bar();
C.Bar b=new f.Bar();
D.Bar b=f.new Bar();
E.Foo.Bar b=new f.Bar();
答案:B。
这道题的考点是内部类,类内部的类就是内部类。
位置:把一个类定义到另一个类中,那么该内部的类就是内部类。
注意:内部类不能直接创建。
创建内部类的语法:外部类.内部类 变量名=new 外部类对象.new 内部类对象
内部类的外部类如果想访问内部类的方法,必须创建内部类的对象,根据内部类的对象来访问
内部类的特点:
本类可以直接创建内部类的对象。
内部类的方法可以访问外部类的属性。
匿名内部类
没有名字的类,在接口或者抽象类上实现。
4.定义主类的类头时可以使用到的关键字是?
A.abstract B.final C.private D.super
答案:ABC。
super是用于重载的关键字。
5.下列程序
class Top{
public Top(String s){
System.out.println("“D);
}
}
public class Botttom extends Top{
public Bottom(String s){
System.out.println(“C”);
System.out.println(” ");
}
}
输出的结果是:
A.BD
B.DB
C.BDC
D.DBC
E.编译错误
答案:E。
这道题有坑,看似考的是类的初始化过程,实际上考的的super关键字,子类在重写父类的构造方法,如果不是无参构造,则需要用super关键字,将父类的有参写入。
6.若有以下接口的定义:public interface IA extends IB,IC,ID{…};则:
A.这个接口的声明是错误的
B.接口IA继承了接口IB,IC,ID
C.接口IA实现了接口IB,IC,ID
D.关键字extends指明接口的继承关系
答案:BD。
接口支持多继承。

二、问答题

1.类的方法和实例(非局部)变量有几个访问级别?分别为哪些?有什么区别?
public :当前类、同包、子类、整个项目可访问。
protected:当前类、同包、子类可访问。
默认:当前类、同包可访问。
private:只有当前类可访问。
2.写出try…catch…finally结构的语法格式。
try{

}catch(Exception e){

}finally{

}
3.请说明覆盖和重载的区别?构造函数可以重载和覆盖吗?
覆盖:参数列表以及返回值类型全部相同。
重载:参数列表不同,返回类型可以相同可以不相同。
构造函数可以重载不能覆盖。
4.现有类说明如下,请回答问题:
class A{
int x=10;
int getA(){
return x;
}
}
class B extends A{
int x=100;
int getB(){
return x;
}
}
问题:
1).类B是否能继承A的属性x?
能。
解析:首先需要说明的是,即使子类声明了与父类完全一样的成员变量,也不会覆盖掉父类的成员变量。而是在子类实例化时,会同时定义两个成员变量,子类也可以同时访问到这两个成员变量(this.i&super.i),但父类不能访问到子类的成员变量(父类不知道子类的存在)。
而具体在方法中使用成员变量时,究竟使用的是父类还是子类的成员变量,则由方法所在的类决定;即,方法在父类中定义和执行,则访问的是父类的成员变量,方法在子类中定义(包括覆盖父类方法)和执行,则访问的是子类的成员变量
2).若b是类B的对象,则b.getB()的返回值是什么?
100
3).若b是类B的对象,则b.getA()的返回值是什么?
10
4.类A和类B都定义了X属性,这种现象被称为什么。
属性的作用域。

三、编程

1求1-100的质数。
for(int i2,i<=100,i++){
int j=2
while(i%j!=0){
j++;
}
if(i==j){
System.out.println(i);
}
}

发布了42 篇原创文章 · 获赞 1 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_41935885/article/details/96342343