一:java单例模式1.//饿汉式单例类.在类初始化时,已经自行实例化2.publicclassSingleton1{3.//私有的默认构造子4.privateSingleton1(){}5.//已经自行实例化6.privatestaticfinalSingleton1single=newSingleton1();7.//静态工厂方法8.publicstaticSingleton1getInstance(){9.returnsingle;10.}11.}======================================================================1.//懒汉式单例类.在第一次调用的时候实例化2.publicclassSingleton2{3.//私有的默认构造子4.privateSingleton2(){}5.//注意,这里没有final6.privatestaticSingleton2single=null;7.//静态工厂方法8.publicsynchronizedstaticSingleton2getInstance(){9.if(single==null){10.single=newSingleton2();11.}12.returnsingle;13.}14.}二:java主要有哪些设计设计模式主要分三个类型:创建型、结构型和行为型。其中创建型有:1、Singleton,单例模式:保证一个类只有一个实例,并提供一个访问它的全局访问点2、AbstractFactory,抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们的具体类。3、FactoryMethod,工厂方法:定义一个用于创建对象的接口,让子类决定实例化哪一个类,FactoryMethod使一个类的实例化延迟到了子类。(等)三.html&JavaScript&ajax部分1.判断第二个日期比第一个日期大如何用脚本判断用户输入的的字符串是下面的时间格式2004-11-21必须要保证用户的输入是此格式,并且是时间,比如说月份不大于12等等,另外我需要用户输入两个,并且后一个要比前一个晚,只允许用JAVASCRIPT,请详细帮助作答,,//这里可用正则表达式判断提前判断一下格式,然后按下提取各时间字段内容scripttype=text/javascriptwindow.onload=function(){//这么写是为了实现js代码与html代码的分离,当我修改js时,不能影响html代码。document.getElementById(frm1).onsubmit=function(){vard1=this.d1.value;vard2=this.d2.value;if(!verifyDate(d1)){alert(第一个日期格式不对);returnfalse;}if(!verifyDate(d2)){alert(第二个日期格式不对);returnfalse;}if(!compareDate(d1,d2)){alert(第二个日期比第一日期小);returnfalse;}};}functioncompareDate(d1,d2){vararrayD1=d1.split(-);vardate1=newDate(arrayD1[0],arrayD1[1],arrayD1[2]);vararrayD2=d2.split(-);vardate2=newDate(arrayD2[0],arrayD2[1],arrayD2[2]);if(date1date2)returnfalse;returntrue;}functionverifyDate(d){vardatePattern=/^\d{4}-(0?[1-9]|1[0-2])-(0?[1-9]|[1-2]\d|3[0-1])$/;returndatePattern.test(d);}/scriptformid=frm1action=xxx.htmlinputtype=textname=d1/inputtype=textname=d2/inputtype=submit//form2.用table显示n条记录,每3行换一次颜色,即1,2,3用红色字体,4,5,6用绿色字体,7,8,9用红颜色字体。bodytableid=tbltrtd1/td/trtrtd2/td/trtrtd3/td/trtrtd4/td/trtrtd5/td/trtrtd6/td/trtrtd7/td/trtrtd8/td/trtrtd9/td/trtrtd10/td/tr/table/bodyscripttype=text/javascriptwindow.onload=function(){vartbl=document.getElementById(tbl);rows=tbl.getElementsByTagName(tr);for(i=0;irows.length;i++){varj=parseInt(i/3);if(j%2==0)rows[i].style.backgroundColor=#f00;elserows[i].style.backgroundColor=#0f0;}}/script3、HTML的form提交之前如何验证数值文本框的内容全部为数字?否则的话提示用户并终止提交?formonsubmit=’returnchkForm(this)’inputtype=textname=d1/inputtype=submit//formscripttype=”text/javascript”/functionchkForm(this){varvalue=thist.d1.value;varlen=value.length;for(vari=0;ilen;i++){if(value.charAt(i)9||value.charAt(i)0){alert(含有非数字字符);returnfalse;}}returntrue;}/script4、请写出用于校验HTML文本框中输入的内容全部为数字的javascript代码inputtype=textid=d1onblur=chkNumber(this)/scripttype=”text/javascript”/functionchkNumber(eleText){varvalue=eleText.value;varlen=value.length;for(vari=0;ilen;i++){if(value.charAt(i)9||value.charAt(i)0){alert(含有非数字字符);eleText.focus();break;}}}/script除了写完代码,还应该在网页上写出实验步骤和在代码中加入实现思路,让面试官一看就明白你的意图和检查你的结果。5、说说你用过那些ajax技术和框架,说说它们的区别四.Javaweb部分1、Tomcat的优化经验答:去掉对web.xml的监视,把jsp提前编辑成Servlet。有富余物理内存的情况,加大tomcat使用的jvm的内存2、HTTP请求的GET与POST方式的区别答:Get:是以实体的方式得到由请求URI所指定资源的信息,如果请求URI只是一个数据产生过程,那么最终要在响应实体中返回的是处理过程的结果所指向的资源,而不是处理过程的描述。Post:用来向目的服务器发出请求,要求它接受被附在请求后的实体,并把它当作请求队列中请求URI所指定资源的附加新子项,Post被设计成用统一的方法实现下列功能:1:对现有资源的解释2:向电子公告栏、新闻组、邮件列表或类似讨论组发信息。3:提交数据块4:通过附加操作来扩展数据库从上面描述可以看出,Get是向服务器发索取数据的一种请求;而Post是向服务器提交数据的一种请求,要提交的数据位于信息头后面的实体中。1.get是从服务器上获取数据,post是向服务器传送数据。2.get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTPpost机制,将表单内各个字段与其内容放置在HTMLHEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。3.对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。4.get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。5.get安全性非常低,post安全性较高。但是执行效率却比Post方法好。建议:1、get方式的安全性较Post方式要差些,包含机密信息的话,建议用Post数据提交方式;2、在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式;4、说一说Servlet的生命周期?答:servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达。Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。web容器加载servlet,生命周期开始。通过调用servlet的init()方法进行servlet的初始化。通过调用service()方法实现,根据请求的不同调用不同的do***()方法。结束服务,web容器调用servlet的destroy()方法。5、Servlet的基本架构publicclassServletNameextendsHttpServlet{publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{}publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{}}6、SERVLETAPI中forward()与redirect()的区别?答:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。7、什么情况下调用doGet()和doPost()?Jsp页面中的FORM标签里的method属性为get时调用doGet(),为post时调用doPost()。8、Request对象的主要方法:setAttribute(Stringname,Object):设置名字为name的request的参数值getAttribute(Stringname):返回由name指定的属性值getAttributeNames():返回request对象所有属性的名字集合,结果是一个枚举的实例getCooki