问题小结(二)

1. Java创建对象有哪四种方式?

  • new
 Students s1 = new Students()
  • clone
Students s2 = (Students) s1.clone();
  • 反射
 Class clazz = s1.getClass();
 Constructor constructor = clazz.getConstructor();
 Students s2 = (Students) constructor.newInstance();
  • 对象反序列化
 ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(file));
 out.writeObject(s1); //把s1对象写入到文件中。
 ObjectInputStream in = new ObjectInputStream(new FileInputStream(file));
 Students s2 = (Students) in.readObject();

2. 什么是maven?maven的核心功能有哪些?

定义:

  • maven是一种项目架构管理工具,用来方便导入jar包的,它的核心思想是:约定大于配置

核心功能:

  • 依赖管理
    举例:依赖service
<dependencies>
  <dependency>
          <groupId>com.shsxt</groupId>
          <artifactId>wc-service</artifactId>
          <version>0.0.1-SNAPSHOT</version>
  </dependency>
</dependencies>

groupId:项目隶属的实际项目-公司名称
artifactId:模块-项目名
version:项目当前所处的版本

平常需要的库,查找网站:http://mvnrepository.com/

然后复制到pom.xml文件中,记得写在project便签和dependencies中,保存就依赖了。

  • 模块管理
    在 Maven 中需要定义一个 parent POM 作为一组 module 的聚合 POM。在该 POM 中可以使用 标签来定义一组子模块。 parent POM 不会有什么实际构建产出。 而 parent POM 中的 build 配置以及依赖配置都会自动继承给子 module。
    例如子模块的pom.xml配置如下:
<modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.hbgc</groupId>
        <artifactId>base</artifactId>
        <version>1.0-SNAPSHOT</version>
        <!--父模块的pom.xml位置-->
        <relativePath>../base/pom.xml</relativePath>
    </parent>
    <groupId>com.hbgc</groupId>
    <artifactId>springbootdemo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springbootdemo</name>
    <description>Demo project for Spring Boot</description>
  • 插件管理
    添加插件,类似于添加依赖, 通过 GAV 来指定插件, 其中对于maven官方插件, 可以省略 GroupId。
    举例:
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-clean-plugin</artifactId>
            <version>3.0.0</version>
        </plugin>
    </plugins>
</build>
  • 部署管理
    在idea中,我们可以打开maven project视图。在maven的生命周期列表中进行测试、打包和安装。
    在这里插入图片描述
    此外,maven有三套生命周期:clean、default(最核心)、site

3. 什么是MVC?说说分层的好处。

MVC是一个架构,或者说是一个设计模式,它就是强制性使应用程序的输入,处理和输出分开。将一个应用程序分为三个部分:Model,View,Controller 即模型、视图、控制器。
Model:

  • 业务处理 :业务逻辑(Service)
  • 数据持久层:CRUD (Dao)

View:

  • 展示数据
  • 提供链接发起Servlet请求 (a,form,img…)

Controller (Servlet):

  • 接收用户的请求 :(req:请求参数、Session信息….)
  • 交给业务层处理对应的代码
  • 控制视图的跳转

分层是体现了MVC的设计模式。
分层的好处就是解耦,做到高内聚,低耦合

4. Spring的两大核心技术是什么?

(1) IOC(DI):Inverse of Controller,控制反转
Dependency Inject ,依赖注入。
两个是一回事,就是把猫叫了个咪。

如何理解依赖注入呢?
①创建对象永远不是new
②面向接口的编程

(2)AOP:面向切面编码

5. 什么是IOC/DI?

IOC:即控制反转,最基础的调用对象是通过new一个对象出来,例如:People p=new People(),我们Spring框架中的IOC即改变这种方式的调用,将后面“new People”转换为xml文件去调用,即使用第三者调用。

DI:即依赖注入,是具体的实现技术,是指由第三方组件负责将实例变量(实现类)传入到对象(调用类)中去。

