资深Java面试题_第1页
资深Java面试题_第2页
资深Java面试题_第3页
资深Java面试题_第4页
资深Java面试题_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一.JAVA基础问题一:java关键字volatile的作用是什么?能保证原子性吗?答:用volatile修饰的变量,线程在每次使用变量的时候,都会读取变量修改后的最的值。不能保证原子性。问题二:四种线程池,如何配置线程池的线程数答:newFixedThreadPool 创建一个指定工作线程数量的线程池(常用)newCachedThreadPool 创建一个可缓存的线程池newSingleThreadExecutor 只创建一个线程来执行任务newScheduleThreadPool 创建一个定长的线程池,而且支持定时的以及周期性的任务执行,类似于Timer。最佳线程数目=(线程等待时间+线程

2、CPU时间)/线程CPU时间)* CPU数目上述公式作为参考,具体需要根据压力测试进行调试。问题三:ConcurrentHashMap 的可以并发读,并发读写,并发写吗?用到的锁机制是什么?该锁的优点和缺点分别是什么?答:ConcurrentHashMap 中任意数量的读取线程可以并发的访问Map,执行读取操作的线程和执行写入操作的线程可以并发的访问Map,并且一定数量的写入线程可以并发的修改Map。使用的锁机制称为分段锁。对一组独立对象的锁进行分解,这种情况叫做锁分段。优势:例如,ConcurrentHashMap的视线中使用了一个包含16个锁的数组,每个锁保护所有散列桶的1/16,假设散列

3、函数具有合理的分布性,那么这大约能把锁的请求减少到原来的1/16。正是这项技术使得ConcurrentHashMap能够支持多达16个并发的写入。分段锁劣势:与采用单个锁来实现独占访问相比,要获取多个锁来实现独占访问将更加困难并且开销更高。问题四:如果JAVA程序中抛出了java.lang.OutOfMemoryError:Java heap space ,请讲一下解决问题的思路。答:要解决这个区域的问题,一般的手段是通过内存映像分析工具(如Eclipse Memory Analyzer;jhat) 对Dump出来的堆转储快照进行分析.然后进一步分析泄漏对象到GC Roots的引用链,于是就能

4、找到泄漏对象是通过怎么的路径与GC Roots关联并导致垃圾收集器无法自动回收他们的。这样就可以比较准确的定位出泄漏代码的位置,从而进行处理。二.框架spring问题一:简单讲一下spring中aop是如何实现的。答:AOP(Aspect-OrientedProgramming),面向切面编程。spring实现aop简单来说是通过JDKProxy或Cglib动态生成代理类来实现的。spring问题二:简单讲一下spring MVC中的运行流程:答:1.spring mvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。 2.D

5、ispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller.3.DispatcherServlet将请求提交到目标Controller4.Controller进行业务逻辑处理后,会返回一个ModelAndView5.Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象 6.视图对象负责渲染返回给客户端。PS:基本能回答到红色的关键字就算过关了。spring问题三?: beanFactory与 factoryBean的区别(该问题能基本反映对spring的熟悉程度)答:BeanF

6、actory是个Factory,也就是IOC容器或对象工厂,FactoryBean是个Bean。在Spring中,所有的Bean都是由BeanFactory(也就是IOC容器)来进行管理的。但对FactoryBean而言,这个Bean不是简单的Bean,而是一个能生产或者修饰对象生成的工厂Bean,它的实现与设计模式中的工厂模式和修饰器模式类似。spring问题四?: beanFactory与 factoryBean的区别(该问题能基本反映对spring的熟悉程度)答:BeanFactory是个Factory,也就是IOC容器或对象工厂,FactoryBean是个Bean。在Spring中,所

7、有的Bean都是由BeanFactory(也就是IOC容器)来进行管理的。但对FactoryBean而言,这个Bean不是简单的Bean,而是一个能生产或者修饰对象生成的工厂Bean,它的实现与设计模式中的工厂模式和修饰器模式类似。spring问题五?: 简述三种IOC注入方式原理:IOC是控制反转,正常情况下是A依赖B,所以需要A去实例化B,也就是A控制B的实现。spring提供的IOC是将所有实例交由spring管理,也就是所有对象自主实例化注入到spring容器,谁需要调用的时候去容器里面获取即可。主要解决对象依赖时,对对象管理的麻烦。问:简述三种IOC注入方式答:接口注入,Setter

8、设置注入,构造器注入接口注入要求组件必须与接口相关联,多态的时候不适用。 setter注入一般比较清晰,在依赖关系复杂的场景使用比较合适。构造器注入,一次性设定依赖关系,所有依赖关系比较稳定的时候适用。redis问题六:redis的两种持久化数据的方法是什么?它们分别有什么优缺点?答:RDB和AOFRDB就是Snapshot快照存储,是默认的持久化方式,按照一定的策略周期性的将数据保存到磁盘。当redis需要做持久化时,r特edis会fork一个子进程;子进程将数据写到磁盘上一个临时RDB文件中;当子进程完成写临时文件后,将原来的RDB替换掉RDB的优点在于不会影响到当前的写;缺点在于该方法在

9、redis异常挂掉时,最近的数据会丢。AOF:开启AOF之后,redis每执行一个修改数据的命令,都会把它添加到aof文件中,当redis重启时,将会读取AOF文件进行“重放”以恢复到redis关闭前的最后时刻。AOF的优点是不会丢数据,缺点是每次写的时候需要首先更新AOF文件,影响效率。mysql问题七:讲述数据库事务的四个隔离等级。讲述一下脏读,不可重复读,幻读。Read Uncommitted(读取未提交内容) 读取未提交的数据,也称之为脏读(Dirty Read)。Read Committed(读取提交内容) 一个事务可以看见已经提交事务所做的改变。Repeatable Read(可重

10、读) 这是MySQL的默认事务隔离级别,它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行。Serializable(可串行化) 这是最高的隔离级别,它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。脏读(Drity Read):某个事务已更新一份数据,另一个事务在此时读取了同一份数据,由于某些原因,前一个RollBack了操作,则后一个事务所读取的数据就会是不正确的。 不可重复读(Non-repeatable read):在一个事务的两次查询之中数据不一致,这可能是两次查询过程中间插入了一个事务更新的原有的数据。 幻读(Phantom Read):在一个事务的两次查询中数据笔数不一致,例如有一个事务查询了几列(Row)数据,而另一个事务却在此时插入了新的几列数据,先前的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论