前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >详解后端Java面试——OOA/D,UML,和XML

详解后端Java面试——OOA/D,UML,和XML

原创
作者头像
本人秃顶程序员
修改于 2019-05-20 02:28:31
修改于 2019-05-20 02:28:31
62800
代码可运行
举报
文章被收录于专栏:Java架构筑基Java架构筑基
运行总次数:0
代码可运行

点关注,不迷路;持续更新Java架构相关技术及资讯热文!!!

1、UML 是什么?常用的几种UML图?

统一建模语言(Unified Modeling Language,UML)又称标准建模语言;常用图包括:用例图,静态图(包括类图、对象图和包图),行为图,交互图(顺序图, 协作图),实现图。

2、编程题: 写一个Singleton(单例模式) 出来。

Singleton 模式主要作用是保证在Java 应用程序中,一个类Class 只有一个实例存在。举例:定义一个类,它的构造函数为private 的,它有一个static的private 的该类变量,在类初始化时实例话,通过一个public 的getInstance方法获取对它的引用,继而调用其中的方法。

第一种饿汉式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//饿汉式
public class Singleton {
    //私有化构造函数
    private Singleton() {
    }
    //创建一个对象
    private static Singleton instance = new Singleton();
    //提供公有方法返回该对象
    public static Singleton getInstance() {
        return instance;
    }
}
//欢迎加入Java高级架构进阶Qqun:963944895,私聊管理员免费领取Java架构学习视频、Java最新面试题、Java编程书籍

第二种懒汉式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//懒汉式
public class Singleton {
    //私有化构造函数
    private Singleton(){
    }
    //创建一个空对象
    private static Singleton instance = null;
    //创建公有方法调用,对象如果为空创建对象,否则直接返回当前对象
    public static synchronized Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}
//欢迎加入Java高级架构进阶Qqun:963944895,私聊管理员免费领取Java架构学习视频、Java最新面试题、Java编程书籍

3、Java 中常用的设计模式?简述工厂模式?

Java 中的23 种设计模式可以分为三类:

创建型模式(5种)

Factory( 工厂模式),Builder( 建造者模式), Factory Method(工厂方法模式),Prototype(原型模式),Singleton(单例模式)。

结构型模式(7种)

Facade(外观模式),Adapter(适配器模式), Bridge(桥接模式), Composite(组合模式),Decorator(装饰器模式), Flyweight(享元模式), Proxy(代理模式)。

行为型模式(11种)

Command(命令模式), Interpreter(解释器模式), Visitor(访问者模式),Iterator(迭代子模式), Mediator(中介者模式), Memento(备忘录模式),Observer(观察者模式),State(状态模式),Strategy(策略模式),Template Method(模板方法模式), Chain Of Responsibleity(责任链模式)。

工厂模式

工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例,通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。

23种模式简单说明

  • 单例模式:某个类只能有一个实例,提供一个全局的访问点。
  • 简单工厂:一个工厂类根据传入的参量决定创建出那一种产品类的实例。
  • 工厂方法:定义一个创建对象的接口,让子类决定实例化那个类。
  • 建造者模式:封装一个复杂对象的构建过程,并可以按步骤构造。
  • 原型模式:通过复制现有的实例来创建新的实例。
  • 适配器模式:将一个类的方法接口转换成客户希望的另外一个接口。
  • 组合模式:将对象组合成树形结构以表示“”部分-整体“”的层次结构。
  • 装饰模式:动态的给对象添加新的功能。
  • 代理模式:为其他对象提供一个代理以便控制这个对象的访问。
  • 亨元(蝇量)模式:通过共享技术来有效的支持大量细粒度的对象。
  • 外观模式:对外提供一个统一的方法,来访问子系统中的一群接口。
  • 桥接模式:将抽象部分和它的实现部分分离,使它们都可以独立的变化。
  • 模板模式:定义一个算法结构,而将一些步骤延迟到子类实现。
  • 解释器模式:给定一个语言,定义它的文法的一种表示,并定义一个解释器。
  • 策略模式:定义一系列算法,把他们封装起来,并且使它们可以相互替换。
  • 状态模式:允许一个对象在其对象内部状态改变时改变它的行为。
  • 观察者模式:对象间的一对多的依赖关系。
  • 备忘录模式:在不破坏封装的前提下,保持对象的内部状态。
  • 中介者模式:用一个中介对象来封装一系列的对象交互。
  • 命令模式:将命令请求封装为一个对象,使得可以用不同的请求来进行参数化。
  • 访问者模式:在不改变数据结构的前提下,增加作用于一组对象元素的新功能。
  • 责任链模式:将请求的发送者和接收者解耦,使的多个对象都有处理这个请求的机会。
  • 迭代器模式:一种遍历访问聚合对象中各个元素的方法,不暴露该对象的内部结构。

