1、 1 java的接口方法必须声明成 public 正确,接口中方法的默认类型为 public,即使有时不写出 public,但方法还是为 public 类型的。 如果定义 intnValues=1,2,3,4;那么 nValues 为整数类型。 错误, nValues 为这个数组的引用。 java可以在方法内定义内部类。 正确,注意变量访问权限。 Protected 修饰的类成员只能被其子类访问 错误,当前类,子类,同包中的类都可以使用。 如果定义: HashMap map=new HashMap();那么以后就无法保证内的数据 是线程安全。说明理由 HashMap 实现不是同步的。如果多个线
2、程同时访问此映射,而其中至少一个线程从结构上修改了该映射,则它必须 保持外部同步。(结构上的修改是指添加或删除一个或多个映射关系的操作;仅改变与实例已经包含的键关联的值不是结构上的修改。)这一般通过对自然封装该映射的对象进行同步操作来完成。如果不存在这样的对象,则应该使用 Collections.synchronizedMap 方法来 “包装 ”该映射。最好在创建时完成这一操作,以防止对映射进行意外的不同步访问, 对象 Locale.CHINAt Local.SIMPLIFIED_CHINESE 是一样的。 啥意思? Locale 是关键字啊,表示地理的类。 Jsp 页面向 Servlet 短
3、发请求,带有中文参数,那么,在Servlet 端应该如何处理? request.setCharacterEncoding(“ gb2312” ); Servlet 内重定向方式又有哪些? jsp 页面重定向有哪些方式?有什么区别? Servlet: forward() 与 redirect() 前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览 器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用 forward()方法,并且,这样也有助于隐藏实际的链接。在
4、有些情况下,比如,需要跳转到一 个其它服 务器上的 资源,则 必须使用sendRedirect()方法。 JSP:有两种,分别为: 前者页面不会转向includ 所指的页面,只是显示该页的结果,主页面还是原来的页面。执行完后还会回来,相当于函数调用。并且可以带参数 .后者完全转向新页面,不会再回来。相当于 goto 语句 forward 和 redirect 的区别 ? forward 是服务器请求资源,服务器直接访问目标地址的 URL,把那个 URL 的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。 redirec
5、t 就是服务端根据逻辑 ,发送一个状态码 ,告诉浏览器重新去请求那个地址, 一般来说浏览器会用刚才请求的所有参数重新请求,所以 session,request 参数都可以获取。 JDK 内部采用什么编码?举例说明。 Unicode,支持中文日文,各种文字。 例子:可以用中文定义常量或方法名。 STRING 与 STRINGBUFFER 的区别。 答: JAVA 平台提供了两个类: String 和 StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个 String 类提供了数值不可改变的字符串。而这个StringBuffer 类提供的字符串进行修改。当你知道字符数
6、据要改变的时候你 就可以使用 StringBuffer。典型地,你可以使用 StringBuffers 来动态构造字符数据。 Java2 类库: Java 类库有没有双向链表?有没有堆栈和队列类?有的话,写出相应的类? 双向链表:是由若干个称做节点的对象组成的一种数据结构,每个节点含有一个数据和一个上一个节点对象的引用和下一个节点对象的引用 .如: LinkedList 类在 java.util 包中 . 堆栈:是一种后进先出的数据结构,只能在一端进行输入或输出数据的操作 .如 : Stack 类在 java.util 包中 . 队列: 队列通常(但并非一定)以 FIFO(先进先出) 的方式排
7、序各个元素 在一端输入数据(队尾),在另一端删除数据(队头) 。 注:先进来的那边为队头。如: Queue 类在java.util 包中 线程的同步,如何实现线程的同步 答案 1同步代码块,同步函数 答案 2使用 synchronized,wait 与 notify 多线程有几种实现方法 ,都是什么 ?同步有几种实现方法 ,都是什么 ? 多线程有两种实现方法,分别是继承 Thread 类与实现 Runnable 接口 同 步 的 实 现 方 面 有 两 种 , 分 别 是synchronized,wait 与 notify 请说出你所知道的线程同步的方法。 wait():使一个线程处于等待状态
8、,并且释放所持有的对象的 lock。 sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉 InterruptedException 异常。 notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由 JVM 确定唤醒哪个线程,而且不是按优先级。 Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。 CORBA 是什么?用途是什么? 答: CORBA 标准是公共对象请求代理结构 (Common Object Request Broker Archite
9、cture),由对象管理组(ObjectManagement Group,缩写为 OMG)标准化。它的组成是接口定义语言 (IDL), 语言绑定 (binding:也译为联编 )和允许应用程序间互操作的协议。 其目的为 用不同的程序设计语言书写在不同的进程中运行为不同的操作系统开发 。 EJB 与 JAVABEAN 的区别? Java Bean 是可复用的组件,对 Java Bean并没有严格的规范,理论上讲,任何一个 Java类都可以是一个 Bean。但通常情况下,由于 Java Bean是被容器所创建(如 Tomcat)的,所以 Java Bean 应具有一个无参的构造器,另外,通常 Ja
10、va Bean 还要实现 Serializable 接口用于实现 Bean的持久性。 Java Bean 实际上相当于微软 COM 模型中的本地进程内 COM 组 件 , 它 是 不 能 被 跨 进 程 访 问 的 。Enterprise Java Bean 相当于 DCOM,即分布式组件。它是基于 Java 的远程方法调用( RMI)技术的,所以 EJB 可以被远程 访问(跨进程、跨计算机)。但 EJB 必须被布署在诸如 Webspere、 WebLogic 这样的容器中, EJB 客户从不直接访问真正的 EJB 组件,而是通过其容器访问。 EJB 容器是 EJB组件的代理, EJB 组件由
11、容器所创建和管理。客户通过容器来访问真正的 EJB 组件。 J2EE是什么? 答 :Je22 是 Sun 公司提出的多层 (multi-diered),分布式 (distributed),基于组件 (component-base)的企业级应用模型 (enterpriese application model).在这样的一个应用系 统中,可按照功能划分为不同的组件,这些组件又可在不同计算机上,并且处于相应的层次 (tier)中。所属层次包括客户层 (clietn tier)组件 ,web 层和组件 ,Business 层和2 组件 ,企业信息系统 (EIS)层。 String s = new S
12、tring(“ xyz” );创建了几个 String Object? 哪几个? 答案: 2个 给一个字符变量赋值为 char c = k ; 那么 char c = 中;有错吗?为什么 ? 没错, JAVA 以 unicode 编码,一个 char 占 16 个字节 ,放一个中文没 问题 . java中 Error 与 Exception 有什么区别? error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。 exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。 Error 表示系统级的错误和程
13、序不必处理的异常, Exception 表示需要捕捉或者需要程序进行处理的异常。 一个 ” .java” 源文件中是否可以包括多个类(非内部类)?如果可以,有什么限制? 可以。必须只有一个类名与文件名相同。 声明为 public类型的类只能又一个 ,源文件名必须与声明为 public 类型的类相同 . 简述一个你对 MVC模式的理解 MVC是 Model View Controller 的简写。 “Model“ 代表的是应用的业务逻辑(通过 JavaBean, EJB 组件实现), “View“ 是应用的表示面(由 JSP 页面产生), “Controller“ 是提供应用的处理过程控制(一般
14、是一个 Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。 写一个方法,不使用额外的变量,调换两个 int 型变量 a,b的值 a=a+b;b=a-b;a=a-b; JSP 有哪些内置对象?并写出这些对象的主要方法。 9 种内置对象 : request,response,session,application,page,out,exception,pageContext,config. 谈谈 final, finally, finalize 的区别。 final?修饰符(关键字)如果一个类被声明为 final,意味着它不能再派生出新
15、的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract 的,又被声明为 final的。将变量或方法声明为 final,可以保证它们在使用中不被改变。被声明为 final 的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为 final 的方法也同样只能使用,不能重载 . finally?再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。 finalize?方法名。 Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除
16、出去之 前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。 finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。 在 java 中一个类被声明为 final 类型,表示了什么意思? 表示该类不能被继承,是顶级类。 GC是什么 ? 为什么要有 GC? GC 是垃圾收集器。 Java 程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃 圾收集,可以调用下面的方法之一: System.gc() ; Runt
17、ime.getRuntime().gc() / throws an Assertionerror if a 它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数 静态 INCLUDE 用 include 伪码实现 ,定不会检查所含文件的变化,适用于包含静态页面 说一说 Servlet 的生命周期 ? 答 :servlet 有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet接口的 init,service和 destroy方法表达。 J2EE是什么? 答 :Je22是 Sun公司提出的多层 (multi-di
18、ered),分布式(distributed),基于组件 (component-base)的企业级应用模型 (enterpriese application model).在这样的一个应用系统中,可按照功能划分为不同的组件,这些组件又可在不同计算机上,并且处于相应的层次 (tier)中。所属层次包括客户层 (clietn tier)组件 ,web 层和组件 ,Business层和组件 ,企业信息系统 (EIS)层。 STRUTS 的应用 (如 STRUTS 架构 ) 答: Struts 是采用 Java Servlet/JavaServer Pages 技术,开发 Web应用程序的开放源码的 f
19、ramework。 采用Struts 能开发出基于 MVC(Model-View-Controller)设计模式的应用构架。 Struts 有如下的主要功能: 一 .包含一个 controller servlet,能将用户的请求发送到相应的 Action 对象。 二 .JSP 自由 tag 库,并且在 controller servlet 中提供关联支持,帮助开发员创建交互式表单应用。 三 .提供了一系列实用对象: XML 处理、通过 Java reflection APIs 自动处理 JavaBeans 属性、国际化的提示和消息。 4 String 是最基本的数据类型吗 ? 基本数据类型包括
20、 byte、 int、 char、 long、float、 double、 boolean 和 short。 java.lang.String 类是 final 类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用 StringBuffer类。 int 和 Integer 有什么区别? Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。 Int 是 java 的原始数据类型, Integer 是java 为 int 提供的封装类。 Java 为每个原始类型提供了封装类。 原始类型 封装类 boolean Boolean char Character by
21、te Byte short Short int Integer long Long float Float double Double 引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。 面向对象的特征有哪些方面 1 抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打 算了解全部问题,而只是选择其中
22、的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2 继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。 3 封装:封装是把过程和数据包围起来,对数据的访问只能通 过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他
23、对象。 4 多态性:多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 运行时异常与一般异常有何异同? Runtime 表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。 java 编译器要求方法必须声 明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。 说出 ArrayList,Vector, LinkedList 的存储性能和特性。 ArrayList 和 Vector 都是使用数组方式存储
24、数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢, Vector由于使用了 synchronized 方法(线程安全),通常性能上较 ArrayList 差,而 LinkedList 使用双向链表实现 存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。 同步和异步有何异同,在什么情况下分别使用他们?举例说明。 如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共
25、享数据,必须进行同步存取。 当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。 说出数据连接池的工作机制 是什么 ? J2EE 服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。 简述逻辑操作 ( public static void mai
26、n(String args) Thread t=new Thread(new XO); t.start(); A、 第一行会产生编译错误 B、第六行会产生编译错误 C、 第六行会产生运行错误 D、 程序会运行和启动 指出下列程序运行的结果 B public class Example String str=new String(“ good” ); charch= a , b , c ; public static void main(String args) Example ex=new Example(); ex.change(ex.str,ex.ch); System.out.print
27、(ex.str+ “ and” ); System.out.print(ex.ch); public void change(String str,char ch) str= “ test ok” ; ch0= g ; A、 goog and abc B、 good and gbc C、 test ok and abc D、 test ok and gbc 给出下面代码 : public class person static int arr=new int10; public static void main(String a) System.out.println(arr1); 哪个语句是
28、正确的 ?C A、编译时将产生错误 B、编译时正确,运行时产生错误 C、输出零 D、输出空 阅读下列 JAVA 程序 ,选择编译结果 :_B_ public class Test static int age; public static void main(String a) age=age + 1; System.out.println(“ The age is” + age); A、 可以编译和运行但是没有输出 B、可以编译和运行,打印值为 The age is 1 C、 可以编译但是运行时候产生错误 D、不能编译产生编译错误 对于下列代码 : public class Parent p
29、ublic int addValue(int a,int b) int s; s= a + b; return s; class Child extends Parent 下述哪些方法可以加入类 Child? C A、 int addValue(int a,int b)/do something /子类覆盖父类时,不能使用比父类更严格的访问权限 B 、 public void addValue(int a,int b)/do something /与父类的返回类型不兼容 C.public int addValue(int a)/ do something D.public int addVal
30、ue(int a,int b)throws MyExceptionreturn a+b;/被覆盖的方法不抛出异常 6 下列代码哪一行会出错? C 1)public void modify() 2) int I,j,k; 3) I=100; 4) while(I0) 5) j=I*2; 6) System.out.println(“ The value of j is” +j); 7) k=k+1; 8) I-; 9) 10) A. line5 B.line 6 C.line7 D.line8 方法定义如下: public int getValue() try System.out.printl
31、n(“ try” ); renturn 1; System.out.println(“ getValue” ); catch (Exception e) finally System.out.println(“ finally” ); 若有个地方进行如下访问: System.out.println(getValue(); 请 问程序输出的结果是什么? B A: try B:try C:try D:try getValue finally 1 1 finally 1 finally 1 下列关于关系模式规范化的叙述中,哪一条是不正确的? A A) 若 R BCNF,则必然 R 4NF B) 若
32、R BCNF,则必然 R 3NF C) 若 R BCNF,则必然 R 2NF D) 若 R BCNF,则必然 R 1NF 编译 Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( B )。 A、 . java B、 . class C、 . html D、 .exe 设 x=1, y=2, z=3, 则表达式 y + =z- -/+ +x 的值是( A )。 A、 3 B、 3.5 C、 4 D、 5 在 Java Applet 程序用户自定义的 Applet 子类中,一般需要重载父类的 ( D ) 方法来完成一些画图操作 。 A、 start()
33、B、 stop() C、 init() D、 paint() 不允许作为类及类成员的访问控制符的是 ( D )。 A、 public B、 private C、 static D、 protected 为 AB类的一个无形式参数无返回值的方法 method书写方法头,使得使用类名 AB 作为前缀就可以调用它,该方法头的形式是( A )。 A、 static void method() B、 public void method() C、 final void method() D、 abstract void method() Which method in the HttpServlet c
34、lass services the HTTP POST request?(select one) A do Post (ServletRequest, ServletResponse) B do POST (ServletRequest, ServletResponse) C service Post (HttpServletRequest, HttpServletResponse) D do Post (HttpServletRequest,HttpServletResponse) Consider the follow code and select the correct stateme
35、nt about it from the options below (Select one) The value of aNum is Ait will print “ The value of aNum is 5” to the output B it will flag a compile-time error because of an incorrect declaration C it will throw a runtime exception while executing the expression D it will not flag any compile time o
36、r runtime errors and will not print anything to the output Select the correct statement about the following code. (Select one) %page language=j” ava” % out.print(“ Hello” ); out.print(“ World” ); A it will pint Hello World in the output B it will generate compile-time errors C it will throw runtime
37、exceptions D it will only print Hello E None of above Which of the following interfaces or classes is used to retrieve the session associated with a user?(Select one) A GenericServlet B ServletConfig C ServletContext D HttpServlet E HttpServletRequest F HttpServletResponse Which method is required f
38、or using the URL rewriting mechanism of implementing session support?(Select one) A HttpServletRequest.encodeURL() B HttpServletRequest.rewriteURL() C HttpServletResponse.encodeURL() D HttpServletResponse.rewriteURL() What will happen when you attempt to compile and run the following code?( C ) (Ass
39、ume that the code is compiled and run with assertions enabled.) public class AssertTest public void methodA(int i) assert i=0:methodB(); System.out.println(i); public viod methodB()/methodB 的返回类型不该为 void System.out.println(“ The value must not be negative” ); public static void main(String args) Ass
40、ertTest test=new AssertTest(); test.methodA(-10); A. it will print -10 B. it will result in AssertionError showing the message-“ the value must not be negative” . C. The code will not compile. 7 D. None of these. What will happen when you attempt to compile and run the following code?( D ) public cl
41、ass Static staticint x=5; /在 static 内有效 static int x,y; /初始化为 0 public static void main(String args ) x-; /-1 myMethod(); System.out.println(x+y+ +x); public static void myMethod() y=x+ + +x; /y=-1+1 x=1 A. compiletime error B. prints:1 C. prints:2 D. prints:3 E. prints:7 F. prints:8 Given the follo
42、wing code, what will be the output?( A ) class Value public int i =15; public class Test public static void main(String argv) Test t = new Test(); t.first(); public void first() int i =5; Value v =new Value(); v.i =25; second(v,i); System.out.println(v,i); public void second(Value v, int i) i=0; v.i
43、 =20; Value val =new Value(); v =val; System.out.println(v.i+” ” +i); A. 15 0 20 B. 15 0 15 C. 20 0 20 D. 0 15 20 The class AssertionError has “ is -a” relationship with these classes (choose two)( ) A. RuntimeException B. Error C. VirtualMachineError D. IllegalAccessException E. Throwable What will
44、 happen when you attempt to compile and run the following code?( E ) class MyParent int x,y; MyParent(int x, int y) this.x =x; this.y =y; public int addMe(int x,int y) return this.x+x+y+this.y; public int addMe(MyParent myPar) return addMe(myPar.x, myPar.y); class MyChild extends MyParent/继承时 父类必须有没
45、int z; /有参数的构造函数 MyChild (int x, int y, int z) Super(x,y); this.z=z; public int addMe(int x,int y,int z) return this.x + x +this.y + y + this.z + z; public int addMe(MyChild myChi) return addMe(myChi.x, myChi.y, myChi.z); public int addMe(int x,int y) return this.x + x + this.y + y; public class MyS
46、omeOne public static void main(String args) MyChild myChi = new MyChild(10,20,30); MyParent myPar = new MyParent(10,20); int x =myChi.addMe(10,20,30); int y =myChi.addMe(myChi); int z =myPar.addMe(myPar); System.out.println(x+y+z); A. 300 B. 240 C. 120 D. 180 E. compile error F. none of the above Wh
47、at results from attempting to compile and run the following code?( Value is -9.0 ) public class Ternary public static void main (String args) int a=5; System.out.println(“Value is -“+(a=0;i- -) System.out.print(ai+” ); System.out.println(); 输入 10个数按与输入相反的顺序输出 3 impor java.awt.* public class abc public static void mian(String args) new FrameOut(); class FrameOut extends Frame / Frame 为 系统定义的窗口类 Butten btn; FrameOut() super(“按钮” ); setLayout(new FlowLayout(); add(btn); setSize(300,200); show; 显示一个大小为 300 乘 200 的上面有 ” 按钮 ” 俩字的按钮 4、 import java.io.*; public class abc public sta