面试参考题部分答案_第1页
面试参考题部分答案_第2页
面试参考题部分答案_第3页
面试参考题部分答案_第4页
面试参考题部分答案_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、面试参考题: JAVA:1) 静态块、动态块、构造函数、继承函数等的执行顺序静态块动态块构造函数继承函数2) 重载和重写的区别重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重写是父类与子类之间的多态性,对父类的函数进行重新定义。如果在子类中定义某方法与其父类有相同的名称和参数。3) 单例模式、工厂模式的理解工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。4) 使用的三大框架Spring、Struts、Hibernate 数

2、据库问一些查询,用哪些数据库语句关键字,所以要掌握数据库常用操作。增删改查是必须要掌握的,其他像order by、group by、排序、内外连接等,了解存储过程的写法更好。基本的问题:1、 HashMap存储机制当程序试图将一个 key-value 对放入 HashMap 中时,程序首先根据该 key 的hashCode() 返回值决定该 Entry 的存储位置:如果两个 Entry 的 key 的 hashCode() 返回值相同,那它们的存储位置相同。如果这两个 Entry 的 key 通过 equals 比较返回 true,新添加 Entry 的 value 将覆盖集合中原有 Entr

3、y 的 value,但 key 不会覆盖。如果这两个 Entry 的 key 通过 equals 比较返回 false,新添加的 Entry 将与集合中原有 Entry 形成 Entry 链,而且新添加的 Entry 位于 Entry 链的头部2、 hashCode与equals的区别与联系1、 如果两个对象equals,Java运行时环境会认为他们的hashcode一定相等。 2、 如果两个对象不equals,他们的hashcode有可能相等。 3、 如果两个对象hashcode相等,他们不一定equals。 4、如果两个对象hashcode不相等,他们一定不equals。3、 Spring

4、的核心机制Spring容器作为超级大工厂,负责创建、管理所有的Java对象,这些Java对象被称为Bean。Spring容器管理容器中Bean之间的依赖关系,Spring使用一种被称为“依赖注入”的方式来管理Bean之间的依赖关系。4、 Spring IOC和AOP的理解IoC:当某个角色需要另外一个角色协助的时候,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。但在spring中创建被调用者的工作不再由调用者来完成,因此称为控制反转。创建被调用者的工作由spring来完成,然后注入调用者因此也称为依赖注入。AOP:面向切面编程(AOP)完善spring的依赖注入(DI),面向切面编

5、程在spring中主要表现为两个方面1.面向切面编程提供声明式事务管理2.spring支持用户自定义的切面5、 springmvc的工作流程1、 首先用户发送请求-前端控制器(DispatcherServlet),前端控制器根据请求信息(如URL)来决定选择哪一个页面控制器(Controller)进行处理并把请求委托给它2、 页面控制器接收到请求后,进行功能处理,首先需要收集和绑定请求参数到一个对象,这个对象在Spring Web MVC中叫命令对象,并进行验证,然后将命令对象委托给业务对象进行处理;处理完毕后返回一个ModelAndView(模型数据和逻辑视图名)3、前端控制器收回控制权,然

6、后根据返回的逻辑视图名,选择相应的视图进行渲染,并把模型数据传入以便视图渲染4、前端控制器再次收回控制权,将响应返回给用户,至此整个结束。6、 重载和重写的区别7、 使用过哪些ORM框架,Hibernit与MyBatis、iBaits的区别联系或者原理Hibernate、MyBatis、iBatis1、Mybatis实现了接口绑定,使用更加方便 2、对象关系映射的改进,效率更高 3、MyBatis采用功能强大的基于OGNL的表达式来消除其他元素 8、 依赖注入的方式接口注入Set注入构造注入9、 Strings=newStirng(xyx),创建了几个对象两个10、 Struts1和Strut

