前段时间离职,最近在找工作,于是写写每天面试笔试的总结
今天第一家是中兴的外包,居然没面到,笔试没过,我也是醉了,感觉题很基础的.额!
有8到选择题,4条编程题(选择题记不住了)
第一道就是单例模式,叫编写一个
http://www.blogjava.net/kenzhh/archive/2013/03/15/357824.html推荐看这个总结很全
//单例模式总结与演示
public class SingletonDemo {
//默认构造器私有化
private SingletonDemo(){}
//用于返回的实例
private static SingletonDemo instance;
//1.懒汉模式(线程不安全)
public static SingletonDemo getInstance(){
if (instance == null) {
instance = new SingletonDemo();
}
return instance;
}
//懒汉模式(线程安全模式)
//加线程锁
public static synchronized SingletonDemo getInstance2(){
if (instance == null) {
instance = new SingletonDemo();
}
return instance;
}
}
//默认构造器私有化
private SingletonDemo(){}
//用于返回的实例
private static SingletonDemo instance = new SingletonDemo();
//2.饿汉式:先生成一个实例,然后返回,由于已有一个实例,避免了<span style="font-family: georgia, verdana, Arial, helvetica, sans-seriff;font-size:12px; line-height: 20.8px;">多线程的同步问题</span>
public static SingletonDemo getInstance(){
return instance;
}
//默认构造器私有化
private SingletonDemo(){}
//用于返回的实例
private static SingletonDemo instance = null;
//在静态块中写,这样该类已加载进JVM,就有一个实例了,也避免了<span style="font-family: georgia, verdana, Arial, helvetica, sans-seriff;font-size:12px; line-height: 20.8px;">多线程的同步问题</span>
static{
instance = new SingletonDemo();
}
//2.饿汉式(第二种写法)
public static SingletonDemo getInstance(){
return instance;
}
public enum Singleton {
//4.枚举式,感觉是最简单的,我就写的这个
INSTANCE;
public void Method() {
.....
}
}
//双重校验锁式,今天才知道
//volatile的作用是: 作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值.
//简单地说就是防止编译器对代码进行优化
public class Singleton {
private volatile static Singleton singleton;
private Singleton (){}
public static Singleton getSingleton() {
if (singleton == null) {
synchronized (Singleton.class) {
if (singleton == null) {
singleton = new Singleton();
}
}
}
return singleton;
}
}