4、开发中都用到了那些设计模式?用在什么场合?

所谓设计模式,就是一套被反复使用的代码设计经验的总结(情境中一个问题经过证实的一个解决方案)。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式使人们可以更加简单方便的复用成功的设计和体系结构。每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作。

  • MVC模式,在JavaEE项目开发中主要用在表示层框架中,很好解决视图和流程控制。在项目中采用的Struts、SpringMVC等框架。
  • DAO模式,在项目开发中主要用在数据层,封装数据的访问操作,为业务层提供数据服务
  • IoC模式,在项目开发中业务层有大量对象,他们之间存在依赖关系,可以使用IoC模式减少他们之间的代码耦合,提高系统的可扩展性。实际项目中使用的Spring框架来实现业务组件的装配。
  • Observer模式,在Servlet的监听器中应用到了观察者模式。
  • singleton单例模式和Factory工厂模式结合使用在项目中无需使用者了解过多的细节就可获取有关的对象实例。比如Hibernate项目中通过SessionFactory来获取Session。
  • bridge模式,在项目中使用JDBC驱动访问数据库

5、你对软件开发中迭代的含义的理解。

软件开发中,各个开发阶段不是顺序执行的,各个阶段都是并行执行也就是迭代的意思。这样能更好的适应,开发中的需求变化,及人员的变动

6、XML 文档定义有几种形式?它们之间有何本质区别?解析XML 文档有哪几种方式?

  • 两种形式:dtd 以及schema;
  • 本质区别:schema 本身是xml 的,可以被XML 解析器解析(这也是从DTD上发展schema 的根本目的);
  • 解析方式
    • DOM解析: DOM的全称是Document Object Model,也即文档对象模型。在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称DOM树),应用程序正是通过对这个对象模型的操作,来实现对XML文档数据的操作。通过DOM接口,应用程序可以在任何时候访问XML文档中的任何一部分数据,因此,这种利用DOM接口的机制也被称作随机访问机制。
    • SAX解析:SAX的全称是Simple APIs for XML,也即XML简单应用程序接口。与DOM不同,SAX提供的访问模式是一种顺序模式,这是一种快速读写XML数据的方式。当使用SAX分析器对XML文档进行分析时,会触发一系列事件,并激活相应的事件处理函数,应用程序通过这些事件处理函数实现对XML文档的访问,因而SAX接口也被称作事件驱动接口。
    • JDOM解析:JDOM采用了Java中的Collection架构来封装集合,是Java爱好者更加熟悉的模式
    • DOM4J解析:xml解析器一次性把整个xml文档加载进内存,然后在内存中构建一颗Document的对象树,通过Document对象,得到树上的节点对象,通过节点对象访问(操作)到xml文档的内容

7、你在项目中用到了xml 技术的哪些方面?怎么实现的?

用到了数据存贮,信息配置两方面

  • 在做数据交换平台时,将不能数据源的数据组装成XML 文件,然后将XML 文件压缩打包加密后通过网络传送给接收者,接收解密与解压缩后再同XML 文件中还原相关信息进行处理。
  • 在做软件配置时,利用XML 可以很方便的进行,软件的各种配置参数都存贮在XML 文件中。

8、用jdom 解析xml 文件时如何解决中文问题?如何解析?

