面试题之一(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方面的内容,先放放。
面试题之一(Spring和堆栈和逻辑运算符)的更多相关文章
- J2EE进阶(十四)超详细的Java后台开发面试题之Spring IOC与AOP
J2EE进阶(十四)超详细的Java后台开发面试题之Spring IOC与AOP 前言 搜狐畅游笔试题中有一道问答题涉及到回答谈谈对Spring IOC与AOP的理解.特将相关内容进行整理. ...
- 【笔试题】Spring笔试题
spring笔试题 1.Spring支持的事务管理类型 Spring支持两种类型的事务管理: 编程式事务管理:这意味你通过编程的方式管理事务,给你带来极大的灵活性,但是难维护. 声明式事务管理:这意味 ...
- 互联网大厂Java面试题集—Spring boot面试题(一)
Spring Boot 需要独立的容器运行吗? 可以不需要,内置了 Tomcat/ Jetty 等容器.通过pom.xml中导入依赖: <!--spring-boot-starter-web:代 ...
- Java精选面试题之Spring Boot 三十三问
Spring Boot Spring Boot 是微服务中最好的 Java 框架. 我们建议你能够成为一名 Spring Boot 的专家. 问题一: Spring Boot.Spring MVC 和 ...
- java面试题:Spring
Spring 面试时,最好能结合底层代码说出IOC,AOP或Spring MVC的流程,能说出拦截器的底层. 如果看过Spring的源码,并能结合设计模式表达,是很大的加分项. IOC Q:讲一下IO ...
- 面试题之spring
一.Spring的理解 Spring是一个轻量级的容器,非侵入性的框架.最重要的核心概念是IOC,并提供AOP概念的实现方式,提供对持久层,事务的支持,对当前流行的一些框架(Struts,Hibern ...
- JAVA面试题:Spring中bean的生命周期
Spring 中bean 的生命周期短暂吗? 在spring中,从BeanFactory或ApplicationContext取得的实例为Singleton,也就是预设为每一个Bean的别名只能维持一 ...
- java面试题之----spring MVC的原理和MVC
1.什么是mvc? 1.1原始比较初级的设计模式: 1.2 MVC设计模式 2MVC设计模式的优势与核心在于其能解耦和: 传统的设计模式相当于是一个串联的设计,只要其中一个环节出了问题便会使下一环节中 ...
- java面试题之----spring与struts2的比较
我们从以下几个维度来区分两者的概念: 1. 机制:spring mvc的入口是servlet,而struts2是filter. 补充几点知识: < Filter 实现javax ...
随机推荐
- 【微信小程序】---授权登陆---【巷子】
Page({ onLoad: function() { var that = this; // 查看是否授权 wx.getSetting({ success: function(res) { if ( ...
- 关于keyGenerator,KeyPairGenerator,SecretKeyFactory的解析
Java加密的常用的加密算法类型有三种 1单向加密:也就是不可逆的加密,例如MD5,SHA,HMAC 2对称加密:也就是加密方和解密方利用同一个秘钥对数据进行加密和解密,例如DES,PBE等等 3非对 ...
- PyCharm+Eclipse共用Anaconda的数据科学环境
1.安装anaconda2 安装好之后,本地python环境就采用anaconda自带的python2.7的环境. 2.安装py4j 在本地ctrl+r打开控制台后,直接使用pip安装py4j,因为a ...
- 什么是安全散列算法SHA256?
安全散列算法SHA(Secure Hash Algorithm)是美国国家安全局 (NSA) 设计,美国国家标准与技术研究院(NIST) 发布的一系列密码散列函数,包括 SHA-1.SHA-224.S ...
- is_file file_exists microtime performance
对项目中旧代码的疑问 } elseif (substr($class_name, 0, 6) == 'OAuth2') { $file_name = $C->INCPATH . 'classes ...
- Python装饰器与面向切面编程(转)
add by zhj: 装饰器的作用是将代码中可以独立的功能独立出来,实现代码复用,下面那个用于统计函数运行时间的装饰器就是很好的例子,我们不用修改原有的函数和调用原有函数的地方,这遵循了开闭原则.装 ...
- ssm框架整合shiro
1.导入shiro相应jar包,也可下载shiro-all.jar; 2.web.xml添加shiroFilter配置,类似于mvc <!-- shiro 安全过滤器--> <fil ...
- SQL Server中灾难时备份结尾日志(Tail of log)的两种方法
转自:http://www.cnblogs.com/CareySon/archive/2012/02/23/2365006.html SQL Server中灾难时备份结尾日志(Tail of log) ...
- Django +uwsgi+python3+nginx + mysql 部署
环境: 服务器ip:192.168.0.110 centos服务器 6.4 + mysql 5.6 + django1.11 +nginx 1.13.7 + uwsgi 2.0.18 uwsgi介绍 ...
- SQLAlchemy技术文档(中文版)(全)
原文链接:http://www.cnblogs.com/iwangzc/p/4112078.html(感谢作者的分享) sqlalchemy 官方文档:http://docs.sqlalchemy.o ...