面试题之一(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()
r _ _ _ _ _ _ >> width: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方面的内容,先放放。
最新文章
- composer 报错:Your requirements could not be resolved to an installable set of packages 解决方法
- 关于Noise and Error主题的一些小知识
- 常见shell操作
- 在Ubuntu下编译Assimp库
- 第三题 有如下Student 对象,  private String name;       private int age;       private int score;   private String classNum;  其中,classNum&
- Cocos2d-x 的“HelloWorld” 深入分析
- java 一款可以与ssm框架完美整合的web报表控件
- PHP 获取ip地址
- Python中从B类中调用A类的方法。
- mysql 插入百万条数据
- Microsoft 机器学习产品体系对比和介绍
- Codeforces Round #534 (Div. 2)D. Game with modulo-1104-D(交互+二分+构造)
- QSS独门秘籍:subcontrol
- 【bzoj2875】 Noi2012—随机数生成器
- linux_一些shell命令分析记录
- collection 多态 会自动转型为子类 继承多态需要显示转型
- Java千百问_05面向对象(011)_引用传递和值传递有什么差别
- java代码-------多线程实例
- HTTP与IIS知识点
- idea一些文件如.xml 文件搜索不到的解决方法
热门文章
- python 读取一个目录下的所有目录和文件
- SQL Fundamentals || Single-Row Functions || 字符函数 character functions
- 各大互联网公司java开发面试常问问题
- 数据结构——栈(C语言实现)
- Guideline 2.1 - Information Needed
- REQUEST FORM 实例
- 《Mysql 索引》
- idea 创建的maven+spring+mybatis项目整合 报错无法创建bean
- vue中给请求到的数据对象加属性问题
- iOS 界面启动时,功能新特征显示