java面试之设计篇

news2024/11/24 19:31:10

一、基础

1.六大设计原则

  • 单一职责原则

一个类只专注于做一件事;高内聚,低耦合;

  • 开闭原则

对拓展开放,对修改关闭(尽可能不动原有代码进行拓展);
高内聚,低耦合;
为达到目的,需对系统进行抽象化设计(关键);

  • 里氏替换原则(LSP)

子类可以替换父类。属于代码规范。
(1)子类必须实现父类的抽象方法,单不得重写父类的非抽象方法。
(2)子类中可以增加自己的特有方法。
(3)子类可以重载父类方法,单不能覆盖
(4)子类实现抽象方法时,返回值可以是父类返回值的子类
这里是引用

  • 依赖倒置原则

面向接口编程,依赖于抽象而不依赖于具体类

  • 接口隔离原则

使用多个专一功能的接口比使用一个总接口要好;
一个接口不能过于臃肿;
高内聚可以使一个软件功能拓展时,修改的压力不会影响到别的对象去。

  • 迪米特法则(最少知识原则)

对象与对象直接应该使用尽可能少的方法来关联,避免千丝万缕的关系;
低耦合;类知道其他类应尽量少;类可以访问其他类的方法或属性也应尽量少;

打破设计原则的设计模式统计:
在这里插入图片描述

2.设计模式

1. 创建型模式

  • 工厂模式(Factory Pattern)
  • 抽象工厂模式(Abstract Factory Pattern)
  • 单例模式(Singleton Pattern)
  • 建造者模式(Builder Pattern)
  • 原型模式(Prototype Pattern)
    2. 结构型模式
  • 适配器模式(Adapter Pattern)
  • 桥接模式(Bridge Pattern)
  • 过滤器模式(Filter、Criteria Pattern)
  • 组合模式(Composite Pattern)
  • 装饰器模式(Decorator Pattern)
  • 外观模式(Facade Pattern)
  • 享元模式(Flyweight Pattern)
  • 代理模式(Proxy Pattern)
    3. 行为型模式
  • 责任链模式(Chain of Responsibility Pattern)
  • 命令模式(Command Pattern)
  • 解释器模式(Interpreter Pattern)
  • 迭代器模式(Iterator Pattern)
  • 中介者模式(Mediator Pattern)
  • 备忘录模式(Memento Pattern)
  • 观察者模式(Observer Pattern)
  • 状态模式(State Pattern)
  • 空对象模式(Null Object Pattern)
  • 策略模式(Strategy Pattern)
  • 模板模式(Template Pattern)
  • 访问者模式(Visitor Pattern)
    4. 行为型模式
  • MVC 模式(MVC Pattern)
  • 业务代表模式(Business Delegate Pattern)
  • 组合实体模式(Composite Entity Pattern)
  • 数据访问对象模式(Data Access Object Pattern)
  • 前端控制器模式(Front Controller Pattern)
  • 拦截过滤器模式(Intercepting Filter Pattern)
  • 服务定位器模式(Service Locator Pattern)
  • 传输对象模式(Transfer Object Pattern)

3.数据结构概述

数据结构是计算机存储、组织数据的方式;通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构的优良将直接影响着我们程序的性能;常用的数据结构有:数组(Array)、栈(Stack)、队列(Queue)、链表(Linked List)、树(Tree)、图(Graph)、堆(Heap)、散列表(Hash)等;

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/144132.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电力系统|基于分布式高斯-牛顿方法结合置信传播 (BP) 的概率推理方法的非线性状态估计 (SE) 模型(Matlab代码实现)

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥 📝目前更新:🌟🌟🌟电力系统相关知识,期刊论文&…

新考纲下的PMP考试有多难?

一,2022新考纲PMP考试有多难? PMP考试被认为是最难的项目管理考试之一,主要是因为其庞大的教学大纲、所需的投入的精力、所问问题的类型和长度、考试时间和答案选择。它测试候选人对项目管理技能和耐心水平的深入了解。这并不意味着不可能通…

舆情监测是什么技术,网络舆情监测技术操作规范?

网络舆情监测是对互联网上公众的言论和观点进行监视和预测的行为,随着互联网的发展,舆情监测已经是企业日常重要工作,对于企业来说是非常重要的,接下来TOOM舆情监测带您了解舆情监测是什么技术,网络舆情监测技术操作规…

基于Python卷积神经网络的动物识别系统源码,动物检测系统源码,宠物识别系统源码

毕设系列-基于卷积神经网络的动物识别系统 完整代码下载地址:基于Python卷积神经网络的动物识别系统源码 上期评论区有好兄弟留言想看动物检测系统,那咱们这期检测系列就更新动物检测系统,并且在之前功能的基础之上添加了计数的功能&#x…

SD3403/SS928V100 移植Yolo模型

1.前言参考的文档名称为《驱动和开发环境安装指南》,首先安装Ubuntu18.04 系统,这次为了方便起见重新做了一个虚拟机,也建议这样做,因为装的很多软件都有版本的要求,避免版本更改导致的别的软件不能运行,单…

ThinkPHP5漏洞分析之SQL注入(七)

说明 该文章来源于同事lu2ker转载至此处,更多文章可参考:https://github.com/lu2ker/ 文章目录说明0x00 从?s是个啥开始0x01 模型/控制器/方法的处理0x02 漏洞原因0x03 参数的获取?参考链接:Mochazz/ThinkPHP-Vuln/ 影响版本&am…

ThinkPHP5之文件包含审计分析(六)

