1、Java 部分1求两个数的最大公约数解答:欧几理德原理:辗转相除法public static int zdgys(int a,int b)int x = a%b;if(x=0) return b;else return zdgys(b,x);2 关于 java 垃圾回收器的认识解答:对于 GC 来说,当程序员创建对象时,GC 就开始监控这个对象的地址、大小以及使用情况。通常,GC 采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是 “可达的“,哪些对象是“不可达的“。当 GC 确定一些对象为“不可达“时,GC 就有责任回收这些内存空间。可以。程序员可以手动执行 S
2、ystem.gc(),通知 GC 运行,但是 Java 语言规范并不保证 GC 一定会执行。3 请问如何设计一个类,使其只能被初始化为一个实例。解答:Singleton 模式主要作用是保证在 Java 应用程序中,一个类 Class 只有一个实例存在。第一种形式: 定义一个类,它的构造函数为 private 的,它有一个 static 的 private 的该类变量,在类初始化时实例话,通过一个 public 的 getInstance 方法获取对它的引用 ,继而调用其中的方法。附件:package parent.career.blest;class Singleton private Sin
3、gleton()/在外部用 new 关键字会报错,只供内部使用/注意这是 private 只供内部调用private static Singleton instance = new Singleton();/这里提供了一个供外部访问本 class 的静态方法,可以直接访问 public static Singleton getInstance() return instance; public void say(String str)System.out.println(str);class commonClasspublic commonClass()System.out.println(“
4、这是一个普通类“);public class mySingletonpublic static void main(String args)Singleton sl = Singleton.getInstance();Singleton sl2 = Singleton.getInstance();sl.say(“hello,world!“);sl2.say(“hello,world again!“);System.out.println(sl=sl2);/输出 true,说明 sl,sl2 指向同一个实例commonClass cC = new commonClass();commonClas
5、s cC2 = new commonClass();System.out.println(cC=cC2);/输出 false,说明 cC,cC2 分别指向不同的实例4有一个 1001 个元素的数组 an,每个元素都在 1 到 1000 这些整数中取值,其中有一个数值重复了,现在要设计一个算法找出这个数字,且每个元素只能被访问一次。不能用辅助的存储容器。解答:This number = (a0+a1+a3+a1000)-(1+2+3+1000)servlet 生命周期以及 servlet 基本构架解答:servlet 有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存
6、期由 javax.servlet.Servlet 接口的 init,service 和 destroy 方法表达。 Servlet 的基本架构:public class ServletName extends HttpServlet public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException public void doGet(HttpServletRequest request, HttpServletResponse res
7、ponse) throws ServletException, IOException 5 死锁的四个必要条件解答:互斥条件:某段时间内某资源只能由一个进程使用。请求和保持:进程因请求资源而阻塞时,对已分配给它的资源保持不放。不剥夺条件:资源在未使用完前,不能被剥夺,由使用进程释放。环路条件:发生死锁时,有向图必构成一环路。7EJB 是基于哪些技术实现的?并说出 SessionBean 和 EntityBean 的区别,StatefulBean 和StatelessBean 的区别。解答:EJB 包括 Session Bean、Entity Bean、Message Driven Bean,基
8、于 JNDI、RMI、JAT 等技术实现。SessionBean 在 J2EE 应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调用其他 EJB 组件。EntityBean 被用来代表应用系统中用到的数据。对于客户机,SessionBean 是一种非持久性对象,它实现某些在服务器上运行的业务逻辑。对于客户机,EntityBean 是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体。Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session Bean ,这两种的 Se
9、ssion Bean 都可以将系统逻辑放在 method 之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应的 Stateful Session Bean 的实体。Stateless Session Bean 虽然也是逻辑组件,但是他却不负责记录使用者状态,也就是说当使用者呼叫 Stateless Session Bean 的时候,EJB Container 并不会找寻特定的 Stateless Session Bean 的实体来执行这个 method。换言之,很可能数个使用者在执行某个 Stateless Sessio
10、n Bean 的 methods 时,会是同一个 Bean 的 Instance 在执行。从内存方面来看, Stateful Session Bean 与 Stateless Session Bean 比较, Stateful Session Bean 会消耗 J2EE Server 较多的内存,然而 Stateful Session Bean 的优势却在于他可以维持使用者的状态。8sleep() 和 wait() 有什么区别?解答:sleep 是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用 sleep 不会释放对
11、象锁。wait 是 Object 类的方法,对此对象调用 wait 方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出 notify 方法(或 notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。9forward 和 redirect 的区别解答:forward 是服务器请求资源,服务器直接访问目标地址的 URL,把那个 URL 的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。redirect 就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会
12、用刚才请求的所有参数重新请求,所以 session,request 参数都可以获取。10冒泡排序算法解答:package parent.career.blest;/* 冒泡排序算法演示:从小到大排列数组元素* 原理:第一个元素和后面的一个元素比较,比较结果再和后面一个元素比较,依次类推* 接着,第二个和后面元素比较,依次类推*/ public class Maopaopublic static int mppx(int array)for(int i =0;iarrayj)temp = arrayi;arrayi = arrayj;arrayj = temp;return array;publ
13、ic static void main(String args)/测试int ar =12,23,1,23,45,11,42,9,45,2,16,77,86,56,43;ar = mppx(ar);for(int i = 0;i 0); / throws an Assertionerror if a = 0; i-) System.out.print(argsi + “ “);/执行时,跟数组元素,如:java hello wei gui ping (现在 args=wei,gui,ping)18构造一个类来描述屏幕上的一个点,该类的构成包括点的 x 和 y 两个坐标,以及一些对点进行的操作,
14、包括:取得点的坐标值,对点的坐标进行赋值,编写应用程序生成该类的对象并对其进行操作。解答:Class PointPrivate float x;Private float y;Public Point()This.x = 0;This.y = 0;Public Point(float x, float y)This.x = x;This.y = y;Public void move(float m,float n )/将点移动向 x 方向移动 m,向 y 方向移动 nThis.x += m;This.y += n; Public void show()/显示坐标位置System.out.pri
15、ntln(“坐标为(”+this.getX()+”,”+ this.getY()+”) ”);/getter/setter 方法Public void setX(float x)This.x = x;Public float getX()Return this.x;Public void setY(float y)This.y = y;Public float getY()Return this.y;19写出下列算法的时间复杂度。 (1)冒泡排序 O(n*n)(2)选择排序 O(n*n)(3)插入排序 O(n*n)(4)快速排序 O(n*log n)(5)堆排序 O(n*log n)(6)归并
16、排序 O(n*log n)20 EJB 与 JAVA BEAN 的区别以及 EJB 的基本架构? 答:Java Bean 是可复用的组件,对 Java Bean 并没有严格的规范,理论上讲,任何一个 Java类都可以是一个 Bean。但通常情况下,由于 Java Bean 是被容器所创建(如 Tomcat)的,所以Java Bean 应具有一个无参的构造器,另外,通常 Java Bean 还要实现 Serializable 接口用于实现 Bean 的持久性。Java Bean 实际上相当于微软 COM 模型中的本地进程内 COM 组件,它是不能被跨进程访问的。Enterprise Java B
17、ean 相当于 DCOM,即分布式组件。它是基于 Java 的远程方法调用(RMI)技术的,所以 EJB 可以被远程访问(跨进程、跨计算机) 。但 EJB 必须被布署在诸如 Webspere、WebLogic 这样的容器中,EJB 客户从不直接访问真正的 EJB 组件,而是通过其容器访问。EJB 容器是 EJB 组件的代理,EJB 组件由容器所创建和管理。客户通过容器来访问真正的 EJB 组件。 EJB 的基本架构 答:一个 EJB 包括三个部分: Remote Interface 接口的代码 package Beans; import javax.ejb.EJBObject; import
18、java.rmi.RemoteException; public interface Add extends EJBObject /some method declare Home Interface 接口的代码 package Beans; import java.rmi.RemoteException; import jaax.ejb.CreateException; import javax.ejb.EJBHome; public interface AddHome extends EJBHome /some method declare EJB 类的代码 package Beans;
19、import java.rmi.RemoteException; import javax.ejb.SessionBean; import javx.ejb.SessionContext; public class AddBean Implements SessionBean /some method declare 21.Java 中的 Reflection 作什么用?解答:自省是软件分析自己的能力。这个功能由 Class 类中的 java.lang.reflect 包和元素所提供。自省是一个重要的功能,当我们使用被称为 Java Beans 的组件时将用到它。它允许你在运行时而不是在编译时
20、分析一个软件组件并且动态的描述它的功能。例如,通过使用自省,你能决定一个类支持哪些方法、构造函数和成员属性。22Java 中的序列化(serialization)?解答:序列化(serialization )是把一个对象的状态写入一个字节流的过程。当你想要把你的程序状态存在一个固定的存储区域例如文件时,它是很管用的。稍后,你就可以运用序列化过程存储这些对象。Serializable 接口:只有一个实现 Serializable 接口的对象可以被序列化工具存储和恢复。Serializable 接口没有定义任何成员没,它只用来表示一个类可以被序列化。如果一个类可以序列化,它的所有子类都可以序列化。
21、声明成 transient 的变量不被序列化工具存储。同样, static 变量也不被存储。23客服端调用 EJB 对象的几个基本步骤解答:设置 JNDI 服务工厂以及 JNDI 服务地址系统属性,查找 Home 接口,从 Home 接口调用 Create方法创建 Remote 接口,通过 Remote 接口调用其业务方法。24请对以下在 J2EE 中常用的名词进行解释(或简单描述)web 容器:给处于其中的应用程序组件(JSP,SERVLET )提供一个环境,使 JSP,SERVLET 直接更容器中的环境变量接*互,不必关注其它系统问题。主要有 WEB 服务器来实现。例如:TOMCAT,WE
22、BLOGIC,WEBSPHERE 等。该容器提供的接口严格遵守 J2EE 规范中的 WEB APPLICATION 标准。我们把遵守以上标准的 WEB 服务器就叫做 J2EE 中的 WEB 容器。EJB 容器:Enterprise java bean 容器。更具有行业领域特色。他提供给运行在其中的组件 EJB各种管理功能。只要满足 J2EE 规范的 EJB 放入该容器,马上就会被容器进行高效率的管理。并且可以通过现成的接口来获得系统级别的服务。例如邮件服务、事务管理。JNDI:(Java Naming & Directory Interface)JAVA 命名目录服务。主要提供的功能是:提供一
23、个目录系统,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能。JMS:(Java Message Service)JAVA 消息服务。主要实现各个应用程序之间的通讯。包括点对点和广播。JTA:(Java Transaction API)JAVA 事务服务。提供各种分布式事务服务。应用程序只需调用其提供的接口即可。JAF:(Java Action FrameWork)JAVA 安全认证框架。提供一些安全控制方面的框架。让开发者通过各种部署和自定义实现自己的个性安全控制策略。RMI/IIOP:(Remote Method Invocation /interne
24、t 对象请求中介协议)他们主要用于通过远程调用服务。例如,远程有一台计算机上运行一个程序,它提供股票分析服务,我们可以在本地计算机上实现对其直接调用。当然这是要通过一定的规范才能在异构的系统之间进行通信。RMI 是JAVA 特有的。25MVC 的各个部分都有那些技术来实现?如何实现? 解答:MVC 是 ModelView Controller 的简写。“Model“ 代表的是应用的业务逻辑(通过JavaBean,EJB 组件实现) , “View“ 是应用的表示面(由 JSP 页面产生) ,“Controller“ 是提供应用的处理过程控制(一般是一个 Servlet) ,通过这种设计模型把应
25、用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。26STRUTS 的应用(如 STRUTS 架构) 解答:Struts 是采用 Java Servlet/JavaServer Pages 技术,开发 Web 应用程序的开放源码的 framework。 采用 Struts 能开发出基于 MVC(Model-View-Controller)设计模式的应用构架。 Struts 有如下的主要功能: 一.包含一个 controller servlet,能将用户的请求发送到相应的 Action 对象。 二.JSP自由 tag 库,并且在 controller servlet 中提
26、供关联支持,帮助开发员创建交互式表单应用。 三.提供了一系列实用对象:XML 处理、通过 Java reflection APIs 自动处理 JavaBeans 属性、国际化的提示和消息。数据库部分1设有关系 EMP(ENO,ENAME,SALARY,DNO),其中各属性的含义依次为职工号、姓名、工资和所在部门号,以及关系 DEPT(DNO,DNAME,MANAGER),其中各属性含义依次为部门号、部门名称、部门经理的职工号。(回答下列题目)(1). 列出各部门中工资不低于 600 元的职工的平均工资。解答:SELECT AVG(月工资) FROM EMP GROUP BY 部门号WHERE
27、SALARY =600(2). 请用 SQL 语句将“销售部”的那些工资数额低于 600 的职工的工资上调 10%。解答:CREAT VIEW V AT 职工表WHERE (部门号=销售部 AND 工资600) ;UPDATA VSET 工资=工资*1.1相信大家应聘的时候第一关就是笔试,即使是一位很有经验的工程师也不一定能够顺利通过,笔试不好,可能就无法进行面试,即使能够进行面试,考官对你的印象也不会很好,问的问题也会很多,估计很难吃的消,当然如果你是位很有经验的高手,也是有可能通过面试,但也会影响到你的待遇.有可能有人会问,如果你真是个有一定开发经验的 java 工程师,怎么可能通不过笔试
28、,其实这种可能性是存在的,而且很大,因为笔试的题目一般都很基础,有一些都是你平时不曾注意到的,可能你在开发中用到过,但不一定知道是什么,比如说:写 jsp 的肯定都用到过 out,request等但不一定知道它们叫 jsp 的内置对象 ,如果考题问你:jsp 的内置对象有哪些,你就不一定答的上来,再比如说:在开发 javabean 的时候一般都会用到 ArrayList,HashMap 等,但你不一定就知道 ArrayList 和 Vector 的区别,HashMap 和 Hashtable 的区别,可能你在开发中都是混用,也不会报错,但效率会大大降低,如果在多线程开发中混用,可能就会产生错误
29、.可能这些都是小问题,如果有一定基础,看看书就知道所以然了,但笔试中答不上来或答错就可能影响到你是否能够面试成功,如果面试公司是你非常想进的公司,因为这些细节问题而最终没能进去,岂不是很遗憾.我写这篇文章就是让大部分的人少一份遗憾,多一份面试成功后的喜悦,也许有人会问:你才工作几年啊,就在这里作总结,你说的问题在笔试中可能出现吗?我要说的是我工作时间的确很短(2002 年毕业),但大大小小的公司也面试了不少,有时候就是因为这些笔试上的小问题而没能进想进的公司,结果我自己总结了一下面试的得与失,重新看了看基础知识,结果成功应聘在一家很大的公司,拿着相同工作经验的比较高的工资,之所以我花时间要在这
30、里总结,目的就是为了大家能进自己想进的公司,拿到自己要求的工资.也许这些总结比几篇技术文章带给你的收获都大,因为它直接和你的利益,前途挂钩.本文适用于有一定开发能力但 java,j2ee基础欠扎实而又在找 Java,jsp,j2ee 开发,维护方面工作的朋友,如果你的时间充足建议还是全面的看看基础知识,如果时间紧张可以侧重看一下我下面列举出来的问题,最好能由点到面的看.好了,闲话不多说了,下面列举我笔试中遇到过的问题,以及这些问题的延伸,问题都比较基础,答案就不在这里说了,查查资料,看看书就能解决,我在此郑重声明:不是说懂了下面的问题就一定能够面试成功,就是什么高手了,就不用看书了,我的总结只
31、是提高你笔试的成功率,在你基础不是很扎实,时间很紧的情况下帮助你成功笔试.切记:它不是万能的.Java 基础方面 :1,作用域 public,protected,private,以及不写时的区别2,ArrayList 和 Vector 的区别,HashMap 和 Hashtable 的区别3,char 型变量能不能定义为一个中文?为什么?4,多线程有几种表示方法,都是什么?同步有几种实现方法,都是什么?5,继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?6,内部类的实现方式?7,垃圾回收机制,如何优化程序?8,float 型 float f=3.4 是否正确?Jsp 方面1,jsp 有哪些内置对象? 作用分别是什么?2,jsp 有哪些动作? 作用分别是什么?3,include 的两种实现方式的区别?4,两种跳转方式分别是什么?有什么区别?