1. 单例模式定义与常见写法:单例模式要求一个类仅有一个对象实例,并提供全局访问点。常见写法有饿汉式、懒汉式、双重加锁验证、静态内部类、枚举等方式。 2. 重点实现方式剖析 - 双重加锁验证(DCL):先判断实例是否为空,为空时加锁,加锁后再次判断为空才创建对象,减少锁竞争以提升效率。不过存在指令重排问题,可能获取到未初始化完全的对象,在Java 5及后续版本,通过将实例变量声明为volatile可解决 。 - 静态内部类方式:借助JVM保证创建单例对象的线程安全与唯一性。外部类加载时,内部类不会立即加载,调用获取实例方法时才会加载并初始化单例对象,实现延迟加载,是较好的实现方法。 - 枚举方式:Effective Java作者推荐,是目前单例模式最佳实现。枚举初始化依靠static代码块,类加载时由JVM调度,线程安全。它还能防止反射和序列化破坏单例,反序列化通过Value方法查找枚举,而非新建对象。其他单例实现可在类上添加readResolve方法防止序列化破坏单例。

相关推荐

头像
06-28 16:18
已编辑
北京体育大学 测试工程师
面试官周末在外边玩呢,然后约我一边玩,一边儿面试。基本上就是先对我英语能力做了一个考察,然后他做了一下部门的相关的介绍,以及对候选人能力的要求,基本上需要有一定的测试思维,然后沟通能力,然后就是要有开发能力,因为需求迭代的比较快要跟开发一起联动配合做一些自动化的实现,就是有一个相关的需求,能够实现相关的自动化用例需要的能力就是Python和JAVA,可能有一部分的c,c#。一开始是英文做了些介绍,说了1min,然后就是对我自动化能力的了解,然后组里边的一些自动化框架,然后接口自动化的了解,对Python能力的了解。这块儿就是又问了一些数据结构的相关的问题,贪心和动态规划的区别,比如说广度优先遍历和深度优先遍历的区别,然后出了一个场景题,如果我有一个是8byte的字符串,然后有4000个这样的字符串,那么你的bfs,队列要到多长?然后还有就是Python和c#的相关的结合,你可能要用什么样的方法?再就是问我对天津的看法,想不想来?我说之前我在京东的时候还想去天津的京东科技呢。然后面了面人家没要我。然后最后我反问。他是从0~1搭建自动化框架,还是你去完善自动化框架,然后他说正在招一个测试的leader去进行架构设计,然后找几个骨干的自动化测试工程师去实现相关的需求。你最主要的就是开发能力,要可以把一个相关的需求实现到自动化的场景这样子基本的能力要有。目前团队有10个人这样子,但是自动化测试工程师相对来说会少一些,所以说需求的基本上是自动化测试的工程师。然后我再问,可没可能涉及到一些大模型评测,然后一些大模型的微调之类的相关的工作。他说这块儿我们team里也有专门的算法评测团队,这块儿如果你想做的话也可以和他们一起去做,但是微调在现在的阶段是没有的。然后我又问了一下,还有技术面吗?他说如果通过了的话,有我的boss,我的领导再给你面一轮技术面完了再就是HR面一共30分钟面试公司:联想岗位:software QA engineer问题:如上
查看9道真题和解析
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务