6. 谈谈面向对象编程与面向接口编程的区别。

  • 首先,面向接口编程是附属于面向对象思想体系,属于其一部分。或者说,它是面向对象编程体系中的思想精髓之一。
  • 面向对象编程:java就是面向对象编程,所谓在java中万事万物皆对象,这是因为java中所有类的调用都是new出来的,其次面向对象用到三大特性,即封装、多态、继承。
  • 面向接口编程:在系统分析和架构中,分清层次和依赖关系,每个层次不是直接向其上层提供服务,而是通过定义一组接口,仅向上层暴露其接口功能,上层对于下层仅仅是接口依赖,而不依赖具体类。这样做对系统灵活性大有好处,当下层需要改变时,只要接口及接口功能不变,则上层不用做任何修改。
  • 总之:面向对象编程就是一堆对象,通过封装、继承、多态等更加有效的组织程序;面向接口编程就是一堆接口,通过接口规约对象的属性和方法,是面向对象一部分。

7. 什么是反射?说说反射是如何应用到spring框架上。

  • 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性。
  • 通过解析xml文件,获取到id属性和class属性里面的内容,利用反射原理获取到配置里面类的实例对象,存入到Spring的bean容器中。

8. 说说java 解析xml有哪些技术?

(1)DOM
优点:

  • 形成树结构,直观好理解,代码更容易编写
  • 解析过程中树结构保留在内存中,方便修改

缺点:

  • 当xml 文件较大时,对内存耗费比较大,容易影响解析性能并造成内存溢出

(2) SAX
优点:

  • 采用事件驱动模式,对内存耗费比较小
  • 适用于只需要处理xml中数据时

缺点:

  • 不易编码
  • 很难同时访问同一个xml中的多处不同数据

(3) JDOM

  • 仅使用具体类而不使用接口
  • API大量使用了Collections类

(4) DOM4J

  • JDOM的一种智能分支,它合并了许多超出基本xml文档表示的功能
  • 使用接口和抽象基本类方法,是一个优秀的Java XML API
  • 具有性能优异、灵活性好、功能强大和极端易用使用的特点
  • 是一个开放源代码的软件

DOM4J和JDOM在实际开发用的比较多,第三方的解析技术。

9. 抽象类与接口的区别。

使用抽象类是为了代码的复用,而使用接口是为了实现多态性,具体有如下区别:

(1)成员区别

 抽象类:
	成员变量:可以变量,也可以常量
	构造方法:有
	成员方法:可以抽象,也可以非抽象
 接口:
	成员变量:只可以常量
	成员方法:只可以抽象	

(2) 关系区别

类与类:
	 继承,单继承
类与接口:
	实现,单实现,多实现
接口与接口:
	继承,单继承,多继承	

(3)设计理念区别

抽象类: 	被继承体现的是:”is a”的关系。	抽象类中定义的是该继承体系的共性功能。
接口:	被实现体现的是:”like a”的关系。	接口中定义的是该继承体系的扩展功能。

比如:保温杯是水杯,具有保温功能。保温杯 extends 水杯 implements 保温,水杯是抽象类,保温是接口。

10. 谈谈表单的同步提交与异步提交的区别。

  • 表单的同步提交:表单默认的提交行为是同步提交,浏览器会锁死等待服务端的响应结果。
    无论服务端响应的是什么,都会直接把响应的结果覆盖掉当前页面。(服务器重定向只针对同步提交有效)
  • 表单的异步提交:form标签内部不再编写action和method,而是通过ajax的url和method选项去实现提交,提交的表单内容不会发生锁死,浏览器任然可以干别的事情。
  • 目前企业项目,大多数使用异步提交方式,很少使用同步提交。
发布了62 篇原创文章 · 获赞 2 · 访问量 2722

猜你喜欢

转载自blog.csdn.net/nzzynl95_/article/details/104318678