javaweb面试题1,解释java语言的面向对象特性。(5分)2,什么是java的集合(Collection)API?主要包括那些类和接口?使用集合API比传统的vector,数组,hastable等相比有什么优点?(10分)3,请解释用户定义的异常,并给出一个例子。(10分)4,使用java语言实现冒泡排序算法。(5分)5,在struts中,MVC模式中的M,V,C分别是哪些类实现的?一般情况下,定义自己的formbean和action,分别应该继承哪个类?(10分)6,Struts中是否每一个HTML表单(form)的元素都要在formbean中有一个相应的成员变量,以及其get/set方法?(5分)7,有一段struts配置文件片断如下:actionscope=requestpath=/flfg/FlfgActiontype=demo.flfg.FlfgActioninput=/flfg/main.jspname=FlfgFormattribute=FlfgFormforwardname=leftpath=/flfg/left.jspredirect=”true”/forwardname=rightpath=/flfg/right.jsp//action请说明上面配置文件片断中action和forward各属性的含义。(5分)8,Javascript有一段网页代码片断如下:formname=”sampleForm”action=”/sampleAction.do”method=”post”target=”_self”divlabelName/labelinputtype=”text”name=”name”/divdivlabelAddress/labelinputtype=”text”name=”address”/divdivclass=operationsinputtype=submitname=submitvalue=submit/div/form请问,(共15分)1)在javascript中如何访问form中的输入(input)元素,举例说明?(2分)2)在网页提交前,需要对输入域中的字段进行校验。要求地址(address)长度不少于10个字符,但是不大于100个字符;姓名(name)长度不少于2个字符,不大于8个字符,而且是不能为空的。请分别写出客户端javascript验证代码和服务器端验证代码片断。(5分)3)现在想将这段页面改成使用struts标签的,而且想支持国际化。假设国际化文本已经定义为label.name=Namelabel.address=Address。请写出改造后的网页代码片断。(8分)9,Hibernate(共20分)a)什么是hibernate?(2分)b)请说明mapping文件和hinbernate.cfg.xml文件。(3分)c)请说明HQL语言与SQL语言的关系和区别。(3分)d)在hibernate中如何使用RAWSQL。(2分)e)如何定义一对多关系?多对一关系?一对一关系?多对多关系?(5分)f)请说明i.org.hibernate.Query;ii.org.hibernate.Session;iii.org.hibernate.Transaction;的常见方法。(5分)g)使用hibernate进行对象持久化操作有什么优点和缺点?(5分)10,数据库(共15分)a)简要说明数据库事务的ACID性质。(5分)b)以表test1(f1,f2,f3),test2(f1,f2)为例子写出简单的DML示例SQL语句。(select,insert,update,delete)(8分)c)以oracle数据库为例子,写一个左连接(leftouterjoin)的例子SQL语句。(2分)Java基础方面:1、作用域public,private,protected,以及不写时的区别答:区别如下:作用域当前类同一package子孙类其他packagepublic√√√√protected√√√×friendly√√××private√×××不写时默认为friendly2、AnonymousInnerClass(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)答:匿名的内部类是没有名字的内部类。不能extends(继承)其它类,但一个内部类可以作为一个接口,由另一个内部类实现3、StaticNestedClass和InnerClass的不同答:NestedClass(一般是C++的说法),InnerClass(一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。注:静态内部类(InnerClass)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象4、&和&&的区别答:&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)5、Collection和Collections的区别答:Collection是集合类的上级接口,继承与他的接口主要有Set和List.Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作6、什么时候用assert答:assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。一般来说,assertion用于保证程序最基本、关键的正确性。assertion检查通常在开发和测试时开启。为了提高性能,在软件发布后,assertion检查通常是关闭的7、Strings=newString(xyz);创建了几个StringObject答:两个,一个字符对象,一个字符对象引用对象8、Math.round(11.5)等於多少?Math.round(-11.5)等於多少答:Math.round(11.5)==12;Math.round(-11.5)==-11;round方法返回与参数最接近的长整数,参数加1/2后求其floor9、shorts1=1;s1=s1+1;有什么错?shorts1=1;s1+=1;有什么错答:shorts1=1;s1=s1+1;(s1+1运算结果是int型,需要强制转换类型)shorts1=1;s1+=1;(可以正确编译)10、Java有没有goto答:java中的保留字,现在没有在java中使用11、数组有没有length()这个方法?String有没有length()这个方法答:数组没有length()这个方法,有length的属性。String有有length()这个方法12、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型答:方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被屏蔽了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型13、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()?它们有何区别答:Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值14、给我一个你最常见到的runtimeexception答:常见的运行时异常有如下这些ArithmeticException,ArrayStoreException,BufferOverflowException,BufferUnderflowException,CannotRedoException,CannotUndoException,ClassCastException,CMMException,ConcurrentModificationException,DOMException,EmptyStackException,IllegalArgumentException,IllegalMonitorStateException,IllegalPathStateException,IllegalStateException,ImagingOpException,IndexOutOfBoundsException,MissingResourceException,NegativeArraySizeException,NoSuchElementException,NullPointerException,ProfileDataException,ProviderException,RasterFormatException,SecurityException,SystemException,UndeclaredThrowableException,UnmodifiableSetException,UnsupportedOperationException15、error和exception有什么区别答:error表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况exception表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况16、List,Set,Map是否继承自Collection接口答:List,Set是,Map不是17、abstractclass和interface有什么区别答:声明方法的存在而不去实现它的类被叫做抽象类(abstractclass),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义staticfinal成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof运算符可以用来决定某对象的类是否实现了接口18、abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized答:都不能19、接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承实体类(concreteclass)答:接口可以