失效链接处理 |
达令Java面试 PDF 下载
本站整理下载:
相关截图:
主要内容:
Java 工程师面试题
1.请用单循环或递归代码实现n! ?
//for循环实现阶乘
public static long Factorial(int n) {
int sum = 1;
for (int i = 1; i <= n; i++) {
sum = sum * i;
}
return sum;
}
//递归实现阶乘
public static int DiGuiJieCheng(int n) {
int sum;
if(n==1||n==0) {
return 1;
}else {
sum=n*DiGuiJieCheng(n-1);
return sum;
}
}
2.举例说明你什么时候会用抽象类 ,什么时候更愿意用接口?
如果你拥有一些方法并且想让它们中的一些有默认实现,那么使用抽象类吧。
如果你想实现多重继承,那么你必须使用接口。由于Java不支持多继承,子类不能够继承多个类,但可以实现多个接口。因此你就可以使用接口来解决它。
如果基本功能在不断改变,那么就需要使用抽象类。如果不断改变基本功能并且使用接口,那么就需要改变所有实现了该接口的类。
3.请写出一个预加载的单例模式和一个懒加载的单例模式?
/**
* 饿汉模式-预加载模式
* @author Administrator
*/
class LazySingleton1{
private LazySingleton1() {}
private static LazySingleton1 instance=new LazySingleton1();
public static LazySingleton1 getInstance() {
return instance; } }
/**
* 懒汉模式-懒加载模式
* @author Administrator
*/
public class LazySingleton {
//默认的私有的构造方法,保证外界无法直接实例化
private LazySingleton() {};
private static LazySingleton instance=null;
//静态方法,返回此类的唯一实例
public static synchronized LazySingleton getInstance() {
if(instance==null) {
instance=new LazySingleton();
}
return instance;
}
}
4.有一个类class Student { String name;…(略)}如果我们需要以Student 类作为 Java.util.HashMap 的键值 , 那么要为Student重写哪些方法, 请完成Student类, 实现上述接口?
public class Student {
public String name;
public Student(String name) {
super();
this.name = name;
}
@Override
public String toString() {
return "Student [name=" + name + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Student other = (Student) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}
public class Test {
public static void main(String[] args) {
Map<Object, Student> map=new HashMap<>();
map.put(new Student("name1"),new Student("name1"));
map.put(new Student("name2"),new Student("name2"));
map.put(new Student("name3"),new Student("name3"));
// map.put(new Student("name3"),"tom");
System.out.println(map);
System.out.println(map.get(new Student("name3")));
}
}
|