东软信息学院创业实训中心Java面试笔试题汇总一、编程语言(Java)....................................................................................................................2二、软件工程方面...........................................................................................................................9三、智力测试...................................................................................................................................9四、数据库.....................................................................................................................................12五、Java框架方面.........................................................................................................................14六、XML方面................................................................................................................................17七、网络基础方面.........................................................................................................................17八、算法方面.................................................................................................................................19-1-东软信息学院创业实训中心一、编程语言(Java)1、Java多态的实现答案:继承、重载、覆盖2、String类是否能被继承答案:不能,是个final修饰的类。3、访问修饰符“public/private/protected/缺省的修饰符”的使用答案:作用域当前类同一package子孙类其他packagepublic√√√√protected√√√×friendly√√××private√×××不写时默认为friendly4、用关键字final修饰一个类或者方法时,有何意义?答案:用final修饰的类不能被继承,使用final修饰的方法不能被覆盖。5、谈谈final,finally,finalize的区别。答案:final?修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载finally?再异常处理时提供finally块来执行任何清除操作。如果抛出一个异常,那么相匹配的catch子句就会执行,然后控制就会进入finally块(如果有的话)。finalize?方法名。Java技术允许使用finalize()方法在垃圾收集器将-2-东软信息学院创业实训中心对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在Object类中定义的,因此所有的类都继承了它。子类覆盖finalize()方法以整理系统资源或者执行其他清理工作。finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。6、AnonymousInnerClass(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?答案:匿名的内部类是没有名字的内部类。不能extends(继承)其它类,但一个内部类可以作为一个接口,由另一个内部类实现。7、HashMap和Hashtable的区别。答案:都属于Map接口的类,实现了将惟一键映射到特定的值上。HashMap类没有分类或者排序。它允许一个null键和多个null值。Hashtable类似于HashMap,但是不允许null键和null值。它也比HashMap慢,因为它是同步的。8、Collection和Collections的区别。答案:Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。Collection是个java.util下的接口,它是各种集合结构的父接口。9、sleep()和wait()有什么区别?搞线程的最爱答案:sleep()方法是使线程停止一段时间的方法。在sleep时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级(b)正在运行的线程因为其它原因而阻塞。wait()是线程交互时,如果线程对一个同步对象x发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。-3-东软信息学院创业实训中心10、Java有没有goto?答案:Goto?java中的保留字,现在没有在java中使用。11、数组有没有length()这个方法?String有没有length()这个方法?答案:数组没有length()这个方法,有length的属性。String有有length()这个方法12、构造器Constructor是否可被override?答案:构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。13、try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后?答案:会执行,在return前执行。14、面向对象的特征有哪些方面答案:(1).抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。(2).继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。(3).封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。(4).多态性:多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和-4-东软信息学院创业实训中心包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。15、说出ArrayList,Vector,LinkedList的存储性能和特性答案:ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。16、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?答:多线程有两种实现方法,分别是继承Thread类与实现Runnable接口同步的实现方面有两种,分别是synchronized,wait与notify17、jsp有哪些内置对象?作用分别是什么?答:JSP共有以下9种基本内置组件(可与ASP的6种内部组件相对应):request用户端请求,此请求会包含来自GET/POST请求的参数response网页传回用户端的回应pageContext网页的属性是在这里管理session与请求有关的会话期applicationservlet正在执行的内容out用来传送回应的输出configservlet的构架部件pageJSP网页本身exception针对错误网页,未捕捉的例外-5-东软信息学院创业实训中心18、jsp有哪些动作?作用分别是什么?答:JSP共有以下6种基本动作jsp:include:在页面被请求的时候引入一个文件。jsp:useBean:寻找或者实例化一个JavaBean。jsp:setProperty:设置JavaBean的属性。jsp:getProperty:输出某个JavaBean的属性。jsp:forward:把请求转到一个新的页面。jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记19、两种跳转方式分别是什么?有什么区别?答:有两种,分别为:jsp:includepage=included.jspflush=truejsp:forwardpage=nextpage.jsp/前者页面不会转向include所指的页面,只是显示该页的结果,主页面还是原来的页面。执行完后还会回来,相当于函数调用。并且可以带参数.后者完全转向新页面,不会再回来。相当于goto语句。20、forward和redirect的区别答案:forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。21、说出Servlet的生命周期,并说出Servlet和CGI的区别。答案:Servlet被服务器实例化后,容器运行其init方法,请求到达时运行-6-东软信息学院创业实训中心其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。22、EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。答案:EJB包括SessionBean、EntityBean、MessageD