zoukankan      html  css  js  c++  java
  • 面试题之一(Spring和堆栈和逻辑运算符)

    1.&和&&区别?

          都是逻辑运算符,都是判断两边同时为真,否则为假;但&&当第一个为假时,后面就不执行,而&则还是要继续执行,直至结束;

    ———————————————————————————————

     

    2.java中栈和堆的区别?

          栈用来存放基本数据类型和引用变量,当有函数要调用的时候,通过压栈的方式创建新的栈帧,当函数调用结束时,会释放栈帧;   堆用来存放运行时创建的对象,每一个实例对应一个堆,而存放在垃圾回收器中的值将会自动回收(GC)。

    e.g:

    class Rectangle{
    
     private int length;
    
     private int width;
    
     public Rectangle(int length, int width){
    
     this.length=length;
    
     this.width=width;
    
     }
    
     public static void main(String args[]){
    
     Rectangle r=new Rectangle(3,5);
    
     }
    
    }

     

    //当程序从main方法开始执行之后,数据的存储关系如下:

     

    栈                                                 堆

    —————                            ———————

    i=1;                                      new Rectangle()

                    _ _ _ _ _ _  >>     3   length:5                 

    —————                           ————————

    局部变量在栈中,对象的引用也在栈中,具体类和参数值在堆中,用完

    就作为垃圾回收。

    —————————————————————————————————

     

    3.0 说说Spring的用途?

          解决业务逻辑层和其他的各个层的松耦合问题,降低客户端和服务器之间的耦合度、依耐性。(解决企业开发的复杂性)

    3.1 说说Spring核心?

            Spring的核心是控制反转、依赖注入。AOP(面向切面)相当于每个

    bean和bean之间的关系交给第三方容器进行管理。

     

    说明:传统项目分为三层:控制层、反转层、持久层(从上至下)。

     

    3.2 说SpringIOC、SpringAOP?

            SpringIOC相当于每个bean和bean之间的关系交给第三方容器进行管理。

    而这个容器就是面向切面的编程,或AOP是一种编程技术,允许程序模块化横向

    切割关注点,或横切典型的责任划分,如日志和事务管理。SpringAOP就是动态

    代理。

     

    3.3 Spring的底层实现机制是什么?

         用Dom4j(解析XML)+ java 反射机制。其中DOM4j其实就是解析XML,用反射机制实例化bean。

     

    3.4 SpringAOP用到了什么代理?

    JDK动态代理:对实现接口的类生成代理。(接口类代理)

    CGLib代理机制:对类生成代理。

     

    动态代理和静态代理?

    静态代理:有程序员创建或特定工具自动生成源代码,再对其编译。再程序运行前

    代理类的.class 文件就已经存在了。

    动态代理:在程序运行时,用反射机制动态创建而成。

     

    Spring用到了哪些注入方式?

    1)通过set方式注入
    
    public class Person{
    
     private Computer computer;//全局变量
    
     public void setComputer(Computer computer){
    
      this.computer=computer;
    
     }//set方法
    
     public void useComputer(){
    
      computer.start();
    
     }
    
     //用bean文件来注入
    
    }
    
    2)通过构造函数注入
    
    public class CPU{
    
     private String name;
    
     public CPU(String name){
    
      this.name=name;
    
     }
    
     public String getName(){
    
      return name;
    
     }
    
    }
    
    3)注入对象引用(通过对象引用传进来)
    
    public class Computer{
    
     private String name;
    
     public void start(){
    
      System.out.println(name+"computer run");
    
      System.out.println("CPU name is"+cpu.getName());
    
     }
    
    }
    
    4)通过工厂方式
    
    public class Singleton{
    
     private Singleton(){
    
             static final Singleton instance=new Singleton();
    
     }
    
     public static final Singleton getInstance(){
    
    
     }
    
    }

     

    Spring有哪些注解?

    @AutoWired(按类型注入)

    @Service(标示为注入为服务层)

    @Resourse(按名称注入)

    @Controller(标识控制器bean id)

    @RequestMapping(标示映射URL路径)

     

    简述Spring的优缺点

    1.

    2.可以使用容易提供的众多服务,入事务管理,消息服务等等

    3.容器提供单例模式支持

    4.容器提供了AOP技术,用它很容易实现入权限拦截,运行期监控

    等功能。

    5.容器提供了众多的辅助类,能加快应用开发。

    6.Spring对于主流的应用框架提供了集成支持,如JPA、hibernate等

    7.Spring属于低浸入式设计,代码的污染极低。

    8.独立于各种应用服务器

    9.Spring的DI机制降低了业务对象替换的复杂性。

    10.Spring的高度开放性,并不强制应用完全依赖于Spring,开发者可以自由选择

    Spring的部分或全部。

    缺点:用到了大量的反射(自动实例化内存),而反射很占内存,

    使得运行速度变慢。

    ——————————————————————————————————

    SpringMVC工作流程

    //涉及到了一些XML和servlet方面的内容,先放放。

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    成年人的世界没有那么多的童话,也没有那么多的逆袭。
  • 相关阅读:
    HTML5第二节
    HTML5在移动端开发的12大特性
    移动端开发遇到的坑
    html5 meta(移动端)介绍及使用
    CSS的margin塌陷(collapse)
    Block Demo
    设计模式之代理
    OC Block网上转载
    GCD之全局、主线程
    Spark SQL中 RDD 转换到 DataFrame
  • 原文地址:https://www.cnblogs.com/shijinglu2018/p/8521552.html
Copyright © 2011-2022 走看看