Java面试题总结(一)----java基础篇

1. 一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?

可以包括多个类,但只能有一个用public修饰。

2. java中有没有goto?

有,是保留字,但现在不使用。

3. 说说&和&&的区别?

相同:都可以用作逻辑与的运算符,两边都为true是,为true;

不同:&还具有短路功能;即如果第一个表达式为false,则不在计算第二个表达式;

    && 可以用作位运算符。

4. java中如何跳出当前循环?

两种方法:用bread或为循环命名,bread  循环名。

5. switch语句能否作用在byte上,能否作用在long上,能否作用在String上?

switch 的只能是整数表达式或枚举常量;整数表达式可以是int和包装类Integer,由于byte、char、short都可以隐含转化为int,所以可以。

但是,long和String不能用。

6. short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

s1是short类型的,s1+1会提升数据类型为int,会报错,提示要进行强制类型转换;第二个正常,因为java会对+=进行特殊处理。

7. char是否可以储存汉字?

char型变量用来储存Unicode编码字符的,Unicode编码字符里包括汉字,所以可以,除非是没有的特殊字符。

8. 用最有效的方法算出2乘以8?

2>>8位运算最高效。

9. 设计一个百亿计算器

10. 使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?

指的是引用不能变,引用对象可以变;例如:

	final StringBuffer a=new StringBuffer("abc");
	a=new StringBuffer("dd");
会报错,但a.append("d")不会报错。


11. 静态变量和实例变量?

静态有static修饰,值加载一次,类可以直接调用

实例变量只能由实例化对象调用。

12. 是否可以从一个static方法内部发出对非static方法的调用?

不可以,因为static可以有类直接调用,而非static方法必须由实例化对象调用,二者一起出现冲突。

13. Integer包装类和int基本数据类型区别?

Integer默认值为null,而int为0,Integer包装类可以区别未赋值和值为0;但int基本类型不可以;在Hibernate用Integer

修饰对象表示符OID,通过判断是否为空,判断对象是否是瞬时对象;最主要的Integer封装了操作数字的许多方法。

14. 请说出作用域public,private,protected,以及不写时的区别

作用域 当前类 同一个包 子类 其他包
public 可以 可以 可以 可以
protected 可以 可以 可以
private 可以


默认不写 可以 可以

15. 构造器Constructor是否可被override?

构造器Constructor不能被继承,可以用super()调用,因此不能重写Override,但可以被重载Overload。

16.接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concreteclass)?抽象类中是否可以有静态的main方法?

接口可以继承接口,抽象类可以实现接口。

抽象类可以 继承具体的类,可以有静态的main方法。

抽象类和具体类的唯一区别就是不能创建实例对象和允许有abstract抽象方法。

17. 写clone()方法时,通常都有一行代码,是什么?

clone有缺省行为,super.clone();因为首先要把父类中的成员复制到位,然后才是复制自己的成员。

18.java中实现多态的机制是什么?

靠的是父类或接口定义的引用变量可以指向子类或具有实现类的实例对象,而程序调用方法在运行时才动态绑定,

就是引用变量所指的具体实例对象的方法,也就是内存中正在运行对象的方法,而不是引用变量类型中定义的方法。

19. abstract class和interface有什么区别?

抽象类:用abstract修饰,不能创建实例,含有抽象方法必须是抽象类,定义的抽象方法必须被子类重写,所以不能有抽象的静态方法。

接口: 一种特殊的抽象方法,默认用public abstract final修饰的成员变量,用public abstract修饰方法,所有的方法都是抽象的。

区别:

1)抽象类有构造方法,接口没有;

2)抽象类可以有普通成员变量,接口没有;

3)抽象类可以有普通方法,接口不能;

4)抽象类可以有静态方法,接口不可以;

5)都可以有静态成员变量,接口只能用public修饰,抽象类可以是任意的;

6)一个类可以实现多个接口,但只能实现一个抽象类。

20. abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?

抽象方法需要被子类重写,所以不能是static;

native方法表示该方法要用依赖另一种平台的语言实现,和抽象没关系;

同步要确定this,抽象的确定不了,没一起用的。

21. super.getClass()调用问题

getClass()是final修饰的,可以继承,但不能重写,所以返回的是本身的类的名称,要得到父类的名称,用super.getSupperClass().getName()

import java.util.Date;
public  class Test extends Date{
	public static void main(String[] args) {
		new Test().test();
	}
	public void test(){
		System.out.println(super.getClass().getName());
	}
}
 
   

 
   返回的是 Test 
   

 
   
 
  

22. 是否可以继承String类?

String 类是final类,不能继承,final方法可以继承,但不能重写;

23. String s = new String("xyz");创建了几个String Object? 二者之间有什么区别?

两个或一个,xyz在常量缓存区中的对象,如果此前用过xyz,则直接从常量缓存区拿,只创建一个new对象,如果没用过,则创建2个。

24. try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后

public  class Test {
	public static void main(String[] args) {
		System.out.println(new Test().test());
	}
	static int test() {
		int x = 1;
		try {
			System.out.println("try");
			return x;
		} finally {
			System.out.println("finally");
			++x;
			System.out.println(x);
		}
	}
}
结果:
	try
	fianlly
	2
	1
再比如:

public class  smallT{

    public static void main(String args[]) {

       smallT t = new smallT();

       int b  = t.get();

       System.out.println(b);

    }

    public int  get() {

       try {

           return 1 ;

       } finally {

           return 2 ;

       }

    }

结果:
	2;//因为finally将try中的额覆盖了

主函数和子函数调用问题,先执行try,在执行finally,在执行finally之前结果放到主函数,不是立即返回,所以是1;

25. 运行时异常与一般异常有何异同?

RunTime Exception和Checked Exception:运行时异常和一班异常;

1)运行时异常是Exception的一个特殊子类,在进行编译时不会被检查的异常,只能在运行时检测,如空指针异常,可以不做处理;

2)一般异常是在编译时就可以检测的,必须进行声明处理的异常,否则无法通过编译。

26. errorexception有什么区别

error错误与程序执行的操作无关,大多是由于虚拟机运行时出现了问题,通过程序代码本身无法解决;

异常是应用程序中可预测、可恢复的问题,出现在特定的代码或操作中,可以通过设计程序代码解决。

27. 异常处理机制

所有异常的根类为java.lang.ThrowableThrowable下面又派生了两个子类:ErrorExceptionError表示应用程序本身无法克服和

恢复的一种严重问题,程序只有死的份了。异常分为运行时异常和普通异常。

28. 举例运行时异常

NullPointerException空指针异常

ArrayIndexOutOfBoundsException数组下标越界

ClassCastException 类型强制转换异常

IOException 输入异常

FileNotFoundException文件未找到异常

SQLException 操作数据库异常

29. JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?

throws------获取异常,可能出现异常,在方法声明后边,由方法的调用者处理

throw--------抛出异常,在方法体内部,内部的语句处理;

try------------是将会发生异常的语句括起来,从而进行异常的处理,也可以在try块中抛出新的异常

catch--------出现异常执行里边的语句

finally-------不论是否有异常都会执行的语句

30. 












你可能感兴趣的:(java)