7、s2的action的区别Stuts1有个核心控制器,但是只提供了一个接口,也就是execute,还要配置actionform之类的,很麻烦,所以依赖性比较强;而Stuts2是针对拦截器开发的,也就是所谓的AOP思想,可以配置多个action,用起来比较方便,但是因为请求之前的拦截器有一些注入的操作,速度相对Stuts1来说慢一点。11、 多线程的问题,怎么样创新线程?线程安全怎么理解?怎么避免死锁?如何创建新线程:继承Thread类创建线程类通过Runnable接口创建线程类通过Callable和Future创建线程线程安全:线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数

8、据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。常用的避免死锁的方法:1、有序资源分配法2、银行家算法12、 多态的具体表现多态就是允许方法重名 参数或返回值可以是父类型传入或返回。13、 JAVA常用设计模式单例设计模式工厂设计模式代理设计模式观察者设计模式适配器模式14、 servlet的生命周期,Cookie等Servlet:初始化阶段运行阶段销毁阶段Cookie:Cookie c = new Cookie(username,john);c.setMaxAge(60);/60秒的意思c.setMaxAge(60*60);/一小时c.

9、setMaxAge(365*24*60*60);/一年如果不设置过期时间,则表示这个cookie生命周期为浏览器会话期间,只要关闭浏览器窗口,cookie就消失了。15、 前端的一些问题,如EasyUI的控件用过多少?重写过没有Css类定义:diveasyui-window window窗口样式diveasyui-panel 面板aeasyui-linkbutton 链接类型的按钮input/textareaeasyui-validatebox 字段验证uleasyui-tree 树形结构tableeasyui-datagrid 表格diveasyui-tabs tab容器div menu-s

10、ep 菜单分隔线aeasyui-splitbutton 菜单列diveasyui-accordion手风琴式下拉框selecteasyui-combobox 组合下拉框selecteasyui-combotree 组合树形框bodydiveasyui-layout 布局diveasyui-menu菜单aeasyui-menubutton菜单按钮inputeasyui-numberbox 数字输入框Js定义:Window window窗口.tree 树形结构.datagrid 表格.combobox 组合下拉框.combotree 组合树形框.dialog对话框.draggable 可自由拖动的

11、块.linkbutton链式按钮.messager消息框.pagination页码工具条16、 JAVA 3大框架用过哪些,对那个比较熟,会对候选人比较熟的框架进行进一步面试,如struct2流程17、 Java是单继承还是多继承?使用接口的目的在哪里?单继承接口的作用就是把使用接口的人和实现接口的人分开,实现接口的人不必要关心谁去使用,而使用接口的人也不用关心谁实现的接口,由接口将他们联系在一起。18、 全局变量和局部变量的生命周期是怎么样的?作用域是什么?全局变量:服务停的时候销毁局部变量,在方法调用完就销毁全局变量就是在类的整个范围之内,都有效的变量局部变量就是在类中某个方法函数内或某个

12、子类内,有效的变量19、 同步异步的区别,怎么实现?同步:提交请求-等待服务器处理-处理完毕返回 这个期间客户端浏览器不能干任何事异步: 请求通过事件触发-服务器处理(这是浏览器仍然可以作其他事情)-处理完毕同步实现:ThreadLocal synchronized( ) wait() 与 notify() volatile异步实现:AsyncTaskHandler20、 面试官比较喜欢主动挖掘、主动思考的人,比如像用的框架,能够主动去了解过框架的原理,这样更好。21、 面试时要表达思路清晰、吐词清楚,不能声音太小,否则面试官听不到,影响面试结果。面试不用紧张。21.一个.java源文件中是否

13、可以包括多个类(不是内部类)?有什么限制?可以限制:一个文件中只能有一个public类并且此public类必须与文件名相同22、 .Java有没有goto? 1、java有goto2、但是java的goto是保留字3、保留字的意思就是不排除以后会启用,变成关键字。java有如下保留字:byValue, cast, future, generic, inner, operator, outer, rest, var , goto ,const23.说说&和&的区别。电路问题:对于:& - 不管怎样,都会执行&符号左右两边的程序对于:& - 只有当符号&左边程序为真(true)后,才会执行符号&右

