1.请列举出在 JDK 中几个常用的设计模式?

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

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

代码可用性的延伸

3.Java 中什么叫单例设计模式?请用 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 中你不能继承两个类,但当你使用 接口时,你的类就可以同时拥有多个不同的行为。 在一些对时间要求比较高的应用中,倾向于使用抽象类,它会比接口稍快一点。 如果希望把一系列行为都规范在类继承层次内,并且可以更好地在同一个地方进行编码,那 么抽象类是一个更好的选择。有时,接口和抽象类可以一起使用,接口中定义函数,而在抽 象类中定义默认的实现。

10道必备的设计模式面试题(值得收藏)相关推荐

  1. 金三银四,50道必备的Python面试题(建议收藏)

    在过去的2020年,Python赢得了年度TIOBE编程语言奖,成为过去一年最受欢迎的编程语言.在数据科学和机器学习等领域中,被广泛使用. 正值"金三银四"招聘季,小F给大家整理了 ...

  2. 10道海量数据处理的面试题

    说明:本文分为俩部分,第一部分为10道海量数据处理的面试题,第二部分为10个海量数据处理的方法总结. 出处:http://blog.csdn.net/v_JULY_v. 第一部分.十道海量数据处理面试 ...

  3. 分享10道常考Java面试题及答案

    转载自   分享10道常考Java面试题及答案 Hi,大家好,今天给大家分享10道常考的Java面试题及答案,涉及到Java中的10个方面.每个领域一道题.希望你能有收获. <面向对象>什 ...

  4. 10道棘手的Java面试题,看看你能答对几个?

    昨晚看了几个老外分享的面试题,还挺有意思的.下面我们分两期来一起看看都是些怎么样的问题难到了老外?如果是你,是否可以都答对呢? 如果您对原文感兴趣,也可以通过这个链接查看:https://levelu ...

  5. 10道必会jQuery面试题-蛙课网

    JavaScript是客户端脚本的标准语言,而jQuery使得编写JavaScript更加简单,作为java程序员,在开发工作中免不了使用jQuery框架,所以jQuery就成为了面试中会被考察的一部 ...

  6. 50道必备的Python面试题 (建议点赞)

    在过去的2021年,Python赢得了年度TIOBE编程语言奖,成为 过去一年最受欢迎的编程语言.在数据科学和机器学习等领域中,被广泛使用. 备战"金三银四",子冉给大家整理了50 ...

  7. 这 10 道 Spring Boot 常见面试题你需要了解下

    点击上方"方志朋",选择"置顶或者星标" 你的关注意义重大! 本文转载于公众号:Java团长 1.什么是Spring Boot? 多年来,随着新功能的增加,sp ...

  8. 分享 10 道 Nodejs 进程相关面试题

    通过对以下 10 个面试题的分享,助您更好的理解 Node.js 的进程和线程相关知识 作者简介:五月君,Nodejs Developer,热爱技术.喜欢分享的 90 后青年,公众号 "No ...

  9. 100道接口测试面试题值得收藏..

    HTTP, HTTPS协议 什么是DNS HTTP协议 怎么抓取HTTPS协议 说出请求接口中常见的返回状态码 HTTP协议请求方式 HTTP和HTTPS协议区别 HTTP和HTTPS实现机有什么不同 ...

最新文章

  1. 《javascript高级程序设计》笔记:变量对象与预解析
  2. [ACM_几何] Pipe
  3. CA AutoSys Workload Automation r11 Quick Resource Guide
  4. 【Programming Clip】06、07年清华计算机考研上机试题解答(个别测试用例无法通过)...
  5. Autofac框架初识与应用
  6. python无法使用1号gpu_详解tensorflow2.x版本无法调用gpu的一种解决方法
  7. c++ udp通信_Web 通信协议,你还需要知道:SPDY 和 QUIC
  8. Mysql常用分组聚合函数(统计行的数量、最大值、最小值、平均值、求和)
  9. UVA 11992 - Fast Matrix Operations(段树)
  10. Oracle 20c 新特性:持久化内存数据库 - Persistent Memory Database
  11. 水果手绘插画素材|一眼就想吃了!
  12. 头条限流是什么原因_抖音为什么会被限流?被限流了如何补救?
  13. 深海迷航创造模式火箭怎么飞_深海迷航被玩成养鱼游戏 奇葩玩家的养殖之路...
  14. Spark 3.0 发布了,代码拉过来,打个包,跑起来!| 附源码编译
  15. python3 messagebox_如何在Python3.4中正确实现tkMessageBox?
  16. NYOJ——————数的长度(斯特林公式的应用)
  17. python图片保存pdf_python将图像保存为pdf及图片
  18. 【备忘录】UTM坐标系与经纬度转换 MATLAB C语言
  19. 计算机教师评语中职,中职期末评语
  20. excel文件下载下来损坏 js_java – React excel文件下载损坏

热门文章

  1. 一键下载2018年PPT合集+送58本运营手册
  2. 深度卷积神经网络演化历史及结构改进脉络总结
  3. 哈佛学生的4年大学生活
  4. PHP与Python的比较 (PHP vs Python)
  5. 智慧新零售网络解决方案,助力新零售企业数智化转型
  6. linux压测工具stress安装使用
  7. mybatis框架详解
  8. WMI查看远程服务器进程
  9. 什么是IPAM(IP地址管理)?
  10. 敬业签安卓手机便签文本中英文翻译功能如何使用?