代码如下,用编码方式加以解决

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class DOMTest {
    // 文件路径
    private String outFile = "F:\people.xml";
    public static void main(String args[]) {
        new DOMTest();
    }
    public DOMTest() {
        try {
            // 1、获取DOM解析器工厂,以便产生解析器;2、获取DOM解析器,以便解析DOM
            DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
            Document doc = builder.newDocument();
            // 3.创建元素
            Element root = doc.createElement("老师");
            Element wang = doc.createElement("许");
            // 4.向指定元素节点中增加子元素节点或增加元素到子节点
            wang.appendChild(doc.createTextNode("我是许老师"));
            root.appendChild(wang);
            doc.appendChild(root);
            // 5.设置然后把DOM写回XML文件
            Transformer transformer = TransformerFactory.newInstance().newTransformer();
            // 6.指定Transformer应该使用的首选字符编码,将字符序列作为字节序列进行编码
            transformer.setOutputProperty(OutputKeys.ENCODING, "gb2312");
            // 7.指定Transformer是否可以添加额外的空白,同时输出
            transformer.setOutputProperty(OutputKeys.INDENT, "yes");
            transformer.transform(new DOMSource(doc),
                          new StreamResult(outFile));
        }
        catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
}
//欢迎加入Java高级架构进阶Qqun:963944895,私聊管理员免费领取Java架构学习视频、Java最新面试题、Java编程书籍

文件效果

写在最后


点关注,不迷路;持续更新Java架构相关技术及资讯热文!!!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java面试之 OOAD & UML
答:UML 是标准建模语言;常用图包括:用例图,静态图(包括类图、对象图和包图),行为图,交互图(顺序图,合作图),实现图。
全栈程序员站长
2022/08/04
3350
经典笔试题-OOA/D与UML篇
96、UML 是什么?常用的几种图?【基础】 答:UML 是标准建模语言;常用图包括:用例图,静态图(包括类图、对象图和包图),行为图,交互图(顺序图,合作图),实现图。
cwl_java
2020/02/18
6050
2019年228道Java中高级面试题(8),你会的有多少?
129、Java 中,Serializable 与 Externalizable 的区别?
程序员追风
2019/12/19
7690
2019年228道Java中高级面试题(8),你会的有多少?
Java面试系列21-xml
1.xml有哪些解析技术?区别是什么? 有DOM,SAX,STAX等 DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析
Java帮帮
2018/03/19
7310
Java学习笔记-全栈-Java基础-12-Java动态编程
1. 反射 什么是反射 在运行时判断任意一个对象所属的类。 在运行时构造任意一个类的对象。 在运行时判断任意一个类所具有的成员变量和方法。 在运行时调用任意一个对象的方法 获取泛型信息 处理注解 反射机制的实现要借助于4个类:class,Constructor,Field,Method; 反射调用流程: 对应类、构造器,对象、成员变量、方法等,都是 1.先用反射获得 2.使用反射提供的方法调用(而不是通过反射获得一个类之后就能直接使用该类调用该类下的方法) //获取类 User user = cla
devi
2021/08/18
4320
设计模式-面试
开放封闭原则:对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。
知识浅谈
2022/02/28
3750
从零开始学XML(修订版)
XML:extensiable markup language 被称作可扩展标记语言
Java3y
2019/08/27
2K0
从零开始学XML(修订版)
面试题 | 《Java面试题集》-- 第三套
varchar2分别在oracle的sql和pl/sql中都有使用,oracle 在sql参考手册和pl/sql参考手册中指出:oracle sql varchar2的最大支持长度为4000个字节(bytes);而 oracle plsql varchar2最大支持长度为32767个字节,注意此处的最大长度是指字节长度,而不是指字符个数
码神联盟
2018/10/08
6600
面试题 | 《Java面试题集》-- 第三套
2019秋招:460道Java后端面试高频题答案版【模块七:设计模式】
1. 设计模式虽然在面试中没有计算机网络协议和操作系统那么重要,但是也是会被经常问到的。设计模式除了在 JDK 和一些框架中被大量使用到外,在日常开发中也是很常见的。举个我实习遇到的例子:之前实习做过订单详情页,详情页有很多的按钮,比如:取消订单、再次购买、查看物流等等,我们就可以创建一个 ButtonFactory,然后根据不同的业务类型及订单状态进行页面按钮的组装工作。这样就避免了每种业务类型都需要创建一个按钮组装类的复杂工作,代码也显得清爽很多。
乔戈里
2019/09/30
8360
2019秋招:460道Java后端面试高频题答案版【模块七:设计模式】
2019Java面试代码与编程题
代码与编程题 135、写一个Singleton出来 Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。 一般Singleton模式通常有几种种形式: 第一种形式: 定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。 public class Singleton { private Singleton(){}
葆宁
2019/04/19
8640
Java面试题整理
Java面向对象 19. super()与this()的区别? This():当前类的对象,super父类对象。 Super():在子类访问父类的成员和行为,必须受类继承规则的约束 而this他代表当前对象,当然所有的资源都可以访问. 在构造函数中,如果第一行没有写super(),编译器会自动插入.但是如果父类没有不带参数的构造函数,或这个函数被私有化了(用private修饰).此时你必须加入对父类的实例化构造.而this就没有这个要求,因为它本身就进行实例化的构造. 而在方法中super和this使用的方法就差不多了.只不过super 要考虑是否能访问其父类的资源.
葆宁
2019/04/19
2.1K0
分享 Java 常见面试题及答案(下)
IO 是 Java 面试中一个非常重要的点。你应该很好掌握 Java IO,NIO,NIO2 以及与操作系统,磁盘 IO 相关的基础知识。下面是 Java IO 中经常问的问题。
程序员小猿
2021/01/18
1.1K0
分享 Java 常见面试题及答案(下)
经典笔试题-XML篇
102、XML 文档定义有几种形式?它们之间有何本质区别?解析XML 文档有哪几种方式?【基础】 答:
cwl_java
2020/02/17
6240
Java解析XML文件的四种方法「建议收藏」
【摘要】 可扩展标志语言(XML)在实现信息标准化、信息的交流与共享上有其独特的技术优势,因此受到了广泛的重视。本文先简单的介绍了XML基本知识,然后从XML应用入手总结了四种现今最常见的XML的解析方法,介绍了这四种方法的特点,其中包括优点与不足之处。最后给出了一个简单的案例来对这四种解析进行代码介绍。
全栈程序员站长
2022/09/06
21.8K0
xml解析技术概述和使用Jaxp对xml文档进行dom解析
用dom和sax对xml文档进行解析,可以使用已开发的xml解析开发包,我们直接调用即可。xml解析开发包有:Jaxp(最差)、Jdom(一般)、dom4j(最好)。
MonroeCode
2018/01/12
1.3K0
技术经验|Java-Web基础之XML解析JAXP-DOM
XML是标记型文档,js 使用 dom 解析标记型文档是根据 html 的层级结构,在内存中分配一个属性结构,把 html 的标签,属性和文本都封装成 document 对象、element 对象,属性对象、文本对象,node 节点对象。
六月暴雪飞梨花
2023/09/24
2510
技术经验|Java-Web基础之XML解析JAXP-DOM
java xml解析框架_JAVA解析xml的五种方式对比
本篇文章主要对比Java即系xml的五种方式,这五种方式各有利弊,大家可以看情况采用哪一种。
全栈程序员站长
2022/09/05
1.8K0
XML 的4种解析方式
该文章介绍了如何利用XPath在XML文档中查询信息。它首先介绍了XPath的基本概念,然后详细讲解了如何在Java中使用XPath进行查询。文章还介绍了一些实用的示例,包括如何查询XML文档中的节点值、如何获取特定的节点,以及如何利用XPath进行XML文档的遍历。此外,文章还探讨了XPath的常见问题和解决方法。
IT可乐
2018/01/04
5.1K0
XML 的4种解析方式
day23-xml解析
处理方式类似于流处理,边读取边解析,采用的是事件回调的方式,书写好用于处理响应事件的方法,进行解析,当进行读取时触发相应事件,执行对应方法
张哥编程
2024/12/13
1370
XML概念定义以及如何定义xml文件编写约束条件java解析xml DTD XML Schema JAXP java xml解析 dom4j 解析 xpath dom sax
本文主要涉及:xml概念描述,xml的约束文件,dtd,xsd文件的定义使用,如何在xml中引用xsd文件,如何使用java解析xml,解析xml方式dom sax,dom4j解析xml文件
noteless
2018/09/11
3.4K0
XML概念定义以及如何定义xml文件编写约束条件java解析xml   DTD XML Schema JAXP java xml解析 dom4j  解析 xpath dom sax
推荐阅读
相关推荐
Java面试之 OOAD & UML
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验