1) 哪些类是单例模式的后续类?在Java中哪些类会成为单例?
这里它们将检查面试者是否有对使用单例模式有足够的使用经验。他是否熟悉单例模式的优点和缺点。
2)你能在Java中编写单例里的getInstance()的代码?
很多面试者都在这里失败。然而如果不能编写出这个代码,那么后续的很多问题都不能被提及。
3)在getInstance()方法上同步有优势还是仅同步必要的块更优优势?你更喜欢哪个方式?
这确实是一个非常好的问题,我几乎每次都会提该问题,用于检查面试者是否会考虑由于锁定带来的性能开销。因为锁定仅仅在创建实例时才有意义,然后其他时候实例仅仅是只读访问的,因此只同步必要的块的性能更优,并且是更好的选择。
4)什么是单例模式的延迟加载或早期加载?你如何实现它?
这是和Java中类加载的载入和性能开销的理解的又一个非常好的问题。我面试过的大部分面试者对此并不熟悉,但是最好理解这个概念。
5) Java平台中的单例模式的实例有哪些?
这是个完全开放的问题,如果你了解JDK中的单例类,请共享给我。
6) 单例模式的两次检查锁是什么?
7)你如何阻止使用clone()方法创建单例实例的另一个实例?
该类型问题有时候会通过如何破坏单例或什么时候Java中的单例模式不是单例来被问及。
8)如果阻止通过使用反射来创建单例类的另一个实例?
开放的问题。在我的理解中,从构造方法中抛出异常可能是一个选项。
9)如果阻止通过使用序列化来创建单例类的另一个实例?
又一个非常好的问题,这需要Java中的序列化知识并需要理解如何使用它来序列化单例类。该问题是开放问题。
10) Java中的单例模式什么时候是非单例?
下面是英文:
Singleton pattern is one of the most common patterns available and it’s also used heavily in Java. This is also one of my favorite interview question and has lots of interesting follow-up to digg into details , this not only check the knowledge of design pattern but also check coding , multithreading aspect which is very important while working for a real life application.
In this short java interview tutorial I have listed some of the most common question asked on Singleton pattern during a Java Interview. I have not provided the answers of these questions as they are easily available via google search but if you guys need I can try to modify this tutorial to include answers as well.
So question starts with what is Singleton? Have you used Singleton before?
Singleton is a class which has only one instance thought out the application and provides a getInstance() method to access the singleton instance.