2018 -10-19小米
今天算是从公司实习回来现场面试的第一家公司,一共三轮技术一轮HR面试体验很好!加了一面面试官的微信!感谢每一个面试官!!!!!
总结下面试的知识点和自己不足的地方!喜欢做开发。那就继续做下去吧!
一:各种设计模式:
什么是设计模式?
类比盖房子吧,房子的模型设计,长时间的积累,都有了一个固定的模式。
https://blog.****.net/qq_21439971/article/details/53740109?utm_source=blogxgwz4 七种设计模式
1:单例设计模式:
1-1懒汉设计模式?
开始的时候不使用设计模式,这个时候在主函数里边直接new可以创建多个实例化对象!创建对象需要调用构造方法,这个时候调用的是默认的无参的构造方法。
现在有一个场景:有些对象只需要一个就足够了,如古代皇帝,老婆。
作用:保证整个应用程序中某个实例有且只有一个!
现在的话就没有办法主函数(也就是外部)直接实例化对象。如下图所示。
下面是正确做法;
面向对象的封装性:私有化,不允许直接访问我们的成员变量,保证安全。
这个时候没有办法通过 ‘类.成员变量’ 来直接实例化对象 如下图。
这个时候需要在单例类中实现一个可以实现返回唯一对象的方法
这个时候就可以了
注意:1,创建类的唯一实例,使用private static修饰;
2,提供一个用于返回获取实例的方法,使用public static 修饰。
总结:这就是饿汉设计模式:体现在类加载的时候,因为是public static 创建的,就创建一个实例,不管用户用不用,就直接创建出来。
1-2 饿汉设计模式
注意:第二步,我们只是声明实例,没有实例化;也就是说当类加载的时候并没有创建唯一的实例,是在用户获取的时候才真正做判断是否为空,说白了,当第一个用户获取时,instance一定为空,第二次第三次获取实例的时候,就不要再创建实例了,这个我们叫做懒汉设计模式。
两者的区别:
1:饿汉模式的特点是加载类时比较慢(因为对于饿汉模式而言,我们加载类的时候,他就已经创建了类的唯一实例,所以加载比较慢),但是运行时获取对象的速度比较块(因为对象在类加载时就创建了)。
2:懒汉模式的特点是加载类时比较快(因为它在加载类的时候,并没有创建对象,所以加载对象比较快),但运行时获取对象的速度比较慢(因为第一次获取的时候,它没有创建对象,所以比较慢,它需要一个创建对象的过程,所以说创建过程比较慢)。
3: 饿汉模式:线程安全; 懒汉模式:线程不安全。
单例设计模式之-静态内部类实现方式(线程安全):
4:静态内部类,使用枚举方式实现(线程安全)
5:使用双重校验(线程安全)。