大数据基础面试题——设计模式面试题

1.请列举出在 JDK 中几个常用的设计模式?
单例模式(Singleton pattern)用于 Runtime,Calendar 和其他的一些类中。工厂模式(Factory pattern)被用于各种不可变的类如 Boolean,像 Boolean.valueOf,观察者模式(Observer pattern)被用于 Swing 和很多的事件监听中。装饰器设计模式(Decorator
design pattern)被用于多个 Java IO 类中。

2.什么是设计模式?你是否在你的代码里面使用过任何设计模式?
设计模式是世界上各种各样程序员用来解决特定设计问题的尝试和测试的方法。设计模式是代码可用性的延伸

3.Java 中什么叫单例设计模式?
单例模式重点在于在整个系统上共享一些创建时较耗资源的对象。整个应用中只维护一个特定类实例,它被所有组件共同使用。Java.lang.Runtime 是单例模式的经典例子。从 Java 5 开始可以使用枚举(enum)来实现线程安全的单例。

4.在 Java 中,什么叫观察者设计模式(observer design pattern)?
观察者模式是基于对象的状态变化和观察者的通讯,以便他们作出相应的操作。简单的例子就是一个天气系统,当天气变化时必须在展示给公众的视图中进行反映。这个视图对象是一个主体,而不同的视图是观察者。

5.使用工厂模式最主要的好处是什么?在哪里使用?
工厂模式的最大好处是增加了创建对象时的封装层次。如果你使用工厂来创建对象,之后你可以使用更高级和更高性能的实现来替换原始的产品实现或类,这不需要在调用层做任何修改。

6.举一个用 Java 实现的装饰模式(decorator design pattern)?它是作用于对象层次还是类层次?
装饰模式增加强了单个对象的能力。Java IO到处都使用了装饰模式,典型例子就是Buffered 系列类如 BufferedReader 和 BufferedWriter,它们增强了 Reader 和 Writer 对象,以实现提升性能的 Buffer 层次的读取和写入。

7.在 Java 中,为什么不允许从静态方法中访问非静态变量?
Java中不能从静态上下文访问非静态数据只是因为非静态变量是跟具体的对象实例关联的,而静态的却没有和任何实例关联。

8.设计一个 ATM 机,请说出你的设计思路?
比如设计金融系统来说,必须知道它们应该在任何情况下都能够正常工作。不管是断电还是其他情况,ATM应该保持正确的状态(事务) ,想想 加锁(locking)、事务(transaction)、错误条件(error condition)、边界条件(boundary condition) 等等。尽管你不能想到具体的设计,但如果你可以指出非功能性需求,提出一些问题,想到关于边界条件,这些都会是很好的。

9.在 Java 中,什么时候用重载,什么时候用重写?
如果你看到一个类的不同实现有着不同的方式来做同一件事,那么就应该用重写(overriding),而重载(overloading)是用不同的输入做同一件事。在 Java 中,重载的方法签名不同,而重写并不是。

10.举例说明什么情况下会更倾向于使用抽象类而不是接口?
接口和抽象类都遵循”面向接口而不是实现编码”设计原则,它可以增加代码的灵活性,可以适应不断变化的需求。下面有几个点可以帮助你回答这个问题:
在 Java 中,你只能继承一个类,但可以实现多个接口。所以一旦你继承了一个类,你就失去了继承其他类的机会了。
接口通常被用来表示附属描述或行为如:Runnable、Clonable、Serializable 等等,因此当你使用抽象类来表示行为时,你的类就不能同时是 Runnable 和 Clonable(注:这里的意思是指如果把 Runnable 等实现为抽象类的情况),因为在 Java 中你不能继承两个类,但当你使用
接口时,你的类就可以同时拥有多个不同的行为。
在一些对时间要求比较高的应用中,倾向于使用抽象类,它会比接口稍快一点。
如果希望把一系列行为都规范在类继承层次内,并且可以更好地在同一个地方进行编码,那么抽象类是一个更好的选择。有时,接口和抽象类可以一起使用,接口中定义函数,而在抽象类中定义默认的实现。



#设计模式##面试题#
全部评论
感谢分享的面试题库
1 回复 分享
发布于 2022-08-24 11:05 陕西

相关推荐

1. 请介绍你最近参与的一个复杂项目,你在其中负责哪些模块?遇到了哪些技术挑战?2. 针对一个高并发的搜索功能,你会从哪些维度设计测试用例?3. 搜索结果不准确,可能有哪些原因?如何系统性地排查?4. 你了解搜索系统的整体架构吗?比如微服务、ES、MySQL 各自承担什么角色?5. 如何验证推荐算法或排序策略是否生效?6. 接口自动化框架你是如何搭建的?用了哪些设计模式?7. 自动化测试如何与 CI/CD 流水线集成?请描述完整流程。8. 你们的自动化用例维护成本高吗?如何提升可维护性和稳定性?9. 如何设计一个可扩展、易维护的 UI 自动化框架?10. 自动化测试中如何处理动态元素、弹窗、验证码等问题?11. 有没有做过接口性能压测?使用什么工具?如何分析瓶颈?12. JMeter 中如何模拟真实用户行为进行阶梯加压?13. TPS 下降但 CPU 使用率不高,可能是什么原因?14. 如何监控和定位内存泄漏问题?15. 数据库慢查询如何发现和优化?测试人员能做什么?16. 如何做全链路压测?需要哪些前置条件?17. 你们的测试数据是如何准备和管理的?如何保证隔离性?18. 如何实现测试环境的数据一致性校验?19. 在微服务架构下,如何高效定位是哪个服务导致了问题?20. 有没有做过安全测试?如何测试 SQL 注入、XSS 等漏洞?21. 如何验证灰度发布是否成功?回滚机制是否有效?22. 线上出现偶发性 Bug,本地无法复现,你会怎么处理?23. 如何推动开发提高代码质量,减少低级 Bug?24. 你如何定义“测试完成”?上线前的准入和准出标准是什么?25. 测试左移具体落地时,你做了哪些工作?(如参与需求评审、契约测试等)26. 是否使用过契约测试(如 Pact)?在什么场景下引入?27. 如何评估自动化 ROI(投入产出比)?28. 团队中自动化覆盖率目标是多少?如何达成?29. 你如何带新人或推动团队测试规范建设?30. 未来三年,你希望在测试领域深入哪个方向?为什么?
查看30道真题和解析
点赞 评论 收藏
分享
评论
7
24
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务