14、边的程序。运算规则:对于:& - 只要左右两边有一个为false,则为false;只有全部都为true的时候,结果为true对于:& - 只要符号左边为false,则结果为false;当左边为true,同时右边也为true,则结果为true24. 在JAVA中如何跳出当前的多重嵌套循环? 可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的的break语句,即可跳出25. switch语句能否作用在byte上,能否作用在long上,能否作用在String上? switch可作用于char byte short intswitch可作用于char byte short in

15、t对应的包装类switch不可作用于long double float boolean,包括他们的包装类switch中可以是字符串类型,String(jdk1.7之后才可以作用在string上)switch中可以是枚举类型26. char型变量中能不能存贮一个中文汉字?为什么? 在Java中,char类型占2个字节,而且Java默认采用Unicode编码,以个Unicode码是16位,所以一个Unicode码占两个字节,Java中无论汉子还是英文字母都是用Unicode编码来表示的。所以,在Java中,char类型变量可以存储一个中文汉字。27. 使用final关键字修饰一个变量时,是引用不能

16、变,还是引用的对象不能变? 使用 final 关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的。28. =和equals方法究竟有什么区别?=操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同equals方法是用于比较两个独立对象的内容是否相同,就好比去比较两个人的长相是否相同,它比较的两个对象是独立的。29. 静态变量和实例变量的区别? 在语法定义上的区别:静态变量前要加static关键字,而实例变量前不加。在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这

17、个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码文件,不用创建任何实例象,静态变量就会被分配空间,静态变量就可以被使用了。 总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。30. 是否可以从一个static方法内部发出对非static方法的调用? 不可以。因为非static方法要与对象关联在一起,必须创建一个对象后,才可以在该对象上进行方法的调用,而static方法调用时不需要创建对象,可以直接调用。也就是说,一个static方法被调用时,可能还没有创建任何实例对象,所以,一个static方法内部不可以发出对

18、非static方法的调用。31. Integer与int的区别int是java提供的8种基本数据类型之一。Java为每个原始类型提供了封装类,Integer是Java为int提供的包装类。int的默认值是0,而Integer的默认值是null,即Integer可以区分出来未赋值和值为0的区别,int则无法表达出来未赋值的情况,例如想要表达出没有参加考试和考试成绩为0的区别,则只能用Integer。32. 请说出作用域public,private,protected,以及不写时的区别作用域同一类同一包子类中不同包publicprotecteddefualt(friendly)privatepub

19、lic:接口访问权限protected:继承访问权限default:包访问权限private:你无法访问(除了包含该成员的类以外,其他任何类都无法访问这个成员)33. Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型? Overload:重载Override:重写重载:同一个类中,方法名相同,参数列表不同。与返回值类型无关。重写:存在于子父类,或者子父接口中,方法声明相同。Overload的方法可以改变返回值的类型,因为它与返回值类型无关。34. 构造器Constructor是否可被override? 构造器Constructor不能被继承,因此不能

20、重写Overriding,但可以被重载Overloading。35. 接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法?接口可以继承接口抽象类可以实现(implements)接口抽象类是可以继承具体类抽象类中可以有静态的main方法36. 写clone()方法时,通常都有一行代码,是什么?Clone 有缺省行为,super.clone();他负责产生正确大小的空间,并逐位复制。37. 面向对象的特征有哪些方面抽象、继承、封装、多态性38. java中实现多态的机制是什么? 方法的

