关于JAVA内存模型,一个对象(两个属性,四个方法)实例化100次,现在内存中的存储状态,几个对象,几个属性,几个方法。
Java新建的对象都放在堆里,如果实例化100次,堆中产生100个对象,一般对象与其属性和方法属于一个整体,但如果属性和方法是静态的,则属性和方法只在内存中存一份。
谈谈Hibernate的理解,一级和二级缓存的作用,在项目中Hibernate都是怎么使用缓存的
一级缓存为session基本的缓存,是内置的不能卸载。一个Session做了一个查询操作,它会把这个结果放在一级缓存中,如果短时间内这个session又做了同一个操作,那么hibernate就直接从一级缓存中获取数据。
二级缓存是SessionFactory的缓存,分为内置缓存和外置缓存两类。即查询结果放在二级缓存中,如果同一个sessionFactory创建的某个session执行了相同的操作,hibernate就会从二级缓存中获取结果。适合放在二级缓存中的数据包括:很少被修改的数据,不是很重要的数据,允许出现偶偶并发的数据,不会被并发访问的数据,参考数据。不适合放在二级缓存中的数据:经常被修改的数据,财务数据,绝对不允许出现并发,与其他应用共享的数据。
反射讲一讲,主要是概念,都在哪需要反射机制,反射的性能,如何优化
能够分析类能力的程序称为反射。反射机制可以用来:在运行中分析类的能力,在运行中查看对象,如编写一个toString方法供所有类使用。实现通用的数据操作代码。利用Method对象,这个对象很像C++的指针。
反射性能优化方法主要为设置不用做安全检查。
谈谈Hibernate与Ibatis的区别,哪个性能会更高一些
Ibatis相当较为简单,容易上手,Hibernate比较复杂,门槛较高。如果系统需要处理数据量很大,性能要求很高,需要执行高度优化的sql语句才能达到性能要求,则此时Ibatis会比较好。
对不同数据库支持方面Hibernate较好,因为Ibatis需要修改的字段较多。另外Hibernate现已成为主流的o/rMapping框架,开发效率高。
对Spring的理解,项目中都用什么?怎么用的?对IOC、和AOP的理解及实现原理
线程同步,并发操作怎么控制
线程同步不一定就是同时,而是协同步骤,或协同步调。线程同步就是多个线程在逻辑上互有因果关系,所以要对其执行顺序进行协调。
线程并发是指同一时间间隔内,多个线程同时执行。如果线程在时间上能够区分,那么就可以上线程休眠指定的时间来进行同步,可用sleep()方法完成。如果线程在时间上不能区分,但在逻辑顺序上可以区分的话,那么可用jion()方法来完成,一个先执行完,然后执行另一个。如果线程设计较为复杂,那么就只有通过wait(),notify()方法来完成了
描述struts的工作流程。
简略过程就是web应用启动,接收用户请求并进行匹配,返回用户请求信息。
1.在web应用启动时,加载并初始化ActionServlet,ActionServlet从struct-config.xml文件中读取配置信息,把它们存放到各个配置对象中。
2.当ActionServlet接收到一个客户请求时,首先检索和用户请求相配的ActionMapping实例,如果不存在,返回用户请求路径无效信息。
3.如ActionForm实例不存在,则创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中。
4.根据配置信息决定是否需要表单验证。如果需要验证,就调用ActionForm的Validate()方法。如果Valiedate()方法返回null或返回一个不包含ActionMessage的ActionErrors对象,则表示表单验证成功。
5.ActionServlet更加ActionMapping实例包含的映射信息决定请请求转发给哪个Action。如果相应的Action实例不存在,则先创建这个实例,然后调用Action的execute()方法。
6.Action的execute()方法返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指向的JSP组建。
7.ActionForward对象指向的jsp组件生成的动态网页,返回给客户。
Tomcat的session处理,如果让你实现一个tomcatserver,如何实现session机制
当一个session开始时,Servlet容器会创建一个HttpSession对象,在某些情况下把这些HttpSession对象从内存中转移到文件系统中或数据库中。需要访问的时候将它们载入到内存中。这样的好处就是节省内存,当web服务器产生故障时,还可以从文件系统或数据库中恢复Session的数据。管理session有两个类:1)StandardManager,这是一个默认的类,当tomcat启动或重载时将会session对象保存到指定文件中。2)PersistentManager,管理方式更加灵活,具有容错能力,可以及时把Session备份到SessionStore中,可以控制内存中Session的数量。
关于Cache(Ehcache,Memcached)
Memcache:分布式内存对象缓存系统,占用其他机子的内存。很多互联网,负载均衡三台(以三台为例)web服务器可以共享一台Memcache的资源。传递的信息以键值对的形式存储。传递的数据要实现序列化。
Oscache:页面级缓存(网上强调最多的东西),占用本机的内存资源。可以选择缓存到硬盘,如存取到硬盘重启服务也可重新获得上次持久化的资源,而如果缓存到内存就不行。一般没必要缓存到硬盘,因为I/O操作也是比较耗资源,和从数据库取往往优势很小。Oscache存取数据的作用域分为application和session两种。
EhCache:Hibernate缓存,DAO缓存,安全性凭证缓存(Acegi),Web缓存,应用持久化和分布式缓存。EhCache在默认情况下,即在用户未提供自身配置文件ehcache.xml或ehcache-failsafe.xml时,EhCache会依据其自身Jar存档包含的ehcache-failsafe.xml文件所定制的策略来管理缓存。如果用户在classpath下提供了ehcache.xml或ehcache-failsafe.xml文件,那么EhCache将会应用这个文件。如果两个文件同时提供,那么EhCache会使用ehcache.xml文件的配置。
以上就是动力节点Java培训机构小编介绍的“阿里资深java面试题,架构经典面试题”的内容,希望对大家有帮助,如有疑问,请在线咨询,有专业老师随时为你服务。
你适合学Java吗?4大专业测评方法
代码逻辑 吸收能力 技术学习能力 综合素质
先测评确定适合在学习