JAVA软件工程师面试常问的东东之二

JAVA程序员面试常问的东东之二
1、作用域public、private、protected以及不写时的区别?
   public:其作用范围是不同的包、同一个包或者类都可以使用;
   private:只有同一个类中的才能使用;
   protected:不同的包但如果是该类的子类可以使用、同一包或类可以使用;
   不写:同一个包、同一个类中可以使用。

2、编程:输出如下图形
   ******
   *****
   ****
   ***
   **
   *

 
 public class Show(){
     public static void main(){
      for(int i=0; i<6; i++){
        for(int j=6; j>i; j--){
          System.out.print("*");
        }
       System.out.println();
      }
    }
   }


3、谈谈Java的事件委托机制以及垃圾回收机制。
Java的事件委托机制是指一个源产生一个事件并将它送到一个或多个监听器那里。在这个方案中监听器简单的等待,直到它收到一个事件。一旦事件被接受,监听器就将处理这个事件,然后返回。
垃圾回收是将分配给对象的堆内存空间中不再使用的部分回收或释放的过程。如果一个对象么有指向它的引用或者其赋值为空,则此对象适合进行垃圾回收。

4、排序都有哪些方法?请列举。并用Java实现其中一种方法。
排序的方法一般有:插入排序,也叫直接插入拍寻或者希尔排序;交换排序,也叫冒泡排序或者快速排序;选择排序,也叫直接选择排序或者堆排序;归并排序;分配排序,也叫箱排序或者基数排序等。
下列用插入排序方法将一个数组排序:

public class InsertSortTest{
	private static int a[] = {55,25,3,4,22,9};

	public static void main(String[] args) {
		BubbleSort bs = new BubbleSort();
		System.out.println("排序前:");
		display(a);
		
		for(int i=1;i<a.length;i++) {
		
			for (int j=i; j>0; j--) {
				
				if(a[j] < a[j-1]) {
					int temp = a[j];
					a[j] = a[j-1];
					a[j-1] = temp;
				}else {
					break;
				}
			}
		}
		System.out.println();
		System.out.println("排序后:");
		display(a);
	}

	private static void display(int[] al2) {
		for (int i = 0; i < al2.length; i++) {
			System.out.print(al2[i]+"  ");
		}
	}
} 



5、谈谈方法的重载与方法的覆写的区别。

方法的重载,在英文中表示为:Overloading,而方法的覆写为Overriding。
方法的重载是指方法的名称虽然相同,但是其参数的类型或个数不同的方法。
而方法的覆写则是指方法名称、参数的类型、返回的参数全部相同。并且要求被覆写后的方法不能比父类方法
拥有更严格的权限,并且私有方法是不能被覆写的。但是方法的重载没有这些要求。
最后发生的范围不同:方法的重载发生在一个类中,而方法的覆写发送的继承关系中。


6、谈谈this关键字与super关键字的区别。

答:首先从属性访问角度上看,this关键字是访问本类中的属性,如果本类没有此属性则从父类中继续查找,
而super是访问父类中的属性;
    其次从方法本身的角度来看,this是访问本类中的方法,如果本类中没有此方法则从父类中继续找,而
super是访问父类中的方法;
    再次,从调用构造方法的角度看,this是调用本类的构造方法,必须放在构造方法的首行,而super是指
调用父类的构造,必须放在子类构造方法的首行;
    最后的区别是:this代表是当前对象,而super无此概念。