21、重写Overriding和重载Overloading是Java多态性的不同表现.重写Overriding是父类与子类之间多态性的一种表现重载Overloading是一个类中多态性的一种表现.39. abstract class和interface有什么区别? 含有abstract修饰符的class即为抽象类,abstract 类不能创建的实例对象。含有abstract方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的。abstract class类中定义抽象方法必须在具体(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法。如果

22、的子类没有实现抽象父类中的所有抽 象方法,那么子类也必须定义为abstract类型。接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static fina40. abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized? abstract的method 不可以是static的,因为抽象的方法是要被子类实现的,而static与子类扯不上关系native方法表示该方法要用另外一种依赖平台的编程语言实现的

23、,不存在着被子类实现的问题,所以,它也不能是抽象的,不能与abstract混用关于synchronized与abstract合用的问题,我觉得也不行,因为在我几年的学习和开发中,从来没见到过这种情况,并且我觉得 synchronized应该是作用在一个具体的方法上才有意义。而且,方法上的synchronized同步所使用的同步锁对象是this,而抽象方法 上无法确定this是什么41. 什么是内部类?Static Nested Class 和 Inner Class的不同内部类就是在一个类的内部定义的类,内部类中不能定义静态成员,内部类可以直接访问外部类中的成员变量,内部类可以定义在外部类的方

24、法外面,也可以定义在外部类的方法体中在方法外部定义的内部类前面可以加上static关键字,从而成为Static Nested Class,它不再具有内部类的特性,所有,从狭义上讲,它不是内部类。Static Nested Class与普通类在运行时的行为和功能上没有什么区别,只是在编程引用时的语法上有一些差别,它可以定义成public、protected、默认的、private等多种类型,而普通类只能定义成public和默认的这两种类型。在外面引用Static Nested Class类的名称为“外部类名.内部类名”。在外面不需要创建外部类的实例对象,就可以直接创建Static Nested

25、Class42. 内部类可以引用它的包含类的成员吗?有没有什么限制? 完全可以。如果不是静态内部类,那没有什么限制如果你把静态嵌套类当作内部类的一种特例,那在这种情况下不可以访问外部类的普通成员变量,而只能访问外部类中的静态成员43. jdk中哪些类是不能继承的?不能继承的是类是那些用final关键字修饰的类。一般比较基本的类型或防止扩展类无意间破坏原来方法的实现的类型都应该是final的,在jdk中System,String,StringBuffer等都是基本类型44. 是否可以继承String类?因为Sting是这样定义的:public final class String extends

26、 Object,里边有final关键字,所以不能被继承。45. String 和StringBuffer的区别String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。String:是对象不是原始类型.为不可变对象,一旦被创建,就不能修改它的值.对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去.Str

27、ing 是final类,即不能被继承.StringBuffer:是一个可变对象,当对他进行修改的时候不会像String那样重新建立对象它只能通过构造函数来建立。46. StringBuffer与StringBuilder的区别1.在执行速度方面的比较:StringBuilder StringBuffer2.StringBuffer与StringBuilder,他们是字符串变量,是可改变的对象,每当我们用它们对字符串做操作时,实际上是在一个对象上操作的,不像String一样创建一些对象进行操作,所以速度就快了。3.StringBuilder:线程非安全的 StringBuffer:线程安全的47

28、. 运行时异常与一般异常有何异同? 异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。Java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。48. sleep() 和 wait() 有什么区别? sleep()方法是属于Thread类中的。而wait()方法,则是属于Object类中的。sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。在调用sleep()方法的过程中,线程不会释放对象锁。而当调用w

29、ait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备获取对象锁进入运行状态。49. 同步和异步有何异同,在什么情况下分别使用他们?举例说明。如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。50. 启动一个线程是用run()还是start()? . 1、启动一个线

30、程是start()方法。2、启动线程之后start()方法会去调用run方法内容。区别:start是创建并启动一个线程,而run是要运行线程中的代码。51. 线程的基本概念、线程的基本状态以及状态之间的关系 线程是进程内的并发,没有自已内存空间,共享进程的,线程间的通信成本较低。Java中的线程有四种状态分别是:运行、就绪、挂起、结束。52. 说出一些常用的类,包,接口,请各举5个 常用的类:BufferedReader BufferedWriterFileReader FileWirterString IntegerJava.util.Date,Class,HashMap常用的接口:List

31、MapDocumentNodeListServlet, HttpServletResponse,Transaction(hibernate)、Session(Hibernate),HttpSession常用的包:java.langjava.iojava.utiljava.sqljavax.servletorg.hibernate53. java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类? 字节流,字符流。字节流继承于InputStream OutputStream,字符流继承于InputStreamReader OutputStreamWriter。

32、在java.io包中还有许多其他的流,主要是为了提高性能和使用方便。54. 字节流与字符流的区别字符流使用了缓冲区,而字节流没有使用缓冲区。55. 什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用。无论何种类型的数据,都是以二进制的形式在网络上传送,为了由一个进程把Java对象发送给另一个进程,需要把其转换为字节序列才能在网络上传送,把JAVA对象转换为字节序列的过程就称为对象的序列化,将字节序列恢复成Java对象的过程称为对象的反序列化只有实现了 serializable和Externalizable接口的类的对象才能被序列化后者是前者的子类实现这个

33、借口的类完全由自身来控制序列化的行为,而仅仅实现前者的类可以采用默认的序列化方式。实现这两个接口 标志着对象可以被序列化了所谓的Serializable,就是java提供的通用数据保存和读取的接口。至于从什么地方读出来和保存到哪里去都被隐藏在函数参数的背后了。这样子,任何类型只要实现了Serializable接口,就可以被保存到文件中,或者作为数据流通过网络发送到别的地方。也可以用管道来传输到系统的其他程序中。这样子极大的简化了类的设计。只要设计一个保存一个读取功能就能解决上面说得所有问题。56. 描述一下JVM加载class文件的原理机制? JVM中类的装载是由ClassLoader和它的子

34、类来实现的,Java ClassLoader 是一个重要的Java运行时系统组件。它负责在运行时查找和装入类文件的类。57. heap和stack有什么区别。1.heap是堆,stack是栈。2.stack的空间由操作系统自动分配和释放,heap的空间是手动申请和释放的,heap常用new关键字来分配。3.stack空间有限,heap的空间是很大的自由区。58. 垃圾回收的优点和原理。并考虑2种回收机制。 垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清除和回收,程序员不

35、能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。59. 垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收? 对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是”可达的”,哪些对象是”不可达的”。当GC确定一些对象为”不可达”时,GC就有责任回收这些内存空间。可以。程序员可以手动执行System.gc(),通知GC运行,但是Java语言规范并不保证GC一定会执行。60

36、. 什么时候用assert。断言是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为 true。如果表达式计算为 false,那么系统会报告一个 Assertionerror。61. java中会存在内存泄漏吗,请简单描述。 会。如:int i,i2; return (i-i2); /when i为足够大的正数,i2为足够大的负数。结果会造成溢位,导致错误62. 能不能自己写个类,也叫?可以,但在应用的时候,需要用自己的类加载器去加载,否则,系统的类加载器永远只是去加载jre.jar包中的那个。63. 、存储过程与触发器触发器与存储过程的主要区别在于触发器的运行方式。存储过程必须有用户、

37、应用程序或者触发器来显示的调用并执行,而触发器是当特定时间出现的时候,自动执行或者激活的,与连接用数据库中的用户、或者应用程序无关。当一行被插入、更新或者删除时触发器才执行,同时还取决于触发器是怎样创建的,当UPDATE发生时使用一个更新触发器,当INSERT发生时使用一个插入触发器,当DELETE发生时使用一个删除触发器。64. 数据库三范式是什么?第一范式(1NF):属性不可拆分 或 无重复的列第二范式(2NF):完全函数依赖3.第三范式(3NF):消除传递依赖65. 说出一些数据库优化方面的经验?用PreparedStatement 一般来说比Statement性能高:一个sql 发给服

38、务器去执行,涉及步骤:语法检查、语义分析, 编译,缓存有外键约束会影响插入和删除性能,如果程序能够保证数据的完整性,那在设计数据库时就去掉外键。66. union和union all有什么不同?Union,对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;Union All,对两个结果集进行并集操作,包括重复行,不进行排序;67. 注册Jdbc驱动程序的三种方式DriverManager.registerDriver(new();System.setProperty(jdbc.drivers,);Class.forName();68. 用JDBC如何调用存储过程使用 JDBC 驱

39、动程序调用不带参数的存储过程时,必须使用 call SQL 转义序列ResultSetrs=stmt.executeQuery(calldbo.ProcedureName);调用带参数的存储过程时,必须结合SQLServerConnection类的prepareCall方法使用callSQL转义序列69. JDBC中的PreparedStatement相比Statement的好处1、相对比较安全,可以防止sql注入2、有预编译功能,相同操作批量数据效率较高70. Class.forName的作用?为什么要用? JDO是Java对象持久化的新的规范,为javadataobject的简称,也是一个

40、用于存取某种数据仓库中的对象的标准化API。JDO提供了透明的对象存储,因此对开发人员来说,存储数据对象完全不需要额外的代码(如JDBCAPI的使用)。这些繁琐的例行工作已经转移到JDO产品提供商身上,使开发人员解脱出来,从而集中时间和精力在业务逻辑上。另外,JDO很灵活,因为它可以在任何数据底层上运行。JDBC只是面向关系数据库(RDBMS)JDO更通用,提供到任何数据底层的存储功能,比如关系数据库、文件、XML以及对象数据库(ODBMS)等等,使得应用可移植性更强。71. 大数据量下的分页解决方法。sql server:String sql =select top + pageSize +

41、 * from students where id not in +(select top + pageSize * (pageNumber-1) + id from students order by id) +order by id;mysql:String sql =select * from students order by id limit + pageSize*(pageNumber-1) + , + pageSize;oracle:String sql =select * from + (select *,rownum rid from (select * from stude

42、nts order by postime desc) where rid + pageSize*(pageNumber-1);72. 说出数据连接池的工作机制是什么? J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。73. 流行的框架与新技术74. AOP的作用。Aop:oop的一个横向服务,是对oop进一步补充,提高安全、事务、

43、日志等的集中式处理.x0d相关的装备 before、around、after75. hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。saveOrUpdate()方法可以实现update()的功能,但是会多些步骤,具体如下:如果对象在该session种已经持久化,不进行操作;对象的标识符属性(identifierproperty)在数据库中不存在或者是个暂时的值,调用save()方法保存它;如果session中的另一个对象有相同的标识符抛出一个异常;以上皆不符合则调用update()更新之。session.load/ge

44、t方法均可以根据指定的实体类和id从数据库读取记录,get方法返回null,而load方法会抛出一个ObjectNotFoundException;load方法可返回实体的代理类实例,而get方法永远直接返回实体类;load方法可以充分利用内部缓存和二级缓存中的现有数据而get方法则仅仅在内部缓存中进行数据查找,如果没有发现对应的数据,将越过二级缓存,直接调用sql完成数据读取。76. 简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件Hibernate就是封装了JDBC,他可以写一条hql语句,可以再不同数据库中使用,不用修改hql语句,但是关

45、联查询效率低。JDBC是基础的链接数据库的框架,效率高,但是mysql、oracle、sql service等不同的数据库要写不同的sql语句。77. j2ee常用的设计模式?说明工厂模式Factory(工厂模式),Builder(建造模式), Factory Method(工厂方法模式),Prototype(原始模型模式),Singleton(单例模式), Facade(门面模式),Adapter(适配器模式), Bridge(桥梁模式),Composite(合成模式),Decorator(装饰模式), Flyweight(享元模式), Proxy(代理模式),Command(命令模式),

46、Interpreter(解释器模式), Visitor(访问者模式),Iterator(迭代子模式), Mediator(调停者模式), Memento(备忘录模式),Observer(观察者模式), State(状态模式), Strategy(策略模式),Template Method(模板方法模式), Chain Of Responsibleity(责任链模式)工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例,通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。78. 应用服务

温馨提示

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

评论

0/150

提交评论