logo资料库

Java中高级面试题(月薪过万).pdf

第1页 / 共98页
第2页 / 共98页
第3页 / 共98页
第4页 / 共98页
第5页 / 共98页
第6页 / 共98页
第7页 / 共98页
第8页 / 共98页
资料共98页,剩余部分请下载后查看
Java基础
Java基本类型哪些,所占字节
java集合以及底层原理
四大作用域和九大内置对象
jsp和servlet的区别
servlet生命周期
cookie和session区别以及JWT与Session的差异
JWT与OAuth的区别
Cookie和LocalStorage和sessionStorage的区别
转发和重定向的区别
饿汉于懒汉单例模式
过滤器和拦截器的区别
#和$的区别
&&和&与|和||的区别?
final finally finalize区别?
int和Integer的区别?
equals与==的区别?
StringBuff 和StringBuilder及String区别?
Override和Overload的含义去区别?
抽象类和接口及普通类的区别?
堆和栈的区别?
Spring Bean生命周期
JDK、JRE、JVM的区别?
值传递和引用传递的区别?
4种访问控制符区别?
装箱和拆箱,类型转换
throw和throws区别
PreparedStatement比Statement区别?
doGet()方法和doPost()方法区别?
null和undefind的区别?
Error和Exception的区别?
阻塞和非阻塞以及同步和异步的区别?
Ajax异步和同步
事务的ACID和事务的隔离性?
线程的sleep和wait区别?
线程的状态(阶段)?
http和https的区别?
常见的运行时异常?
BIO和NIO区别?
http常见的状态码
Hashmap为什么线程不安全,如何让它线程安全
怎么加快程序访问速度
怎样进行程序性能调优
冒泡排序和自然排序及定制排序怎么实现的或者手写出来
三种遍历方式?
讲讲线程的创建及实现线程几种方式之间的区别
实现Runnable和实现Callable的区别?
Runnable和Thread二者的区别?
线程的创建
如何实现线程的同步?
讲一下ThreadLocal类。
ReentrantReadWriteLock:读写锁
CountDownLatch:倒计时器
CyclicBarrier:循环栅栏
Semaphore:信号灯
Java自定义类加载器与双亲委派模型
讲讲jvm的组成与调优,内存模型,tomcat调优
JVM调优:
设计模式在项目中如何体现
讲讲linux命令awk、cat、sort、cut、grep、uniq、wc、top、find、se
Spring框架
Spring管理bean的作用域,为什么不会被GC处理?
Spring对bean是如何解析
Spring 核心特性?
讲讲Spring的IOC(DI)和AOP动态代理
AOP的各种实现
AOP各种实现机制的比较
AOP里的公民
Spring框架AOP执行原理简单说下?
Spring 分布式事务如何处理的?
SpringBoot框架
Springboot的特点?
Spring Boot 的核心配置文件有哪几个?它们的区别是什么?
Spring Boot 的配置文件有哪几种格式?它们有什么区别?
Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?
开启 Spring Boot 特性有哪几种方式?
Spring Boot 需要独立的容器运行吗?
运行 Spring Boot 有哪几种方式?
Spring Boot 自动配置原理是什么?
如何理解 Spring Boot 中的 Starters?
如何在 Spring Boot 启动的时候运行一些特定的代码?
Spring Boot 有哪几种读取配置的方式?
Spring boot和spring cloud的区别与联系
MyBatis框架
SpringMVC框架
SpringMVC框架的工作流程和常用注解
组件型注解:
请求和参数型注解:
Dubbo+Zookeeper服务框架
Dubbo:
简单的介绍一下Dubbo?(Dubbo是什么)
Dubbo有哪些组件?
Dubbo支持什么协议?
Zookeeper:
Zookeeper的实现原理?(工作原理)
为什么要用zookeeper作为dubbo的注册中心?能选择其他的吗?
对分布式,dubbo,zookeeper说的不太清楚
Zookeeper待机的情况下,dubbo如何工作?
Dubbo,Zookeeper,Nginx说不清楚
如何保证dubbo高可用?
Zookeeper怎样进行服务治理。
如果zookeeper服务挂了怎么办,服务调用可以进行吗?
Dubbo有3次重试,假如新消息被重复消费怎么处理
Dubbo的通信原理?
高并发,高可用,负载均衡
高并发解决方案:
处理高并发常见的方法有哪些?
高并发下电商网站的秒杀活动
高可用解决方案:
负载均衡:
简单介绍5种负载均衡:
详情介绍5种负载均衡:
分布式,集群,微服务,SOA
微服务和SOA有什么区别?
分布式架构:
基于soa的架构
集群:
讲讲分布式事务的异步通信问题解决方案
分布式事务
分布式架构session共享问题,如何在集群里边实现共享,分布式session跨域问题
Redis缓存
什么是Redis?
你还用过其他的缓存吗?这些缓存有什么区别?都在什么场景下去用?
对redis的持久化了解不?
做过redis的集群吗?你们做集群的时候搭建了几台,都是怎么搭建的?
Redis有事务吗?
缓存穿透
缓存雪崩
redis的安全机制(你们公司redis的安全这方面怎么考虑的?)
redis的哨兵机制(redis2.6以后出现的):
redis中对于生存时间的应用
能讲下redis的具体使用场景吗?使用redis存储长期不改变的数据完全可以使用也看静态化,那么你们
Redis分布式锁理解
Redis怎么设置过期的?
讲到redis缓存的时候说不清楚
Redis中对一个key进行自增或者自减操作,它是原子性的吗?
项目添加Redis缓存后,持久化具体怎么实现的。
怎么提高redis缓存利用率?
Redis宕机之后,购物车中的数据如何处理?如何缓解mysql压力?
Redis和mysql数据同步,是先删除redis的数据还是先删除Mysql的数据?
Redis中watch机制和原理
讲讲缓存的设计和优化,缓存和数据库一致性同步解决方案
MySQL数据库和SQL优化与JDBC
为什么InnoDB支持事务而myisam不支持
SQL语句中关于查询语句的优化你们是怎么做的?
MySQL索引使用限制
数据库创建表的时候会有哪些考虑呢?
有了解过大数据层面的分库分表吗?以及mysql的执行计划吗?
有了解过数据库中的表级锁和行级锁吗?乐观锁和悲观锁你有哪些了解?
Mysql优化有没有工具
你有了解mysql的隔离级别吗?mysql默认的隔离级别是什么?
怎样进行数据库性能调优
MySQL存储过程
怎么实现数据量大、 并发量高的搜索
JDBC的理解
AngularJS框架
AngularJS四大特征?
Nginx服务器
什么是Nginx?
请列举Nginx的一些特性?
nginx和apache的区别?
nginx是如何实现高并发的?
请解释Nginx如何处理HTTP请求?
在Nginx中,如何使用未定义的服务器名称来阻止处理请求?
请列举Nginx服务器的最佳用途?
请解释Nginx服务器上的Master和Worker进程分别是什么?
请解释你如何通过不同于80的端口开启Nginx?
请解释是否有可能将Nginx的错误替换为502错误、503?
在Nginx中,解释如何在URL中保留双斜线?
请解释ngx_http_upstream_module的作用是什么?
请解释什么是C10K问题?
请陈述stub_status和sub_filter指令的作用是什么?
解释Nginx是否支持将请求压缩到上游?
解释如何在Nginx中获得当前的时间?
用Nginx服务器解释-s的目的是什么?
解释如何在Nginx服务器上添加模块?
什么是反向代理和正向代理?
Nginx静态页面服务跳转到购物车跨域问题
FastDFS分布式文件系统
简单介绍一下FastDFS?
为什么要使用FastDFS作为你们的图片服务器?
ActiveMQ信息队列
什么是消息队列?
消息队列都解决了什么问题?异步,并行,解耦,排队
消息模式?
重复消费
丢消息
消息重发
什么是ActiveMQ?
activemq的原理
对比RabbitMQ
对比KafKa
对比Redis
关于事务控制
持久化
哪些情况用到activeMq?
ActiveMQ消息队列不消费
什么是ActiveMQ.DLQ?
MQ消费者接收不到消息怎么办?
怎样解决activeMQ的消息持久化问题?
如果activeMQ的消息没有发送成功,怎样确保再次发送成功。
MQ丢包如何解决
如果activeMQ的服务挂了,怎么办?
消息发送失败怎么处理,发送数据,数据库已经保存了数据,但是redis中没有同步,怎么办。或者说如何做
ActiveMQ存在发出消息太大,造成消息接受不成功,怎么解决?
activeMQ存在运行时间长了以后,收不到消息的现象,怎么解决?
Elasticsearch全文搜索
简单介绍一下Elasticsearch全文搜索
与MySQL对比
利用kibana学习 elasticsearch restful api (DSL)
es中保存的数据结构
es 的java 客户端的选择
增量同步索引库
ES索引中使用了IK分词器,你们项目中使用到了分词器的哪种工作模式?
怎么分词
 ES高亮不能显示的问题
