文章目录

  • 1. Java创建对象有哪四种方式?
  • 2. 什么是maven?maven的核心功能有哪些?
  • 3. 什么是MVC?说说分层的好处。
  • 4. Spring的两大核心技术是什么?
  • 5. 什么是IOC/DI?
  • 6. 谈谈面向对象编程与面向接口编程的区别。
  • 7. 什么是反射?说说反射是如何应用到spring框架上。
  • 8. 说说java 解析xml有哪些技术?
  • 9. 抽象类与接口的区别。
  • 10. 谈谈表单的同步提交与异步提交的区别。

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选项去实现提交,提交的表单内容不会发生锁死,浏览器任然可以干别的事情。
  • 目前企业项目,大多数使用异步提交方式,很少使用同步提交。

问题小结(二)——maven的核心功能、面向对象编程和面向接口编程的区别、抽象类和接口的区别等相关推荐

  1. 面向对象编程和面向接口编程的区别

    随记 说实话,没有一定编程基础,这两个还真的是很难懂,因为对于IT编程思想很重要,如果有了编程思想,这两个的区别就很好理解了. 1.面向对象编程: 首先java就是面向对象编程,所谓在java中万事万 ...

  2. 阿里Java学习路线:阶段 1:Java语言基础-Java面向对象编程:第21章:抽象类与接口应用:课时94:案例分析二(绘图处理)

    案例分析二 考虑一个表示绘图的标准,并且可以根据不同的图形来进行绘制: interface IGraphical { // 定义绘图标准public void paint() ; // 绘图 } cl ...

  3. 【Java基础系列教程】第八章 Java面向对象详解(三)_抽象类、接口、内部类、深拷贝与浅拷贝

    一.JavaBean规范 1.1 什么是JavaBean JavaBeans是Java中一种特殊的类,可以将多个对象封装到一个对象(bean)中.特点是可序列化,提供无参构造器,提供getter方法和 ...

  4. Systemverilog:面向对象编程与面向过程编程区别

    在学习验证的同学中开始学习大家都很对"对象"这个概念一脸懵,尤其是这个概念在后续的学习中非常的重要.不理解的话,就是很难理解面向对象编程这个对象到底是什么?和面向过程的C语言到底有 ...

  5. Java中抽象类和接口的区别(来源二,原始来源不明确)

    在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类. 抽象类往往用来表征我们在对问题 ...

  6. 面向对象编程和面向过程编程的区别,以及优缺点

    面向对象编程 当需要实现一个功能的时候我们并不关心具体的步骤,而是找一个已经具备该功能的人来帮我们做事.那就用到了封装.继承和多态. 封装 - 把需要的功能放到一个方法中,别人只能调用这个方法 继承 ...

  7. 2021/1/26-每日三题第33弹:皮皮虾,我们走 !你知道什么是面向对象编程和面向过程编程吗 ???

    前言: 朋友们好啊,今天双双双双是一波神回复啊

  8. Go面向对象编程的三大特性

    Go面向对象编程的三大特性 1.基本介绍 Golang仍然有面向对象编程的继承,封装和多态的特性,只是实现的方式和其它OOP语言不一样. 2.面向对象编程思想-抽象 抽象: 在定义一个结构体类型时,实 ...

  9. 09-01 面向对象编程

    文章目录 二 类与对象 三 面向对象编程 3.1 类的定义与实例化 3.2 属性访问 3.2.1 类属性与对象属性 3.2.2 属性查找顺序与绑定方法 3.3.3 小结 #一 对象的概念 " ...

最新文章

  1. mac下找不到.m2文件解决方法
  2. 人工智能浪潮下的语音交互——VUI设计(基础篇)
  3. python 列表转字典
  4. (转)字典树原理+实现
  5. 第三次学JAVA再学不好就吃翔(part103)--BufferedInputStream和BufferOutputStream
  6. java 检测ip网速_java心跳测网速Demo
  7. 三星要带头了!考虑明年手机不送充电器
  8. 二月春风似剪刀的上一句是什么,二月春风似剪刀全诗赏析
  9. 玩转Linux进程控制命令
  10. MAC下maven本地仓库配置
  11. 2021版小新Pro14 Ubuntu 20.04 配置指南
  12. windows批量修改文件权限
  13. 快圣诞节了,用Python 送你一棵圣诞树
  14. html字体图标设置
  15. NCBI数据下载-sra
  16. 论文——多指标与机器学习算法相结合的中国县级玉米产量早期预测
  17. 利用随机森林算法实现Bank风险预测
  18. 09 | 校招简历投递渠道汇总与对比分析,选对渠道才能事半功倍
  19. 教你“如何巧看黑马测试视频,悄悄成为测试高手?”
  20. 学计算机买笔记本是i5 i7,i7一定比i5强?买电脑陷阱你一定要注意了

热门文章

  1. oracle 拼接sql 日期,动态SQL对日期处理注意事项
  2. 文本分类入门(十)特征选择算法之开方检验
  3. 20201021 《计算感知》第3节课 笔记
  4. python爬虫与数据分析实战27_Python网络爬虫与文本数据分析
  5. mysql行级安全_MySQL学习笔记(五):MySQL表级锁和行级锁
  6. 六级单词pdf_雅思提高词汇量是背单词还是大量刷题
  7. mysql 查数据 default无效_导入mysql数据的时候提示Field * doesn't have a default value解决方法...
  8. getplotlyoffline(‘http://cdn.plot.ly/plotly-latest.min.js‘)无法下载如何解决
  9. error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug...
  10. 【转载】redis开启远程访问