Java基础题(1)

1. 继承和实现的区别

       继承:如果有多个类的某个部分的功能相同,那么就可以抽象出来一个类,把他们相同的部分都放在一个类里,让他们都继承这个类。

       实现:多个类处理目标是一样的,但是处理的方式不一样,就是可以定义一个接口,即是一个标准,让他们实现这个接口,各自实现自己具体的处理方法来处理目标

    两者的联系:继承和接口都能实现代码的重用,提高开发效率

    两者的区别:(1)修饰不同:实现使用的是implement,继承使用的是extends

                          (2) 数量不同:java中的接口支持多继承,但是类不支持(继承具有单一性),一个类只能继承一个类,但是可                                                           以实现多个接口。

                         (3)调用不同:某个类实现接口之后,一定要实现接口中的抽象方法, 继承想调用哪个方法就调用哪个方法

                          (4)属性不同:在接口中只能定义全局常量,和无实现的方法 ; 继承中可以定义属性,常量,变量等等

 

2. list 和 map 区别

 list:是存储单列数据的集合,存储的数据时有序并且可以重复的

  map:存储双列数据的集合,以key-value的形式,存储的数据时无序的,key值不能重复,value可以重复

 

3.  map 和hashMap的区别

        map是接口,一次存储两个对象,一个键对象,一个值对象

         hashmap的map接口的实现类,使用了哈希算法对键去重复,效率高,但无序

 

4.  谈谈你对spring的理解

        Spring是一个轻量级的Ioc和Aop容器框架

        控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。

        面向切面的编程(AOP):Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。

       容器:Spring 包含并管理应用中对象的生命周期和配置。

       MVC框架:Spring的WEB框架是个精心设计的框架,是Web框架的一个很好的替代品。

      事务管理:Spring 提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务(JTA)。

      异常处理:Spring 提供方便的API把具体技术相关的异常(比如由JDBC,Hibernate or JDO抛出的)转化为一致的                                         unchecked 异常。    
 

5.  Java加载机制

      javac(编译)-------------》java(类加载和执行)

      JVM把class文件加载到内存,并对数据进行校验、解析和初始化,最终形成JVM可以直接使用的Java类型的过程

      加载--》链接---》初始化

       1.加载:将class文件字节码内容加载到内存中,并将这些静态数据转换成方法去中的运行时数据结构,在队中生成一个代表这个类的java.lang.Class对象,作为方法区类数据的访问入口。

       2.链接:将JAVA类的二进制代码合并到JVM的运行状态之中的过程

                 验证:文件格式验证、元数据验证、字节码验证(确保字节码可以安全的被java虚拟机执行)、符号引用验证

                 准备:这一阶段就是正式为类变量分配内存初始值的阶段,都是在方法区分配。此处的初始值不是程序的字面量,而是系统给定的初始值(如int分配4个字节并赋值为0,long分配8字节并赋值为0;)

                解析:该阶段是将常量池中的符号引用转化为直接引用的阶段,主要针对类或者接口、字段、类方法、接口方法四类的符号引用解析(比如 A类中的a方法引用了B类中的b方法,那么它会找到B类的b方法的内存地址,将符号引用替换为直接引用(内存地址)。         

       3.初始化

             初始化就是执行类的构造器的阶段

 

6.  拦截器和过滤器的区别

          过滤器:依赖于servlet容器,可以对几乎所有请求进行过滤,一个过滤器只能在容器初始化时调用一次,使用过滤器的目的是过滤一些操作,获取我们想要获取的数据(字符编码过滤器)

         拦截器:依赖于Web框架,在实现上基于java反射机制,属于面向切面编程的一种运用,一个拦截器在一个controller声明周期之内可以多次调用,缺点是只能对controller请求进行拦截,对其他一些比如直接访问静态资源的请求则没办法进行拦截处理

          区别: ①过滤器可以对几乎所有的请求起作用,只能在请求的前后使用,而拦截器只能对action请求起作用,可以详细到                                每个方法

                      ②过滤器是基于回调函数(doFilter),拦截器是基于Java反射

                      ③ 拦截器依赖web容器,过滤器依赖servlet容器。

                      ④ 在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。

                      ⑤ Filter在只在Servlet启动前后起作用。而拦截器能够深入到方法前后、异常抛出前后等,可以访问action上下                                   文值栈里的对象,而过滤器不能访问。

 

    7.  AOP和OOP的区别   

       AOP和OOP是面向不同领域的两种设计思想     

       AOP:面向切面编程,spring框架中利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,主要功能是:日志记录,性能统计,事务处理,异常处理

       OOP:面向对象编程,核心思想是针对业务处理过程的实体及其属性和小那个我进行抽象封装,以获得更加清晰高效的逻辑单元划分

        区别:面向目标不同:OOP是免息名词领域,AOP是面向动词领域

                   思想结构不同:OOP是纵向结构,AOP是横向结构

                   注重方面不同:OOP注重业务逻辑单元的划分,AOP偏重业务处理过程的某个步骤

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值