简单介绍一下Es全文检索在整个系统中的应用,在更新索引库的同时会产生索引碎片,这个碎片是如何处理的?
单点登录
早期单一服务器,用户认证
WEB应用集群,session共享模式
分布式,SSO(single sign on)模式
登录功能
生成token
验证功能
什么是CAS?
单点登录的访问或者跨域问题
单点登陆如果在另一台电脑上登陆并修改了密码怎么办?
什么是死锁,怎么解决死锁,表级锁和行级锁,悲观锁与乐观锁以及线程同步锁区别
分布式锁的问题
分布式锁(zookeeper,redis,数据库)如何实现
Java 基础 Java 基本类型哪些,所占字节 byte :1 个字节 short :2 个字节 char :2 个字节 int :4 个字节 long :8 个字节 float :4 个字节 double :8 个字节 java 集合以及底层原理 Java 集合框架的根接口有 Collection 和 Map。Collection 根接口包含 List 和 Set 二个子接口。 List 接口 它的特点是:元素有序、且可重复,主要包含三个实现类:ArrayList,vector,LinkedList ArrayList 的特点:底层是数组,线程不安全,查找快,增删慢(数组的特点)。 ArrayList 的底层实现原理:通过 ArrrayList 空参构造器创建对象。 底层创建一个长度为 10 的数组,当我们向数组中添加 11 个元素时,底层会进行扩容,扩容为原来的 1.5 倍 (创建一个新的数组,长度为原数组长度的 1.5 倍,将原数组复制到新数组中)。 vector 的特点:古老的实现类,底层是数组,线程安全的,JDK1.0 就有了,Vector 总是比 ArrayList 慢,所以尽量 避免使用。 LinkedList 的特点:底层是使用双向链表。增删快,查找慢。 Set 接口 它的特点: 无序性:通过 HashCode 方法算出的值来决定在数组中存放的位置; 不可重复性:进行 equals 方法比较,结果为 true 则两个数据相同,若为 false 则不同。 主要包含三个实现类:HashSet,LinkedHashSet,TreeSet HashSet 特点:线程不安全,集合元素可以为 null,不能保证元素的排列顺序 HashSet 的底层实现原理: 当向 HashSet 添加数据时,首先调用 HashCode 方法决定数据存放在数组中的位置,该位置上没有其他元素, 则将数据直接存放,若该位置上有其他元素,调用 equals 方法进行比较。若返回 true 则认为两个数据相同, 若返回 false,则以链表的形式将该数据存在该位置上,(jdk1.8)如果数量达到 8 则将链表换成红黑树。
HashSet 的底层就是一个 HashMap,向 HashSet 中添加的数据实际上添加到了 HashMap 中的 key 里。 所以 HashMap 的 key 可以看成是 Set 的集合。 LinkedHashSet 特点:继承了 HashSet,底层实现原理和 HashSet 一样,可以安照元素添加的顺序进行遍历 根据元素的 hashCode 值来决定元素的存储位置,它维护了一张链表该链表记录了元素添加的顺序。 底层就是一个 LinkedHashMap。 TreeSet 特点:底层为红黑树;可以安照指定的元素进行排序;TreeSet 中的元素类型必须保持一致, 底层就是 TreeMap。TreeSet 必须(自然排序)实现 Comparable 接口,重写 compareTo()方法, 按照某个属性进行排序,相结合添加元素或(定制排序)创建一个 Comparator 实现类的对象, 并传入到 TreeSet 的构造器中,按照某个属性进行排序,向集合添加元素。定制排序比自然排序灵活。 如果即有自然排序又有定制排序谁起作用? 定制排序 Map 接口 Map 的特点: Map 存储的是键值对(key,value),Map 中的 key 是无序的且不可重复的,所有的 key 可以看成是一个 set 集合。 Map 中的 key 如果是自定义类的对象必须重写 hashCode 和 equals 方法,Map 中的 value 是无序的可重复的, 所有的 value 可以看成是 Collection 集合,Map 中的 value 如果是自定义类的对象必须重写 equals 方法, Map 中的键值对可以看成是一个一个的 Entry.Entry 所存放的位置是由 key 来决定的。 Entry 是无序的不可重复的。主要的实现类:HashMap,LinkedHashMap,TreeMap,HashTable. HashMap 特点 1.底层是一个数组 + 链表 + 红黑树(jdk1.8) 2.数组的类型是一个 Node 类型 3.Node 中有 key 和 value 的属性 4.根据 key 的 hashCode 方法来决定 Node 存放的位置 5.线程不安全的 ,可以存放 null HashMap 的底层实现原理: 当我们向 HashMap 中存放一个元素(k1,v1),先根据 k1 的 hashCode 方法来决定在数组中存放的位置。 如果该位置没有其它元素则将(k1,v1)直接放入数组中,如果该位置已经有其它元素(k2,v2),调用k1 的equals 方 法和 k2 进行比较。 如果结果为 true 则用 v1 替换 v2,如果返回值为 false 则以链表的形式将(k1,v1)存放, 当元素达到 8 时则会将链表替换成红黑树以提高查找效率。 HashMap 的构造器:new HashMap() :创建一个容量为 16 的数组,加载因子为 0.75。 当我们添加的数据超过 12 时底层会进行扩容,扩容为原来的 2 倍。 LinkedHashMap:继承了 HashMap 底层实现和 HashMap 一样. 可以安照元素添加的顺序进行遍历底层维护了一张链表用来记录元素添加的顺序。 TreeMap 特点:可以对 Key 中的元素安照指定的顺序进行排序 ( 不能对 value 进行排序) HashTable 特点:线程安全的 ,不可以存放 null,map 中的 key 不能重复,如果有重复的,后者的 value 覆盖前 者的 value 四大作用域和九大内置对象
四大作用域: page :当前页面有效时间最短(页面执行期) request :HTTP 请求开始到结束这段时间 session :HTTP 会话开始到结束这段时间 application :服务器启动到停止这段时间 九大内置对象: request :请求对象 作用域 Request response :响应对象 作用域 Page pageContext :页面上下文对象 作用域 Page session :会话对象 作用域 Session application :应用程序对象 作用域 Application out :输出对象 作用域 Page config :配置对象 作用域 Page page :页面对象 作用域 Page exception :例外对象 作用域 page jsp 和 servlet 的区别 1.jsp 经编译后就变成了 Servlet.(JSP 的本质就是 Servlet,JVM 只能识别 java 的类, 不能识别 JSP 的代码,Web 容器将 JSP 的代码编译成 JVM 能够识别的 java 类) 2.jsp 更擅长表现于页面显示,servlet 更擅长于逻辑控制. 3.Servlet 中没有内置对象,Jsp 中的内置对象都是必须通过 HttpServletRequest 象, HttpServletResponse 对象以及 HttpServlet 对象得到. Jsp 是 Servlet 的一种简化,使用 Jsp 只需要完成程序员需要输出到客户端的内容,Jsp 中的 Java 脚本如何镶嵌 到一个类中,由 Jsp 容器完成。 而 Servlet 则是个完整的 Java 类,这个类的 Service 方法用于生成对客户端的响应。 servlet 生命周期 1.加载和实例化 2.初始化 3.请求处理 4.服务终止 加载(服务器启动时,会到 web.xml 文件中去找到 Servlet 文件的配置并创建 servlet 的实例) →初始化(init()此方法只执行一次) →执行(service(),doGet(),doPost()) →销毁(销毁 destory()) service(): 方法本身包含了 doGet()和 doPost().如果服务器发现了 service()方法,则不再执行 doGet(),doPost(). 一般不建议去重写父类的 service 方法.因为重写了此方法 doGet 方法和 doPost 方法将得不到利用. 没有 service()方法默认执行 doGet()方法.
cookie 和 session 区别以及 JWT 与 Session 的差异 1、cookie 数据存放在客户的浏览器上,session 数据放在服务器上。 2、cookie 不是很安全,别人可以分析存放在本地的 cookie 并进行 cookie 欺骗,考虑到安全应当使用 session。 3、session 会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方 面,应当使用 cookie。 4、单个 cookie 保存的数据不能超过 4K,很多浏览器都限制一个站点最多保存 20 个 cookie。 5、可以考虑将登陆信息等重要信息存放为 session,其他信息如果需要保留,可以放在 cookie 中。 1.Session 是在服务器端的,而 JWT 是在客户端的。 2.Session 方式存储用户信息的最大问题在于要占用大量服务器内存,增加服务器的开销。 3.JWT 方式将用户状态分散到了客户端中,可以明显减轻服务端的内存压力。 4.Session 的状态是存储在服务器端,客户端只有 session id;而 Token 的状态是存储在客户端。 JWT 与 OAuth 的区别 OAuth2 是一种授权框架 ,JWT 是一种认证协议。 无论使用哪种方式切记用 HTTPS 来保证数据的安全性 OAuth2 用在使用第三方账号登录的情况(比如使用 weibo, qq, github 登录某个 app) JWT 是用在前后端分离, 需要简单的对后台 API 进行保护时使用。 Cookie 和 LocalStorage 和 sessionStorage 的区别 发和重定向的区别 转发:浏览器地址栏不变,1 次请求,request 请求,可以访问 web-inf,可以共享 request 请求域 数据,只能跳转工程内的资源 转
重定向:浏览器变化,2 次请求,response 响应,不能访问 web-inf,不可以共享 request 请求域数 据,可以跳转任意资源 饿汉于懒汉单例模式 单例模式设计: 第一步:私有化构造器 第二步:提供一个公共静态返回该类实例对象的方法 饿汉式:先初始化对象,Single 类一进内存,就已经创建好了对象。 class Single{ private Single(){} private static Single s=new Single(); public static Single getInstance() { return s; } 懒汉式:对象是方法被调用时,才初始化,也叫做对象的延时加载。 class Single{ //Single 类进内存,对象还没存在,只有调用了 getInstance 方法时,才建立对象 } } private Single(){} private static Single s=null; public static synchronize Single getInstance() { if(s==null){ s=new single(); } return s; } 操作共享的数据有多条,会出现线程安全问题,在方法加一个同步 过滤器和拦截器的区别 ①拦截器是基于 java 的反射机制的,而过滤器是基于函数回调。 ②拦截器不依赖与 servlet 容器,过滤器依赖与 servlet 容器。 ③拦截器只能对 action 请求起作用,而过滤器则可以对几乎所有的请求起作用。 ④拦截器可以访问 action 上下文、值栈里的对象,而过滤器不能访问。 ⑤在 action 的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。 ⑥拦截器可以获取 IOC 容器中的各个 bean,而过滤器就不行,这点很重要,在拦截器里注入一个 service,可以调 用业务逻辑。 #和$的区别
#{}和${}的区别 #{} 在 mapper 的配置文件的 sql 语句中,它是占位符, 相当于 ? 号。 ${} 在 mapper 的配置文件的 sql 语句中,它是原样输出变量的值,然后以字符串拼接的功能进行操作。 ${} 中只能写 value,或者是@Param 命名参数后的参数名称 在输出参数的时候,我们并不推荐使用 ${} 来输出。因为可能会导至 sql 注入问题的存在。 什么是 SQL 注入? 如果 SQL 是根据用户输入拼出来,如果用户故意输入可以让后台解析失败的字符串,这就是 SQL 注入 例如,用户在输入密码的时候,输入' or 1=1', 这样,后台的程序在解析的时候,拼成的 SQL 语句,可能是这样 的: select count(1) from tab where user=userinput and pass='' or 1=1; 看这条语句,可以知道,在解析之后,用户没有输入密码,加了一个恒等的条件 1=1,这样,这段 SQL 执行的时候, 返回的 count 值肯定大于 1 的,如果程序的逻辑没加过多的判断,这样就能够使用用户名 userinput 登陆,而不 需要密码。 防止 SQL 注入,首先要对密码输入中的单引号进行过滤,再在后面加其它的逻辑判断,或者不用这样的动态 SQL 拼。 &&和&与|和||的区别? &和&&的区别? &和&&左边的式子为 true 的时候,右边的式子都会执行。 左边的式子为 false 的时候。&右边的式子仍然会执行。&&右边的式子将不再执行。 |和||的区别? |和||左边的式子为 false 的时候,右边的式子都会执行。 左边的式子为 true 的时候。|右边的式子仍然会执行。||右边的式子将不再执行。 final finally finalize 区别? final 修饰符,用来修饰变量,方法和类,分别表示属性不可变,方法不可被重写,类不可被继承,finally 是异常语 句中处理语句, 表示总是执行;finalize 表示在垃圾回收机制时使该对象状态恢复的方法 int 和 Integer 的区别? 1、Integer 是 int 的包装类,int 则是 java 的一种基本数据类型 2、Integer 变量必须实例化后才能使用,而 int 变量不需要 3、Integer 实际是对象的引用,当 new 一个 Integer 时,实际上是生成一个指针指向此对象;而 int 则是直接存 储数据值 4、Integer 的默认值是 null,int 的默认值是 0 equals 与==的区别?
==:如果==两边是基本数据类型,那么比较的是具体的值。如果==两边是引用数据类型,那么比较的是地址值。 (两个对象是否指向同一块内存) equals:如果没有重写 equals 方法那么调用的是 Object 中的 equals 方法,比较的是地址值。 如果重写了 euqlas 方法(比属性内容)那么就比较的是对象中属性的内容。 StringBuff 和 StringBuilder 及 String 区别? String 类是不可变类,任何对 String 的改变都会引发新的 String 对象的生成; StringBuffer 是可变类,任何对它所指代的字符串的改变都不会产生新的对象,线程安全的。 StringBuilder 是可变类,线性不安全的,不支持并发操作,不适合多线程中使用,但其在单线程中的性能比 StringBuffer 高。 Override 和 Overload 的含义去区别? 1. Override 特点 1、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果; 2、覆盖的方法的返回值必须和被覆盖的方法的返回一致; 3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类; 4、方法被定义为 final 不能被重写。 5、对于继承来说,如果某一方法在父类中是访问权限是 private,那么就不能在子类对其进行重写覆盖,如果定义 的话, 也只是定义了一个新方法,而不会达到重写覆盖的效果。(通常存在于父类和子类之间。) 2.Overload 特点 1、在使用重载时只能通过不同的参数样式。例如,不同的参数类型,不同的参数个数,不同的参数顺序 当然,同一方法内的几个参数类型必须不一样,例如可以是 fun(int, float), 但是不能为 fun(int, int) 2、不能通过访问权限、返回类型、抛出的异常进行重载; 3、方法的异常类型和数目不会对重载造成影响; 4、重载事件通常发生在同一个类中,不同方法之间的现象。 5、存在于同一类中,但是只有虚方法和抽象方法才能被覆写。 抽象类和接口及普通类的区别? 1、抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象, 接口变量必须指向实现所有接口方法的类对象。 2、抽象类要被子类继承,接口要被类实现。 3、接口只能做方法申明,抽象类中可以做方法申明,也可以做方法实现 4、接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。 5、抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类只能是抽象类。 同样,一个实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。 6、抽象方法只能申明,不能实现,接口是设计的结果 ,抽象类是重构的结果 7、抽象类里可以没有抽象方法
8、如果一个类里有抽象方法,那么这个类只能是抽象类 9、抽象方法要被实现,所以不能是静态的,也不能是私有的。 10、接口可继承接口,并可多继承接口,但类只能单根继承。 堆和栈的区别? 一.堆栈空间分配区别: 1.栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构 中的栈; 2.堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由 OS 回收,分配方式倒是类似于 链表。 二.堆栈缓存方式区别: 1.栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放; 2.堆是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回收)。 所以调用这些对象的速度要相对来得低一些。 三.堆栈数据结构区别: 堆(数据结构):堆可以被看成是一棵树,如:堆排序; 栈(数据结构):一种先进后出的数据结构。 Spring Bean 生命周期 BeanPostPreocessor 前置处理  实例化 bean 对象  设置对象属性  检查 Aware 相关接口并设置相关依赖   检查是否是 InitialliziingBean 以决定是否调用 afterPropertesSet 方法  检查是否配置有自定义的 init-method   注册必要的 Destrunction 相关回调接口  使用中  是否实现 DisposableBean 接口  是否配置有自定义的 Destory 方法 BeanPostProcessor 后置处理 JDK、JRE、JVM 的区别? JDK ( Java 开发工具包)= JRE(Java 运行环境) + 开发工具集(例如 Javac 编译工具等) JRE (Java 运行环境)= JVM (Java 虚拟机)+ Java SE 标准类库 值传递和引用传递的区别?
分享到:
收藏