说明 该文章来源于同事lu2ker转载至此处,更多文章可参考:https://github.com/lu2ker/ 文章目录说明method方法调用链:程序启动时:后门技巧利用method的任意方法调用,调用构造函数__construct,且调用时会传…

同盾科技 x TiDB丨实时数据架构为风控智能决策保驾护航

同盾科技是中国领先的人工智能科技企业。为了确保服务的低延迟和高可用性,同盾的技术团队不断寻找最佳的技术架构。经过长时间调研,他们最终选择了新一代分布式数据库 TiDB 作为离线层的核心数据库,基于 TiDB 打造的实时数据架构为风控智能决…

Java中常用API总结(3)—— Runtime类(含实例解读)

Runtime类一、前言二、概述1.API帮助文档2.概述三、常用方法1.获取当前系统的运行环境对象1️⃣格式2️⃣实例2.获取CPU总线程数1️⃣格式2️⃣实例3.能够获取总内存大小(单位byte)1️⃣格式2️⃣实例4.已经从系统中获取总内存大小(单位byte)1️⃣格式2️⃣实例5.剩余内存大小1…

【开源项目】Sa-Token快速登录(使用+源码解析)

什么是Sa-Token 官网&#xff1a;https://sa-token.dev33.cn Sa-Token 是一个轻量级 Java 权限认证框架&#xff0c;主要解决&#xff1a;登录认证、权限认证、Session会话、单点登录、OAuth2.0、微服务网关鉴权 等一系列权限相关问题。 快速使用 引入Maven依赖 <!-- w…

有奖征集丨大数据/人工智能模型开发征集

大数据人工智能模型开发征集 为助力构建创新型人才培养模式&#xff0c;培养具有创新精神和实践能力的高素质智能技术人才&#xff0c;激发学生积极参与数据科学研究、技术开发、数据学科竞赛等各类社会实践活动的创新热情。依托模型交易平台&#xff0c;为学生提供自主学习…

认识Linux系统结构

Linux 系统一般有 4 个主要部分&#xff1a;内核、shell、文件系统和应用程序。内核、shell 和文件系统一起形成了基本的操作系统结构&#xff0c;它们使得用户可以运行程序、管理文件并使用系统。 Linux内核 内核是操作系统的核心&#xff0c;具有很多最基本功能&#xff0c;…

linux系统中进一步理解设备树

第一&#xff1a;前言 大家好&#xff0c;我是ST。 目录 第一&#xff1a;前言 第二&#xff1a;框图 第三&#xff1a;体验设备树 第四&#xff1a;实验过程分析 第五&#xff1a;实验代码 1、应用程序ledtest.c&#xff1a; 2、驱动层leddrv.c 3、硬件层&#xff1a…

不忘初心,坚持创作和分享,做自己喜欢的事 - 2022 年回顾

不知不觉&#xff0c;来到 Elastic 已经三年多了。在 Elastic 的三年&#xff0c;是疫情发生的三年。对很多人来说&#xff0c;疫情对我们的工作和学习都有很大的变化。好在我还能静下心来&#xff0c;每天坚持学习&#xff0c;不断地创作。记录下来自己的学习及成长经历。我学…

苹果电脑数据回复Aiseesoft Data Recovery

苹果电脑照片误删了怎么找回&#xff0c;数据丢失怎么办&#xff1f;Aiseesoft Data Recovery是专业数据恢复软件&#xff0c;能够帮助你恢复几乎所有删除/丢失的文件&#xff0c;如照片&#xff0c;文件&#xff0c;电子邮件&#xff0c;音频&#xff0c;视频且支持从计算机&a…

C语言深度剖析指针

文章目录 一、指针简单介绍 二、进阶指针的详解 2、1 字符指针 2、2 指针数组 2、3 数组指针 2、3、1 数组指针的定义以用法 2、3、2 数组名和&数组名的区别 2、3、3 数组指针的用法 2、4 函数指针 2、4、1 函数指针的解释 2、4、2 函数指针的举例分析 2、5 函数指针数组 2…

Python 图片转换(Image Conversion) (JPG ⇄ PNG/JPG ⇄ WEBP)

这里我们将使用 PIL&#xff08;Python Imaging Library&#xff09;或 pillow 库&#xff0c;它在 Python 中广泛用于图像处理&#xff0c;Python Imaging Library 中最重要的类是在Image同名模块中定义的类。您可以通过多种方式创建此类的实例&#xff1b;通过从文件加载图像…

高通开发系列 - usb和adb服务启动流程

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 初始化usb相关服务启动adbd服务adbd服务adb devices -l命令串口号丢失问题初始化usb相关服务 /lib/systemd/system/usb.service /etc…

基于yolov5-v7.0开发构建裸土实例分割检测识别模型

yolov5在v7.0的版本中加入了对图像实例分割的全面支持&#xff0c;这里主要就是想基于v7.0的分支来开发构建裸土分割模型&#xff0c;其实在实际计算的时候模型是可以连带着检测任务一起输出结果的&#xff0c;这里我从结果形式上面直观来看应该就是在推理阶段直接基于分割的结…

回顾2022年的历程,展望2023年目标

这里写目录标题回顾2022年博客之星你参加了吗&#xff1f;学习方面写博客方面在涨粉丝方面展望2023回顾2022年 时间如梭&#xff0c;转眼间已经2023年了。 你开始做总结了吗&#xff1f; 博客之星你参加了吗&#xff1f; 这是 2022 博客之星 的竞选帖子&#xff0c; 请你在这…