夜上海社区论坛

Java笔试题和答案

时间:2024-11-06 13:39:46 赛赛 笔试题目 我要投稿
  • 相关推荐

Java笔试题和答案

  在各个领域,我们最不陌生的就是试题了,试题可以帮助学校或各主办方考察参试者某一方面的知识才能。那么你知道什么样的试题才能有效帮助到我们吗?以下是小编为大家收集的Java笔试题和答案,欢迎大家分享。

Java笔试题和答案

  Java笔试题和答案 1

  面向对象编程(OOP)

  Java是一个支持并发、基于类和面向对象的计算机编程语言。下面列出了面向对象软件开发的优点:

  代码开发模块化,更易维护和修改。

  代码复用。

  增强代码的可靠性和灵活性。

  增加代码的可理解性。

  面向对象编程有很多重要的特性,比如:封装,继承,多态和抽象。下面的章节我们会逐个分析这些特性。

  封装

  封装给对象提供了隐藏内部特性和行为的能力。对象提供一些能被其他对象访问的方法来改变它内部的数据。在Java当中,有3种修饰符:public,private和protected。每一种修饰符给其他的位于同一个包或者不同包下面对象赋予了不同的访问权限。

  下面列出了使用封装的一些好处:

  通过隐藏对象的属性来保护对象内部的状态。

  提高了代码的可用性和可维护性,因为对象的行为可以被单独的改变或者是扩展。

  禁止对象之间的不良交互提高模块化。

  参考这个文档获取更多关于封装的细节和示例。

  多态

  多态是编程语言给不同的底层数据类型做相同的接口展示的一种能力。一个多态类型上的操作可以应用到其他类型的值上面。

  继承

  继承给对象提供了从基类获取字段和方法的能力。继承提供了代码的重用行,也可以在不修改类的情况下给现存的类添加新特性。

  抽象

  抽象是把想法从具体的实例中分离出来的步骤,因此,要根据他们的功能而不是实现细节来创建类。Java支持创建只暴漏接口而不包含方法实现的抽象的类。这种抽象技术的主要目的是把类的行为和实现细节分离开。

  抽象和封装的不同点

  抽象和封装是互补的概念。一方面,抽象关注对象的行为。另一方面,封装关注对象行为的细节。一般是通过隐藏对象内部状态信息做到封装,因此,封装可以看成是用来提供抽象的一种策略。

  常见的Java问题

  1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?

  Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。

  Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。

  2.JDK和JRE的区别是什么?

  Java运行时环境(JRE)是将要执行Java程序的Java虚拟机。它同时也包含了执行applet需要的浏览器插件。Java开发工具包 (JDK)是完整的Java软件开发包,包含了JRE,编译器和其他的工具(比如:JavaDoc,Java调试器),可以让开发者开发、编译、执行 Java应用程序。

  3.”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?

  “static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的`实例变量的情况下被访问。

  Java中static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而static方法是编译时静态绑定的。static方法跟类的任何实例都不相关,所以概念上不适用。

  4.是否可以在static环境中访问非static变量?

  static变量在Java中是属于类的,它在所有的实例中的值是一样的。当类被Java虚拟机载入的时候,会对static变量进行初始化。如果你的代码尝试不用实例来访问非static的变量,编译器会报错,因为这些变量还没有被创建出来,还没有跟任何实例关联上。

  5.Java支持的数据类型有哪些?什么是自动拆装箱?

  Java语言支持的8中基本数据类型是:

  byte

  short

  int

  long

  float

  double

  boolean

  char

  自动装箱是Java编译器在基本数据类型和对应的对象包装类型之间做的一个转化。比如:把int转化成Integer,double转化成double,等等。反之就是自动拆箱。

  6.Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?

  Java中的方法重载发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的情况。与此相对,方法覆盖是说子类重新定义了父类的方法。方法覆盖必须有相同的方法名,参数列表和返回类型。覆盖者可能不会限制它所覆盖的方法的访问。

  7.Java中,什么是构造函数?什么是构造函数重载?什么是复制构造函数?

  当新对象被创建的时候,构造函数会被调用。每一个类都有构造函数。在程序员没有给类提供构造函数的情况下,Java编译器会为这个类创建一个默认的构造函数。

  Java中构造函数重载和方法重载很相似。可以为一个类创建多个构造函数。每一个构造函数必须有它自己唯一的参数列表。

  Java不支持像C++中那样的复制构造函数,这个不同点是因为如果你不自己写构造函数的情况下,Java不会创建默认的复制构造函数。

  8.Java支持多继承么?

  不支持,Java不支持多继承。每个类都只能继承一个类,但是可以实现多个接口。

  9.接口和抽象类的区别是什么?

  Java提供和支持创建抽象类和接口。它们的实现有共同点,不同点在于:

  接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法

  Java笔试题和答案 2

  1、在java中如果声明一个类为final,表示什么意思?

  答:final是最终的意思,final可用于定义变量、方法和类但含义不同,声明为final的类不能被继承。

  2、父类的构造方法是否可以被子类覆盖(重写)?

  答:父类的构造方法不可以被子类覆盖,因为父类和子类的类名是不可能一样的。

  3、请讲述String 和StringBuffer的区别。

  答:String 类所定义的对象是用于存放“长度固定”的字符串。

  StringBuffer类所定义的对象是用于存放“长度可变动”的字符串。

  4、如果有两个类A、B(注意不是接口),你想同时使用这两个类的功能,那么你会如何编写这个C类呢?

  答:因为类A、B不是接口,所以是不可以直接继承的,但可以将A、B类定义成父子类,那么C类就能实现A、B类的功能了。假如A为B的父类,B为C的父类,此时C就能实现A、B的功能。

  5、结合Java视频Lesson5(多线程),分析sleep()和wait()方法的区别。

  答: Sleeping睡眠的意思 : sleep() 方法用来暂时中止执行的线程。在睡眠后,线程将进入就绪状态。

  waiting等待的.意思: 如果调用了 wait() 方法,线程将处于等待状态。用于在两个或多个线程并发运行时。

  6、谈谈你对抽象类和接口的理解。

  答:定义抽象类的目的是提供可由其子类共享的一般形式、子类可以根据自身需要扩展抽象类、抽象类不能实例化、抽象方法没有函数体、抽象方法必须在子类中给出具体实现。他使用extends来继承。

  接口:一个接口允许一个类从几个接口继承而来,Java 程序一次只能继承一个类但可以实现几个接口,接口不能有任何具体的方法,接口也可用来定义可由类使用的一组常量。其实现方式是interface来实现。

  Java笔试题和答案 3

  1. Java中sleep和wait的区别

  ① 这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类。

  sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用b的sleep方法,实际上还是a去睡觉,要让b线程睡觉要在b的代码中调用sleep。

  ② 锁: 最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。

  sleep不出让系统资源;wait是进入线程等待池等待,出让系统资源,其他线程可以占用CPU。一般wait不会加时间限制,因为如果wait线程的运行资源不够,再出来也没用,要等待其他线程调用notify/notifyAll唤醒等待池中的所有线程,才会进入就绪队列等待OS分配系统资源。sleep(milliseconds)可以用时间指定使它自动唤醒过来,如果时间不到只能调用interrupt()强行打断。

  Thread.sleep(0)的作用是“触发操作系统立刻重新进行一次CPU竞争”。

  ③ 使用范围:wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用。

  synchronized(x){ x.notify() //或者wait() }

  2. Java中HashMap和HashTable的区别

  ① 历史原因: Hashtable是给予陈旧的Dictonary类的, HashMap是Java1.2引进的Map接口的一个实现

  ② HashMap允许空的键值对, 而HashTable不允许

  ③ HashTable同步,而HashMap非同步,效率上比HashTable要高

  3. 请简述在异常当中,throw和throws有什么区别

  ① throw代表动作,表示抛出一个异常的动作;throws代表一种状态,代表方法可能有异常抛出

  ② throw用在方法实现中,而throws用在方法声明中

  ③ throw只能用于抛出一种异常,而throws可以抛出多个异常

  4. 内存溢出和内存泄露的区别

  内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。

  内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。

  memory leak会最终会导致out of memory!

  内存溢出就是你要求分配的内存超出了系统能给你的,系统不能满足需求,于是产生溢出。

  内存泄漏是指你向系统申请分配内存进行使用(new),可是使用完了以后却不归还(),结果你申请到的那块内存你自己也不能再访问(也许你把它的地址给弄丢了),而系统也不能再次将它分配给需要的程序。一个盘子用尽各种方法只能装4个果子,你装了5个,结果掉倒地上不能吃了。这就是溢出!比方说栈,栈满时再做进栈必定产生空间溢出,叫上溢,栈空时再做退栈也产生空间溢出,称为下溢。就是分配的内存不足以放下数据项序列,称为内存溢出。

  以发生的方式来分类,内存泄漏可以分为4类:

  ① 常发性内存泄漏。发生内存泄漏的代码会被多次执行到,每次被执行的'时候都会导致一块内存泄漏。

  ② 偶发性内存泄漏。发生内存泄漏的代码只有在某些特定环境或操作过程下才会发生。常发性和偶发性是相对的。对于特定的环境,偶发性的也许就变成了常发性的。所以测试环境和测试方法对检测内存泄漏至关重要。

  ③ 一次性内存泄漏。发生内存泄漏的代码只会被执行一次,或者由于算法上的缺陷,导致总会有一块仅且一块内存发生泄漏。比如,在类的构造函数中分配内存,在析构函数中却没有释放该内存,所以内存泄漏只会发生一次。

  ④ 隐式内存泄漏。程序在运行过程中不停的分配内存,但是直到结束的时候才释放内存。严格的说这里并没有发生内存泄漏,因为最终程序释放了所有申请的内存。但是对于一个服务器程序,需要运行几天,几周甚至几个月,不及时释放内存也可能导致最终耗尽系统的所有内存。所以,我们称这类内存泄漏为隐式内存泄漏。

  从用户使用程序的角度来看,内存泄漏本身不会产生什么危害,作为一般的用户,根本感觉不到内存泄漏的存在。真正有危害的是内存泄漏的堆积,这会最终消耗尽系统所有的内存。从这个角度来说,一次性内存泄漏并没有什么危害,因为它不会堆积,而隐式内存泄漏危害性则非常大,因为较之于常发性和偶发性内存泄漏它更难被检测到。

  5. String,StringBuffer 和 StringBuilder的区别

  ①可变与不可变

  String类中使用字符数组保存字符串,如下就是,因为有“final”修饰符,所以可以知道string对象是不可变的。

  private final char value[];

  StringBuilder与StringBuffer都继承自AbstractStringBuilder类,在AbstractStringBuilder中也是使用字符数组保存字符串,如下就是,可知这两种对象都是可变的。

  char[] value;

  ②是否多线程安全

  String中的对象是不可变的,也就可以理解为常量,显然线程安全。

  AbstractStringBuilder是StringBuilder与StringBuffer的公共父类,定义了一些字符串的基本操作,如expandCapacity、append、、indexOf等公共方法。

  StringBuffer对方法加了同步锁或者对调用的方法加了同步锁,所以是线程安全的。看如下源码:

  public synchronized StringBuffer reverse() { super.reverse(); return this; } public int indexOf(String str) { return indexOf(str, 0); //存在 public synchronized int indexOf(String str, int fromIndex) 方法 }

  StringBuilder并没有对方法进行加同步锁,所以是非线程安全的。

  ③StringBuilder与StringBuffer共同点

  StringBuilder与StringBuffer有公共父类AbstractStringBuilder(抽象类)。

  抽象类与接口的其中一个区别是:抽象类中可以定义一些子类的公共方法,子类只需要增加新的功能,不需要重复写已经存在的方法;而接口中只是对方法的申明和常量的定义。

  StringBuilder、StringBuffer的方法都会调用AbstractStringBuilder中的公共方法,如super.append(...)。只是StringBuffer会在方法上加synchronized关键字,进行同步。

  最后,如果程序不是多线程的,那么使用StringBuilder效率高于StringBuffer。

  6. 数组和链表的区别

  二者都属于一种数据结构

  从逻辑结构来看:

  ① 数组必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情况。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费;数组可以根据下标直接存取。

  ② 链表动态地进行存储分配,可以适应数据动态地增减的情况,且可以方便地插入、删除数据项。(数组中插入、删除数据项时,需要移动其它数据项,非常繁琐)链表必须根据next指针找到下一个元素。

  从内存存储来看:

  ①(静态)数组从栈中分配空间,对于程序员方便快速,但是自由度小。

  ②链表从堆中分配空间,自由度大但是申请管理比较麻烦。

  从上面的比较可以看出,如果需要快速访问数据,很少或不插入和删除元素,就应该用数组;相反,如果需要经常插入和删除元素就需要用链表数据结构了。

  7. ArrayList和LinkedList的区别

  ①ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。

  ②对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。

  ③对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。

  Java笔试题和答案 4

  1. J2EE 是什么?它包括哪些技术?

  解答:从整体上讲,J2EE 是使用 Java 技术开发企业级应用的工业标准,它是 Java 技术不断适应和促进企业级应用过程中的产物.适用于企业级应用的 J2EE,提供一个平台 独立的、可移植的、多用户的、安全的和基于标准的企业级平台,从而简化企业应用的开发、管理和部署。J2EE 是一个标准,而不是一个现成的产品。

  主要包括以下这些技术:

  1) Servlet

  Servlet 是 Java 平台上的 CGI 技术。Servlet 在服务器端运行,动态地生成 Web 页面。与传统的 CGI和许多其它类似 CGI 的技术相比,Java Servlet 具有更高的效率并更容易使用。对于 Servlet,重复的请求不会导致同一程序的多次转载,它是依靠线程的方式来支持并发访问的。

  2)JSP

  JSP(Java Server Page)是一种实现普通静态 HTML 和动态页面输出混合编码的技术。从这一点来看,非常类似 MicrosoftASP、PHP 等技术。借助形式上的内容和外观表现的分离,Web 页面制作的任务可以比较方便地划分给页面设计人员和程序员,并方便地通过JSP 来合成。在运行时态,JSP 将会被首先转换成 Servlet,并以 Servlet 的形态编译运行,因此它的效率和功能与 Servlet 相比没有差别,一样具有很高的效率。

  3) EJB

  EJB 定义了一组可重用的组件:Enterprise Beans。开发人员可以利用这些组件,像搭积木一样建立分布式应用。

  4)JDBC

  JDBC(Java Database Connectivity , Java 数据库连接)API 是 一 个 标 准 SQL(Structured QueryLanguage,结构化查询语言)数据库访问接口,它使数据库开发人员能够用标准 Java API 编写数据库应用程序。JDBC API 主要用来连接数据库和直接调用 SQL 命令执行各种 SQL 语句。利用 JDBC API 可以执行一般的 SQL 语句、 动态 SQL 语句及带 IN 和 OUT 参数的存储过程。 Java 中的 JDBC 相当于 Microsoft平台中的 ODBC(Open DatabaseConnectivity)。

  2.测试生命周期、测试过程分为几个阶段,以及各阶段的含义?

  解答:软件测试生命周期一般包括 6 个阶段:1)计划 2)分析,3)设计,4)构建,5)测试周期,6)最后测试和实施,1) 计划:产品定义阶段2). 分析:外部文档阶段3). 设计:文档架构阶段4). 构建:单元测试阶段5). 测试周期:错误修正,重复系统测试阶段6). 最后的测试和实施:代码冻结阶段

  4. 什么是 Web 容器?

  解答:容器就是一种服务程序,在服务器一个端口就有一个提供相应服务的程序,而这个程序就是处理从客户端发出的请求,如 JAVA 中的 Tomcat 容器,ASP 的 IIS 或 PWS 都是这样的容器。

  5. 运行时异常与一般异常有何异同?

  解答:异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java 编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。

  9.试述数据库完整保护的主要任务和措施。

  解答:数据库的完整性保护也就是数据库中数据正确性的维护。数据库完整性包括三个内容:实体完整性规则,参照物完整性规则以及用户定义完整性规则。前两个是有 DBMS 自动处理。实体完整性规则是说针对于基表中的关键字中属性值不能为空值,是数据库完整性的基本要求,主关键字和元组的唯一性对应。参照物完整性规则是不允许引用不存在的元组:即基表中的外关键字要么为空,要么关联基表中必存在元组。用户定义完整性规则针对具体的数据环境由用户具体设置的规则,它反应了具体应用中的语义要求。一个完整性规则一般由下面三部分组成:完整性约束条件设置,完整性约束条件的检查以及完整性约束条件的处理.后两部分在数据库中一般有相应的模块处理。另外触发器也可以做完整性的保护,但触发器大量用于主动性领域。

  12. 类有哪三个基本特性?各特性的优点?

  解答:类具有封装性、继承性和多态性。

  封装性:类的封装性为类的成员提供公有、缺省、保护和私有等多级访问权限,目的是隐藏类中的私有变量和类中方法的实现细节。

  继承性:类的继承性提供从已存在的类创建新类的机制,继承(inheritance)使一个新类自动拥有被继承类(父类)的全部可继承的成员。

  多态性:类的多态性提供类中方法执行的多样性,多态性有两种表现形式:重载和覆盖。

  13.谈谈对 XML 的理解?说明 Web 应用中 Web.xml 文件的作用?

  解答:XML(Extensible Markup Language)即可扩展标记语言,它与 HTML 一样,都是 SGML(Standard GeneralizedMarkup Language,标准通用标记语言)。Xml 是 Internet 环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。扩展标记语言 XML 是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然 XML 占用的空间比二进制数据要占用更多的空间,但 XML 极其简单易于掌握和使用。web.xml的作用是配置欢迎页,servlet,filter,listener 等的。

  14.jsp 有哪些内置对象?作用分别是什么?(至少三个)

  解答:1)request 表示 HttpServletRequest 对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, header 和 session 数据的有用的方法。

  2)response 表示 HttpServletResponse 对象,并提供了几个用于设置送回浏览器的响应的方法(如cookies,头信息等)。

  3) out 对象是javax.jsp.JspWriter 的一个实例, 并提供了几个方法使你能用于向浏览器回送输出结果。

  4) pageContext 表示一个 javax.servlet.jsp.PageContext 对象。它是用于方便存取各种范围的名字空间、servlet 相关的对象的 API,并且包装了通用的servlet 相关功能的方法。

  5)session 表示一个请求的 javax.servlet.http.HttpSession 对象。Session 可以存贮用户的状态信息。

  6)application 表示一个 javax.servle.ServletContext 对象。这有助于查找有关 servlet 引擎和servlet 环境的信息。

  7)config 表示一个 javax.servlet.ServletConfig 对象。该对象用于存取 servlet 实例的初始化参数。

  8)page 表示从该页面产生的一个servlet 实例。9)exception 针对错误网页,未捕捉的例外

  15.事务是什么?有哪些属性,并简要说明这些属性的.含义。

  解答:事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如 SQL,C++或 Java)书写的用户程序的执行所引起,并用形如 begin transaction 和 end transaction 语句(或函数调用)来界定。事务由事务开始(begintransaction)和事务结束(end transaction)之间执行的全体操作组成。事务应该具有 4 个属性:原子性、一致性、隔离性、持续性。这四个属性通常称为 ACID 特性。

  (atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。

  一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。

  隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。

  持久性(durability)。持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。

  19、HashMap 和 Hashtable 的区别?

  解答:HashMap 是 Hashtable 的轻量级实现(非线程安全的实现) ,他们都实现了 Map 接口,主要区别在于HashMap 允许空(null)键值(key),由于非线程安全,效率上高于 Hashtable。HashMap 允许将 null 作为一个 entry 的 key 或者 value, Hashtable 不允许HashMap 把 Hashtable 的 contains方法去掉了,改成 containsvalue 和 containsKey。因为 contains 方法容易让人引起误解Hashtable继承自 Dictionary 类,而 HashMap 是 Java1.2 引进的 Map interface 的一个实现。最大的不同是,Hastable 的方法是 synchronize 的,而 HashMap 不是,在多个线程访问 Hashtable 时,不需要自己为s它的方法实现同步,而 HashMap 就必须为之提供同步。

  20.请说出 ArrayList,Vector, LinkedList 的存储性能和特性

  解答: ArrayList 和 Vector 都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector 由于使用了 synchronized 方法(线程安全),通常性能上较ArrayList 差,而 LinkedList 使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。

  21. 描述 J2EE 框架的多层结构,并简要说明各层的作用。

  解答:1)Presentation layer(表示层)a. 表示逻辑(生成界面代码)b. 接收请求 c. 处理业务层抛出的异常 d. 负责规则验证(数据格式,数据非空等)e. 流程控制

  2) Service layer(服务层/业务层)a.封装业务逻辑处理,并且对外暴露接口b.负责事务,安全等服务

  3) Persistence layer(持久层) a 封装数据访问的逻辑,暴露接口 b.提供方便的数据访问的方案(查询语言,API,映射机制等)

  4)Domain layer(域层) a. 业务对象以及业务关系的表示b. 处理简单的业务逻辑c. 域层的对象可以穿越表示层,业务层,持久层软件分层结构使得代码维护非常方便,设计明确,各层独立,专注自己擅长的领域。

  23.简要描述如何结合 struts、hibernate、spring 开发 Web 应用?

  解答:Struts 可以将 jsp 页面的表单关联起来,就是把 JSP 页面的表单数据封装成 javaBean,这样的话,在 action 中你再也不需要使用传统的 request.getParameter("name");还有 struts 有一个控制器,你在 struts 编程中的控制器(XxxAction)都是继承总的 ActionServlet,它能集中处理请求,然后转到相关的页面。还有 struts 的表单验证组件,不用你写 js 验证了,只需要你配置一下文件就可以了。另外 struts 的令牌机制可以防表单重复提交。

  Spring 是一个轻量级容器,非侵入性.包含依赖注入,AOP 等。它是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为J2EE 应用程序开发提供集成的框架。

  Hibernate:它可以让我们以 OO 的方式操作数据库,这让我们看到了 hibernate 的强大之处,体验到操作数据的方便。但 hibernate 最耀眼之处是 hibernate 的缓存机制,而不是以 OO 的方式操作数据库。Hibernate 的缓存机制不外乎是一级缓存 session,二级缓存 sessionFactory,和第三方缓存 如 ehcache 。 也就 是 hibernate 的 最 强大 的地 方 是 它的 缓存 , 理解了 这 个 才能 真正 的 理解hibernate,Hibernate 的命名查询/命名参数查询, 就是将 hql 语句放在一个单独的 xml 文件之中, 它仍然让人们以面向对象的方式去操纵数据,而不用在以 OO 的方式写着代码的同时,然后再转变思维,用面向关系的方式去写那些 sql 语句。但 hibernate不仅做了这些,它的native sql 查询方式,完

  全满足 sql 语句的偏爱者,它像 ibatis 一样,将 sql 语句放在配置文件之中

  27.列出自己常用的 jdk 包.

  解答:JDK 常用的 package

  java.lang:这个是系统的基础类,比如 String 等都是这里面的,这个 package 是唯一一个可以不用 import 就可以使用的 Package

  java.io: 这里面是所有输入输出有关的类,比如文件操作等

  java.net: 这里面是与网络有关的类,比如 URL,URLConnection 等。

  java.util : 这个是系统辅助类,特别是集合类 Collection,List,Map 等。

  java.sql: 这个是数据库操作的类,Connection, Statememt,ResultSet 等

【Java笔试题和答案】夜上海社区论坛相关的文章:

java笔试题及答案08-20

java笔试题及答案02-09

115个Java面试题和答案04-02

java笔试题目及答案02-16

经典java笔试题及答案分享07-06

java面试题及答案10-27

java基础笔试题及答案10-18

java面试题及答案11-01

java考试试题及答案10-25