高德笔试题2012

1、switch(e){}  e能不能是float型的,为什么

    1. byte、char、short、int四种基本类型以及它们的包装类(需要Java5.0/1.5以上版本支持)都可以用于switch语句。
    2. long、float、double、boolean四种基本类型以及它们的包装类(在Java所有版本中)都不能用于switch语句。
    3. enum类型,即枚举类型可以用于switch语句,但是要在Java5.0(1.5)版本以上才支持。
    4. 所有类型的对象(包括String类,但在Java5.0/1.5以上版本中,该项要排除byte、char、short、int四种基本类型对应的包装类)都不能用于switch语句。

switch的判断条件只能是int或者隐式转换为int型的类型。


2、尽可能多的写出final的作用

1、final修饰类中的属性或者变量

              无论属性是基本类型还是引用类型,final所起的作用都是变量里面存放的“值”不能变。

              这个值,对于基本类型来说,变量里面放的就是实实在在的值,如1,“abc”等。

              而引用类型变量里面放的是个地址,所以用final修饰引用类型变量指的是它里面的地址不能变,并不是说这个地址所指向的对象或数组的内容不可以变,这个一定要注意。

              例如:类中有一个属性是final Person p=new Person("name"); 那么你不能对p进行重新赋值,但是可以改变p里面属性的值,p.setName('newName');

              final修饰属性,声明变量时可以不赋值,而且一旦赋值就不能被修改了。对final属性可以在三个地方赋值:声明时、初始化块中、构造方法中。总之一定要赋值。      

      2、final修饰类中的方法

             作用:可以被继承,但继承后不能被重写。

      3、final修饰类

             作用:类不可以被继承。

3、重载与覆盖的含义与区别

1、方法的覆盖是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系。
2、覆盖只能由一个方法,或只能由一对方法产生关系;方法的重载是多个方法之间的关系。
3、覆盖要求参数列表相同;重载要求参数列表不同。
4、覆盖关系中,调用那个方法体,是根据对象的类型(对象对应存储空间类型)来决定;重载关系,是根据调用时的实参表与形参表来选择方法体的。
overload重载编译时的多态   
override覆盖运行时的多态

4、使用多线程有哪些方法

认识Thread和Runnable Java中实现多线程有两种途径:继承Thread类或者实现Runnable接口。Runnable是接口,建议用接口的方式生成线程,因为接口可以实现多继承,况且Runnable只有一个run方法,很适合继承。在使用Thread的时候只需继承Thread,并且new一个实例出来,调用start()方法即可以启动一个线程。 Thread Test =new Thread(); Test.start(); 在使用Runnable的时候需要先new一个实现Runnable的实例,之后启动Thread即可。 Test impelements Runnable; Test t = new Test(); Thread test = new Thread(t); test.start(); 总结:Thread和Runnable是实现java多线程的2种方式,runable是接口,thread是类,建议使用runable实现java多线程,不管如何,最终都需要通过thread.start()来使线程处于可运行状态。

5、读程序写结果:super()的调用、static成员变量、子类父类的调用问题。
http://blog.csdn.net/xuxurui007/article/details/7749671

6、多态问题。
class Father {
	public Father(int a) {
		super();
		System.out.println(3);
		this.print();
	}

	public void print() {
		System.out.println(5);
	}
}

class Child extends Father {
	public Child(int a) {
		super(a);
		super.print();
		System.out.println(a);
	}

	public void print() {
		System.out.println(7);
	}
}

public class ExcuteOrder {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new Child(9);
	}
}
输出:3759

7、写出二分法查找的例子
http://blog.csdn.net/xuxurui007/article/details/7660991
8、写出使用冒泡法的一个类
http://blog.csdn.net/xuxurui007/article/details/7640490
9、要求写一个圆形或者三角形的类,可以供客户在图形用户界面上直接使用

  http://www.ibm.com/developerworks/cn/java/l-javagui/

10.用C++/JS写一段程序,解决下面的问题

一只公鸡值五文钱,一只母鸡值三文钱,三只小鸡值一文钱,

问用一百文钱买一百只鸡,公鸡、母鸡、和小鸡各有多少只?

public class _100For100Chikens {
	// 我国古代数学家张丘建在《算经》一书中曾提出过著名的“百钱买百鸡”问题。该问题叙述如下:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,则翁,母,雏各几何?
	public static boolean accord(int i, int j, int k) {
		if (5 * i + 3 * j + k / 3 == 100 && k % 3 == 0 && i + j + k == 100)
			return true;
		else
			return false;
	}

	public static void main(String[] args) {
		int i, j, k;
		System.out.println("the possible plans for buying 100 fowls with 100 yuan are:\n");
		for (i = 0; i < 21; i++)
			for (j = 0; j < 34; j++)
				for (k = 0; k < 101; k++)
					if (accord(i, j, k))
						System.out.println("公鸡、母鸡、小鸡个数:  " + i + "  " + j + "  " + k);

	}
}


你可能感兴趣的:(高德笔试题2012)