




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1.谈谈hibernate的延迟加载 延迟加载机制是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作。 A. 实体对象的延迟加载 B. 集合类型的延迟加载2.session.load()和session.get()的区别 二者的区别: 1.session.get()如果找不到符合条件的记录,则返回NULL,session.load()如果找不到符合条件的记录,返回ObjectNotFoundException. 2.session.load()方法可返回代理类实例,而session.get()方法永远返回实例类. 3.session.load() 方法可以充分利用内部缓存和二级缓存,而session.get() 方法只在内部缓存中进行查找,如果没有找到,则跳过二级缓存,直接调用SQL进行数据读取. 3.spring的事务管理。它有一个统一的抽象是由实现接口完成的,不管是声明式的还是编程式的事务管理都需要此抽象来完成.11.事务的四大特性。事务四大特性(简称ACID) 1、原子性(Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行。2、一致性(Consistency):几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致。3、隔离性(Isolation):事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的。4、持久性(Durability):对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障。 4.struts2的iterator能否遍历一个list,Map?怎样遍历? 5.struts2怎样遍历hibernate级联查询的结果?(除了封装VO) 一般做法是查询产生的数据封装到map中,放到request或session,由struts2在前台输出结果,具体做法: 例如一个item表下有一对多关系的subitem 生成的pojo里面就包含了set的这些关系 在hibernate取数据的时候: List itemall = this.itemService.findAll(); session = (Map) ActionContext.getContext().getSession();/get(request); session.put(itemall, itemall);/把这个list放到session里 /取出所有数据,这样,这个itemall的结构是: itemall itemid itemname subitems 返回return SUCCESS后,会跳转到指定的jsp页面 页面使用struts2输出:6.谈谈对Struts2的流程的理解。 7.谈谈ThreadLocal在spring框架中的作用 8.spring的AOP?具体用来做什么? 比如一个注册登录系统,当然需要注册的地方有很多,你可能要做一个防止用户名重复注册的模块,这个时候就可以用到Spring的aop了!在你开发大型的应用时,aop可以发挥很大的功能,对于你模块的耦合,以后的管理,功能升级!都有很大的帮助12.Spring的IOC和AOP。ioc就是控制翻转或是依赖注入。通俗的讲就是如果在什么地方需要一个对象,你自己不用去通过new 生成你需要的对象,而是通过spring的bean工厂为你长生这样一个对象。aop就是面向切面的编程。比如说你每做一次对数据库操作,都要生成一句日志。如果,你对数据库的操作有很多类,那你每一类中都要写关于日志的方法。但是如果你用aop,那么你可以写一个方法,在这个方法中有关于数据库操作的方法,每一次调用这个方法的时候,就加上生成日志的操作。 9.Hibernate的主键生成机制increment,native,identity,assigned,sequence 10.谈谈对struts2的MVC的理解。 MVC是一种设计模式将应用程序分成了视图、模型、控制器三部分,使代码逻辑清晰,同时提高移植性M与V之间-观察者模式V与C之间-策略模式。MVC的工作流程请求-控制器调用模型处理,返回数据-控制器用相应的视图格式化模型返回的数据完成相应请求。1、spring的配置的主要标签是什么? 2、如何在spring中实现国际化? 在applicationContext.xml加载一个bean message ? 在src目录下建多个properties文件 ? 对于非英文的要用native2ascii -encoding gb2312 源 目转化文件相关内容 ? 其命名格式是message_语言_国家。 ? 页面中的中显示提示信息,键名取键值。 ? 当给定国家,系统会自动加载对应的国家的properties信息。 ? 通过applictionContext.getMessage(“键名”,”参数”,”区域”)取出相关的信息。3、spring如何实现资源管理?spring如何访问jar包中的文件?使用applicationContext.getResource(“classpath:文件名”):在src根目录下,在类路径下applicationContext.getResource(“classpath:/chap01/文件名”): 以src根目录下的基准往下走。applicationContext.getResource(“file:c:/perties”):在系统文件目录下。4、介绍下spring中Bean的作用?1、singleton作用域当一个bean的作用域设置为singleton,那么Spring IOC容器中只会存在一个共享的bean实例,并且所有对bean的请求,只要id与该bean定义相匹配,则只会返回bean的同一实例。换言之,当把一个bean定义设置为singleton作用域时,Spring IOC容器只会创建该bean定义的唯一实例。这个单一实例会被存储到单例缓存(singleton cache)中,并且所有针对该bean的后续请求和引用都将返回被缓存的对象实例,这里要注意的是singleton作用域和GOF设计模式中的单例是完全不同的,单例设计模式表示一个ClassLoader中只有一个class存在,而这里的singleton则表示一个容器对应一个bean,也就是说当一个bean被标识为singleton时候,spring的IOC容器中只会存在一个该bean。配置实例:或者2、prototypeprototype作用域部署的bean,每一次请求(将其注入到另一个bean中,或者以程序的方式调用容器的getBean()方法)都会产生一个新的bean实例,相当于一个new的操作,对于prototype作用域的bean,有一点非常重要,那就是Spring不能对一个 prototype bean的整个生命周期负责,容器在初始化、配置、装饰或者是装配完一个prototype实例后,将它交给客户端,随后就对该prototype实例不闻不问了。不管何种作用域,容器都会调用所有对象的初始化生命周期回调方法,而对prototype而言,任何配置好的析构生命周期回调方法都将不会被调用。清除prototype作用域的对象并释放任何prototype bean所持有的昂贵资源,都是客户端代码的职责。(让Spring容器释放被singleton作用域bean占用资源的一种可行方式是,通过使用 bean的后置处理器,该处理器持有要被清除的bean的引用。)配置实例:或者3、requestrequest表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP request内有效,配置实例:request、session、global session使用的时候,首先要在初始化web的web.xml中做如下配置:如果你使用的是Servlet 2.4及以上的web容器,那么你仅需要在web应用的XML声明文件web.xml中增加下述ContextListener即可:org.springframework.web.context.request.RequestContextListener如果是Servlet2.4以前的web容器,那么你要使用一个javax.servlet.Filter的实现:.requestContextFilterorg.springframework.web.filter.RequestContextFilterrequestContextFilter/*接着既可以配置bean的作用域了:4、sessionsession作用域表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP session内有效,配置实例:配置实例:和request配置实例的前提一样,配置好web启动文件就可以如下配置:5、global sessionglobal session作用域类似于标准的HTTP Session作用域,不过它仅仅在基于portlet的web应用中才有意义。Portlet规范定义了全局Session的概念,它被所有构成某个 portlet web应用的各种不同的portlet所共享。在global session作用域中定义的bean被限定于全局portlet Session的生命周期范围内。如果你在web中使用global session作用域来标识bean,那么,web会自动当成session类型来使用。配置实例:和request配置实例的前提一样,配置好web启动文件就可以如下配置:6、自定义bean装配作用域在spring 2.0中作用域是可以任意扩展的,你可以自定义作用域,甚至你也可以重新定义已有的作用域(但是你不能覆盖singleton和 prototype),spring的作用域由接口org.springframework.beans.factory.config.Scope来定义,自定义自己的作用域只要实现该接口即可,下面给个实例:我们建立一个线程的scope,该scope在表示一个线程中有效,代码如下:publicclass MyScope implements Scope privatefinal ThreadLocal threadScope = new ThreadLocal() protected Object initialValue() returnnew HashMap();public Object get(String name, ObjectFactory objectFactory) Map scope = (Map) threadScope.get();Object object = scope.get(name);if(object=null) object = objectFactory.getObject();scope.put(name, object);return object;public Object remove(String name) Map scope = (Map) threadScope.get();return scope.remove(name);publicvoid registerDestructionCallback(String name, Runnable callback) public String getConversationId() / TODO Auto-generated method stubreturnnull;5、编写JDBC访问MySql数据库表中一条记录的代码? Statement statamentMySQL =connectMySQL.createStatement(); 6、介绍下数据库事物隔离级别?Oracle数据库支持READ COMMITTED 和 SERIALIZABLE这两种事务隔离级别。所以Oracle不支持脏读,即Oracle中不允许一个会话读取其他事务未提交的数据修改结果,从而防止了由于事务回滚发生的读取不正确。Oracle回滚段,在修改数据记录时,会把这些记录被修改之前的结果存入回滚段或撤销段中。Oracle读取操作不会阻碍更新操作,更新操作也不会阻碍读取操作,这样在Oracle中的各种隔离级别下,读取操作都不会等待更新事务结束,更新操作也不会因为另一个事务中的读取操作而发生等待,这也是Oracle事务处理的一个优势所在。Oracle缺省的配置是Read Committed隔离级别(也称为语句级别的隔离),在这种隔离级别下,如果一个事务正在对某个表执行 DML操作,而这时另外一个会话对这个表的记录执行读取操作,则Oracle会去读取回滚段或撤销段中存放的更新之前的记录,而不会象SQL Server一样等待更新事务的结束。Oracle的Serializable隔离级别(也称为事务级别的隔离),事务中的读取操作只能读取这个事务开始之前已经提交的数据结果。如果在读取时,其他事务正在对记录执行修改,则Oracle就会在回滚段或撤销段中去寻找对应的原来未经修改的记录(而且是在读取操作所在的事务开始之前存放于回滚段或撤销段的记录),这时读取操作也不会因为相应记录被更新而等待。7、什么是数据库连接池?数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能8、编写sql语句示例like的用法?Select *from user where name like 王%9、游标的作用,如何知道游标已经到了最后?是什么?游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果每个游标区都有一个名字用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理主语言是面向记录的,一组主变量一次只能存放一条记录仅使用主变量并不能完全满足SQL语句向应用程序输出数据的要求嵌入式SQL引入了游标的概念,用来协调这两种不同的处理方式对于 Oracle,使用 游标名字%NOTFOUND对于 SQL Server , 使用 fetch_status 来判断第六部分:多线程的问题 1、介绍下进程和线程的概念 进程是系统进行资源分配和调度的单位;线程是CPU调度和分派的单位,一个进程可以有多个线程,这些线程共享这个进程的资源。 2、编写简单的线程启动和运行的程序 启动: 在线程的Thread对象上调用start()方法,而不是run()或者别的方法 运行: 在线程的Thread对象上调用run()方法, 3、线程间通信机制的描述? 1). 可以通过启动线程前传递的 object 对象传递数据(线程启动的时候可以接收一个object 对象)。 2). 通过委托传递数据(大多是子线程操作主线程的时候用到)。 3). 通过静态的通用变量或属性传递(建个静态的变量或属性,将要传递的数据写在它上面,然 后另一个线程在去这个变量或属性中读取这个值)。 4、介绍线程间同步技术以及如何防止死锁? 使用volatile字段与Interlocked类实现同步 使用Win32对象同步 死锁:摒弃“请求和保持”条件(一次预先分配法) 摒弃”环路等待“条件(资源有序使用法)第五部分: 1、使用java socket编写一个server_client模型的程序 见图: 2、介绍下apache mina框架 当客户首次访问采用MINA编写的程序时,IoAcceptor作为线程运行,负责接受来自客户的请求。当有客户请求连接时,创建一个 Session,该Session与IoProcessor、SocketChannel 以及IOService联系起来。IoProcessor也作为 另外一个线程运行,定时检查客户是否有数据到来,并对客户请求进行处理,依次调用在IOService注册的各个IoFilter,最后调用 IoHandler进行最终的逻辑处理,再将处理后的结果Filter后返回给客户端第四部分: 6、触发器分为事前触发和事后触发,这两种触发有和区别、语句级触发和行级触发的区别 事前触发器运行于触发事件发生之前,而事后触发器运行于触发事件发生之后。通常事前触发器可以获取事件之前和新的字段值。 语句级触发器可以在语句执行前或后执行,而行级触发在触发器所影响的每一行触发一次。 7、你使用过什么数据库开发框架并简单介绍 oracle, 8、xml包括哪些解释技术,区别是什么? 有DOM,SAX,STAX等 DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结 构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文 档装入内存,适合对XML的随机访问SAX:不现于DOM,SAX是事件驱动型的XML解析方式。它顺序读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签 开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问 STAX:Streaming API for XML (StAX) =1、三大框架的了解 答:ORM对象关系映射,它的实现思想就是将关系数据库中表的数据映射成为对象,以对象的形式展 现,这样开发人员就可以把对数据库的操作转化为对这些对象的操作。因此它的目的是为了方 便开发人员以面向对象的思想来实现对数据库的操作。 1.2详细说说Spring的工作原理? 答:动态注入IOC,让一个对象的创建不用new了,可以自动的生成,这其实就是利用java里的反射,反射其实就是在运行时动态的去创建、调用对象,Spring就是在运行时,跟xml Spring的配置文件 来动态的创建对象,和调用对象里的方法的 。 Spring目的:就是让对象与对象(模块与模块)之 间的关系没有通过代码来关联,都是通过配置类说明管理的(Spring根据这些配置内部通过反射去 动态的组装对象)。A.Struts: Struts只是一个MVC框架(Framework),用于快速开发Java Web应用。Struts实现的重点在C(Controller),包括ActionServlet/RequestProcessor和我们定制的Action,也为V(View)提供了一系列定制标签(Custom Tag)。但Struts几乎没有涉及M(Model),所以Struts可以采用JAVA实现的任何形式的商业逻辑。Spring:Spring是一个轻型容器(light-weight container),其核心是Bean工厂(Bean Factory),用以构造我们所需要的M(Model)。在此基础之上,Spring提供了AOP(Aspect-Oriented Programming, 面向层面的编程)的实现,用它来提供非管理环境下申明方式的事务、安全等服务;对Bean工厂的扩展ApplicationContext更加方便我们实现J2EE的应用;DAO/ORM的实现方便我们进行数据库的开发;Web MVC和Spring Web提供了Java Web应用的框架或与其他流行的Web框架进行集成。就是说可将两者一起使用,达到将两者自身的特点进行互补。Hibernate:Hibernate是一个免费的开源Java包,它使得与关系数据库打交道变得十分轻松,就像您的数据库中包含每天使用的普通Java对象一样,同时不必考虑如何把它们从神秘的数据库表中取出(或放回到数据库表中)。它解放了您,使您可以专注于应用程序的对象和功能,而不必担心如何保存它们或稍后如何找到它们。2、使用hibernate时有两个.hbm的配置文件时,在查询时怎样识别是哪个配置文件3、多线程的应用4、面向对象的特性5、重写与重载的区别6、视图的了解7、hibernate的缓存问题8、json 9、单例模式(Singleton) Singleton模式主要作用是保证在java应用程序中,一个Class只有一个实例存在。 一般的模式通常有几种形式: public class Singleton private static Singleton instance = new Singleton(); public static Singleton getInstance() return instance ; 第二种形式: public class Singleton private static Singleton instance = null; public static synchronized Singleton getInstance() if(instance=null) instance = new Singleton(); return instance ; 10、struts1和struts2的区别 答:首先他们处理一个请求的工作流程有所不同,在struts1中一个请求是首先在ActionServlet,然后再到Action,在Action中是通过HttpServletRequest对象来获取请求数据,通过HttpServletResponse对象来保存返回给用户的数据,而struts2中一个请求是先通过一个DispatcherFilter过滤器,再到Action,在Action中可以不必直接访问HttpServletRequest和HttpServletReponse对象,这样就减少了对Servlet的依赖性,这样也便于对Action 类的测试,因为action它就像是一个普通的JavaBean。且在由DispatcherFilter到action的过程中或从action到view的过程中均可以配置拦截器Interceptor进行一些如验证方式的操作。Struts1 整合了JSTL,因此使用JSTL EL。这种EL有基本对象图遍历,但是对集合和索引属性的支持很弱。 Struts2可以使用JSTL,但是也支持一个更强大和灵活的表达式语言 (OGNL).11、分页查询12、集合的了解13、抽象类和接口的区别14、事物的了解15、冒泡排序 for (int i = 0; i num.length; i+) int num1 = num0;for(int j=0;jnumj)num1 = numj;numj = numi;numi = num1; 15、数据库的存储过程,继承哪个类 是一种数据库对象,它是指数据库服务器经过预编译的,需要反复使用的sql语句的集合 是一种封装重复任务操作的方法,支持用户提供的参数变量,具有强大的编程能力。16、搭建三大框架的步骤?17、外键约束的作用? 确保数据的完整性18.jdbc怎样防止sql注入? 使用preparedStatement19、索引为什么能加快查询速度? 这是因为,创建索引可以大大提高系统的性能。第一,通过创建唯一性索引,可以保证数据库表中 每一行数据的唯一性。第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因。第 三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。第四,在使用 分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。第五,通过使用索 引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。 20、如何做一个动态的sql21、java的缓存? 一、文件缓存,是指把数据存储在磁盘上,可以XML格式,也可以序列化文件DAT格式还是其它文件 格式。 二、内存缓存,也就是实现一个类中静态Map,对这个Map进行常规的增删查。 22、什么情况下会出现内存溢出的问题? io/数据库连接未关闭时23、xml的解析方式?以及两个解析方式的不同之处24、ajax的开发步骤 25、js中用什么标签来包含java代码26、spring中怎样配置事物27、spring中怎样配置intecerpt28、有哪些排序的方式?请用java代码写个程序 冒泡排序,选择排序,插入排序,快速排序, 冒泡排序的代码: public void bubbleSort(int a) int n = a.length; for(int i=0;in-1;i+) for(int j=0;j aj+1) int temp = aj; aj = aj + 1; aj + 1 = temp; 29、从text文档读取内容,并统计一个字符出现的次数30、jdk6.0和jdk7.0的区别31、在JSTL中的作用,的应用价值32、文件的读取33、怎样配置hibernate的缓存?33、Map和List 的区别。答:List 以特定次序来持有元素,可有重复元素。Set 无法拥有重复元素,内部排序。Map 保存key-value值,value可多值。34、HashMap与HashTable的区别答:HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。HashMap允许将null作为+,而Hashtable不允许。HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。 Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。 Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。35、Java加载类的顺序,以及加载方法。答:JVM
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年甘肃公务员真题
- 2025-2030智能纺织品材料技术创新与消费需求变化分析报告
- 2025-2030智能矿山整体规划咨询业务市场潜力与竞争壁垒分析
- 2020-2025年标准员之专业管理实务综合练习试卷B卷附答案
- 2025普工招聘真题及答案
- R-3-Hydroxypalmitoyl-CoA-R-3-Hydroxypalmitoyl-coenzyme-A-生命科学试剂-MCE
- 纳米级液体维生素
- 2025公务员公文试题及答案
- 煤矿事故案例试题库及答案
- 交通专项培训课件
- 2025贵州航空产业城集团股份有限公司旗下子公司贵州安立航空材料有限公司面向社会招聘61人笔试历年参考题库附带答案详解
- 2025至2030国内线缆设备行业市场深度研究及发展前景投资可行性分析报告
- 静脉留置针输液技术课件
- 雷火灸新技术课件
- 深圳前科人员管理办法
- 2025至2030伸缩梯行业产业运行态势及投资规划深度研究报告
- 山东玲珑轮胎股份有限公司境外(巴西)投资建设项目可行性研究报告
- 安全事故大反思大讨论心得体会
- 中长导管在神经外科临床应用
- 中文版儿童睡眠习惯问卷CSHQ 含评分维度
- 防暴技能培训课件
评论
0/150
提交评论