40、构造器Constructor是否可被override?构造器Constructor不能被承,因此不能重写OverridingQ但可以被重载Overloading?/font>
41、是否可以承Stringc?StringcLfinalcL不可以ѝ?/font>
42、swtich是否能作用在byte上,是否能作用在long上,是否能作用在String?switchQexpr1Q中Qexpr1是一个整数表辑ּ。因此传递给 switch ?case 语句的参数应该是 int?short?char 或?byte。long,string 都不能作用于swtich?/font>
43、try {}里有一个return语句Q那么紧跟在q个try后的finally {}里的code会不会被执行Q什么时候被执行Q在return前还是后?会执行,在return前执行?/font>
44、编E题: 用最有效率的Ҏ出2乘以8{於? 2 << 3
45、两个对象值相?x.equals(y) == true)Q但却可有不同的hash codeQ这句话对不?不对Q有相同的hash code?/font>
46、当一个对象被当作参数传递到一个方法后Q此Ҏ可改变这个对象的属性,q可q回变化后的l果Q那么这里到底是g递还是引用传? 是g递。Java ~程语言只有g递参数。当一个对象实例作Z个参数被传递到Ҏ中时Q参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变Q但对象的引用是永远不会改变的?/font>
47、当一个线E进入一个对象的一个synchronizedҎ后,其它U程是否可进入此对象的其它方?
不能Q一个对象的一个synchronizedҎ只能׃个线E访问?/font>
48、编E题: 写一个Singleton出来?br />Singleton模式主要作用是保证在Java应用E序中,一个类Class只有一个实例存在。一般Singleton模式通常有几U种形式:W一UŞ? 定义一个类Q它的构造函Cؓprivate的,它有一个static的private的该cd量,在类初始化时实例话,通过一个public的getInstanceҎ获取对它的引?l而调用其中的Ҏ。public class Singleton {private Singleton(){} private static Singleton instance = new Singleton(); public static Singleton getInstance() { return instance; } } W二UŞ? public class Singleton { private static Singleton instance = null; public static synchronized Singleton getInstance() { if (instance==null) instanceQnew Singleton();
return instance; } } 其他形式: 定义一个类Q它的构造函Cؓprivate的,所有方法ؓstatic的。一般认为第一UŞ式要更加安全?/font>
49、Java的接口和C++的虚cȝ相同和不同处?br />׃Java不支持多l承Q而有可能某个cL对象要用分别在几个cL对象里面的方法或属性,现有的单l承机制׃能满求。与l承相比Q接口有更高的灵zL,因ؓ接口中没有Q何实C码。当一个类实现了接口以后,该类要实现接口里面所有的Ҏ和属性,q且接口里面的属性在默认状态下面都是public static,所有方法默认情况下是public.一个类可以实现多个接口?/font>
50、Java中的异常处理机制的简单原理和应用?br />当JAVAE序q反了JAVA的语义规则时QJAVA虚拟机就会将发生的错误表CZؓ一个异常。违反语义规则包?U情c一U是JAVAcd内置的语义检查。例如数l下标越?会引发IndexOutOfBoundsException;讉Knull的对象时会引发NullPointerException。另一U情况就是JAVA允许E序员扩展这U语义检查,E序员可以创q异常Qƈ自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Thowable的子cR?/font>
51、垃圑֛收的优点和原理。ƈ考虑2U回收机制?br />Java语言中一个显著的特点是引入了垃圑֛收机Ӟ使c++E序员最头疼的内存管理的问题q刃而解Q它使得JavaE序员在~写E序的时候不再需要考虑内存理。由于有个垃圑֛收机ӞJava中的对象不再有“作用域”的概念Q只有对象的引用才有“作用域”。垃圑֛收可以有效的防止内存泄露Q有效的使用可以使用的内存。垃圑֛收器通常是作Z个单独的低别的U程q行Q不可预知的情况下对内存堆中已经M的或者长旉没有使用的对象进行清楚和回收Q程序员不能实时的调用垃圑֛收器Ҏ个对象或所有对象进行垃圑֛收。回收机制有分代复制垃圾回收和标记垃圑֛Ӟ增量垃圾回收
52、请说出你所知道的线E同步的Ҏ?br />wait():使一个线E处于等待状态,q且释放所持有的对象的lock。sleep():使一个正在运行的U程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。notify():唤醒一个处于等待状态的U程Q注意的是在调用此方法的时候,q不能确切的唤醒某一个等待状态的U程Q而是由JVM定唤醒哪个U程Q而且不是按优先。Allnotity():唤醒所有处入等待状态的U程Q注意ƈ不是l所有唤醒线E一个对象的锁,而是让它们竞争?/font>
53、你所知道的集合类都有哪些Q主要方法?最常用的集合类?List ?Map?List 的具体实现包?ArrayList ?VectorQ它们是可变大小的列表,比较适合构徏、存储和操作Mcd对象的元素列表?List 适用于按数值烦引访问元素的情Ş?Map 提供了一个更通用的元素存储方法?Map 集合cȝ于存储元素对Q称作“键”和“值”)Q其中每个键映射C个倹{?/font>
54、描qC下JVM加蝲class文g的原理机?JVM中类的装载是由ClassLoader和它的子cL实现?Java ClassLoader 是一个重要的Javaq行时系l组件。它负责在运行时查找和装入类文g的类?/font>
55、char型变量中能不能存贮一个中文汉?Z?
能够定义成ؓ一个中文的Q因为java中以unicode~码Q一个char?6个字节,所以放一个中文是没问题的
56、多U程有几U实现方?都是什?同步有几U实现方?都是什?
多线E有两种实现ҎQ分别是l承ThreadcM实现Runnable接口 ,同步的实现方面有两种Q分别是synchronized,wait与notify
57、JSP的内|对象及Ҏ?br />request表示HttpServletRequest对象。它包含了有x览器h的信息,q且提供了几个用于获取cookie, header, 和session数据的有用的Ҏ,response表示HttpServletResponse对象Qƈ提供了几个用于设|送回览器的响应的方法(如cookies,头信息等Q?br />out对象是javax.jsp.JspWriter的一个实例,q提供了几个Ҏ使你能用于向览器回送输出结果?pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各U范围的名字I间、servlet相关的对象的APIQƈ且包装了通用的servlet相关功能的方法。 ?session表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信息 ?applicaton 表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息 ?config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。 ?page表示从该面产生的一个servlet实例
58、线E的基本概念、线E的基本状态以及状态之间的关系U程指在E序执行q程中,能够执行E序代码的一个执行单位,每个E序臛_都有一个线E,也就是程序本w。Java中的U程有四U状态分别是Q运行、就l、挂赗结束?/font>
59、JSP的常用指?lt;%@page language=”java?contenType=”text/html;charset=gb2312?session=”true?buffer=?4kb?autoFlush=”true?isThreadSafe=”true?info=”text?errorPage=”error.jsp?isErrorPage=”true?isELIgnored=”true?pageEncoding=”gb2312?import=”java.sql.*?>isErrorPage(是否能用Exception对象)QisELIgnored(是否忽略表达? <%@include file=”filename?><%@taglib prefix=”c”uri=”http://……?>
60、什么情况下调用doGet()和doPost()QJsp面中的form标签里的method属性ؓget时调用doGet()Qؓpost时调用doPost()?/font>
61、servlet的生命周期web容器加蝲servletQ生命周期开始。通过调用servlet的init()Ҏq行servlet的初始化。通过调用service()Ҏ实现Q根据请求的不同调用不同的do***()Ҏ。结束服务,web容器调用servlet的destroy()Ҏ?/font>
62、如何现实servlet的单U程模式 <%@ page isThreadSafe=”false?>
63、页面间对象传递的Ҏ requestQsessionQapplicationQcookie{?/font>
64、JSP和Servlet有哪些相同点和不同点Q他们之间的联系是什么?
JSP是Servlet技术的扩展Q本质上是Servlet的简易方式,更强调应用的外表表达。JSP~译后是"cservlet"。Servlet和JSP最主要的不同点在于QServlet的应用逻辑是在Java文g中,q且完全从表C层中的HTML里分d来。而JSP的情冉|Java和HTML可以l合成一个扩展名?jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑?/font>
65、四U会话跟t技?cookie,url重写,session,隐藏?/font>
65,jsp的四U范?br />page否是代表与一个页面相关的对象和属性。一个页面由一个编译好?Java servlet c(可以带有M?include 指oQ但是没?include 动作Q表C。这既包?servlet 又包括被~译?servlet ?JSP 面
request是是代表?Web 客户机发出的一个请求相关的对象和属性。一个请求可能跨多个页面,涉及多个 Web lgQ由?forward 指o?include 动作的关p)
session是是代表与用于某?Web 客户机的一个用户体验相关的对象和属性。一?Web 会话可以也经怼跨越多个客户?br />application是是代表与整?Web 应用E序相关的对象和属性。这实质上是跨越整个 Web 应用E序Q包括多个页面、请求和会话的一个全局作用?/font>
66、Request对象的主要方法:
setAttribute(String name,Object)Q设|名字ؓname的request的参数?br />getAttribute(String name)Q返回由name指定的属性?br />getAttributeNames()Q返回request对象所有属性的名字集合Q结果是一个枚丄实例
getCookies()Q返回客L的所有Cookie对象Q结果是一个Cookie数组
getCharacterEncoding()Q返回请求中的字W编码方?br />getContentLength()Q返回请求的Body的长?br />getHeader(String name)Q获得HTTP协议定义的文件头信息
getHeaders(String name)Q返回指定名字的request Header的所有|l果是一个枚丄实例
getHeaderNames()Q返回所以request Header的名字,l果是一个枚丄实例
getInputStream()Q返回请求的输入,用于获得h中的数据
getMethod()Q获得客L向服务器端传送数据的Ҏ
getParameter(String name)Q获得客L传送给服务器端的有name指定的参数?br />getParameterNames()Q获得客L传送给服务器端的所有参数的名字Q结果是一个枚丄实例
getParameterValues(String name)Q获得有name指定的参数的所有?br />getProtocol()Q获取客L向服务器端传送数据所依据的协议名U?br />getQueryString()Q获得查询字W串
getRequestURI()Q获取发求字W串的客L地址
getRemoteAddr()Q获取客L的IP地址
getRemoteHost()Q获取客L的名?br />getSession([Boolean create])Q返回和h相关Session
getServerName()Q获取服务器的名?br />getServletPath()Q获取客L所h的脚本文件的路径
getServerPort()Q获取服务器的端口号
removeAttribute(String name)Q删除请求中的一个属?/font>
67、J2EE是技术还是^台还是框ӞJ2EE本n是一个标准,一个ؓ企业分布式应用的开发提供的标准q_?br />J2EE也是一个框Ӟ包括JDBC、JNDI、RMI、JMS、EJB、JTA{技术?/font>
68、我们在web应用开发过E中l常遇到输出某种~码的字W,如iso8859-1{,如何输出一个某U编码的字符Ԍ
Public String translate (String str) { String tempStr = ""; try { tempStr = new String(str.getBytes("ISO-8859-1"), "GBK"); tempStr = tempStr.trim(); } catch (Exception e) { System.err.println(e.getMessage()); } return tempStr; }
69、简q逻辑操作(&,|,^)与条件操?&&,||)的区别。区别主要答两点Qa.条g操作只能操作布尔型的,而逻辑操作不仅可以操作布尔?而且可以操作数值型b.逻辑操作不会产生短\
70、XML文定义有几UŞ式?它们之间有何本质区别Q解析XML文有哪几种方式Q?br />a: 两种形式 dtd schemaQb: 本质区别:schema本n是xml的,可以被XML解析器解?q也是从DTD上发展schema的根本目?Qc:有DOM,SAX,STAX{ ?DOM:处理大型文g时其性能下降的非常厉実뀂这个问题是由DOM的树l构所造成的,q种l构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随问 ?SAX:不现于DOM,SAX是事仉动型的XML解析方式。它序dXML文gQ不需要一ơ全部装载整个文件。当遇到像文件开_文l束Q或者标{ּ头与标签l束Ӟ它会触发一个事Ӟ用户通过在其回调事g中写入处理代码来处理XML文gQ适合对XML的顺序访?STAX:Streaming API for XML (StAX)
71、简qsynchronized和java.util.concurrent.locks.Lock的异同?
主要相同点:Lock能完成synchronized所实现的所有功能主要不同点QLock有比synchronized更精的U程语义和更好的性能。synchronized会自动释NQ而Lock一定要求程序员手工释放Qƈ且必dfinally从句中释放?/font>
72、EJB的角色和三个对象
一个完整的ZEJB的分布式计算l构由六个角色组成,q六个角色可以由不同的开发商提供Q每个角色所作的工作必须遵@Sun公司提供的EJB规范Q以保证彼此之间的兼Ҏ。这六个角色分别是EJBlg开发者(Enterprise Bean ProviderQ?、应用组合者(Application AssemblerQ、部|者(DeployerQ、EJB 服务器提供者(EJB Server ProviderQ、EJB 容器提供者(EJB Container ProviderQ、系l管理员QSystem AdministratorQ三个对象是RemoteQLocalQ接口、HomeQLocalHomeQ接口,Beanc?/font>
73、EJB容器提供的服务主要提供声明周期管理、代码生、持l性管理、安全、事务管理、锁和ƈ发行理{服务?/p>
74、EJB规范规定EJB中禁止的操作有哪些? 1.不能操作U程和线EAPI(U程API指非U程对象的方法如notify,wait{?Q?.不能操作awtQ?.不能实现服务器功能,4.不能寚w态属生存取,5.不能使用IO操作直接存取文gpȝQ?.不能加蝲本地?Q?.不能this作ؓ变量和返回,8.不能循环调用?/p>
75、remote接口和home接口主要作用remote接口定义了业务方法,用于EJB客户端调用业务方法。home接口是EJB工厂用于创徏和移除查找EJB实例
76、bean 实例的生命周期对于Stateless Session Bean、Entity Bean、Message Driven Bean一般存在缓冲池理Q而对于Entity Bean和Statefull Session Bean存在Cache理Q通常包含创徏实例Q设|上下文、创建EJB ObjectQcreateQ、业务方法调用、remove{过E,对于存在~冲池管理的BeanQ在create之后实例q不从内存清除,而是采用~冲池调度机制不断重用实例,而对于存在Cache理的Bean则通过ȀzdLzL制保持Bean的状态ƈ限制内存中实例数量?/p>
77、EJB的激zL?以Stateful Session Bean ZQ其Cache大小军_了内存中可以同时存在的Bean实例的数量,ҎMRU或NRU法Q实例在ȀzdLzȝ态之间迁U,ȀzL制是当客L调用某个EJB实例业务ҎӞ如果对应EJB Object发现自己没有l定对应的Bean实例则从其去ȀzBean存储中(通过序列化机制存储实例)回复Q激z)此实例。状态变q前会调用对应的ejbActive和ejbPassivateҎ?/p>
78、EJB的几U类型会话(SessionQBean Q实体(EntityQBean 消息驱动的(Message DrivenQBean Q会话Bean又可分ؓ有状态(StatefulQ和无状态(StatelessQ两U;实体Bean可分为Bean理的持l性(BMPQ和容器理的持l性(CMPQ两U?/p>
79、客服端调用EJB对象的几个基本步骤设|JNDI服务工厂以及JNDI服务地址pȝ属性,查找Home接口Q从Home接口调用CreateҎ创徏Remote接口Q通过Remote接口调用其业务方法?/p>
80、如何给weblogic指定大小的内? 在启动Weblogic的脚本中Q位于所在Domian对应服务器目录下的startServerNameQ,增加set MEM_ARGS=-Xms32m -Xmx200mQ可以调整最内存ؓ32MQ最?00M
81、如何设定的weblogic的热启动模式(开发模?与品发布模?可以在管理控制台中修改对应服务器的启动模式ؓ开发或产品模式之一。或者修Ҏ务的启动文g或者commenv文gQ增加set PRODUCTION_MODE=true?/p>
82、如何启动时不需输入用户名与密码?修改服务启动文gQ增?WLS_USER和WLS_PWV也可以在boot.properties文g中增加加密过的用户名和密?
83、在weblogic理制台中对一个应用域(或者说是一个网?Domain)q行jms及ejb或连接池{相关信息进行配|后,实际保存在什么文件中?保存在此Domain的config.xml文g中,它是服务器的核心配置文g?/p>
84、说说weblogic中一个Domain的缺省目录结?比如要将一个简单的helloWorld.jsp攑օ何目录下,然的在浏览器上就可打入http://L:端口?/helloword.jsp可以看到运行结果了? 又比如这其中用到了一个自己写的javaBean该如何办?
Domain目录\服务器目录\applicationsQ将应用目录攑֜此目录下可以作为应用访问,如果是Web应用Q应用目录需要满Web应用目录要求Qjsp文g可以直接攑֜应用目录中,Javabean需要放在应用目录的WEB-INF目录的classes目录中,讄服务器的~省应用可以实现在览器上无需输入应用名?/p>
85、在weblogic中发布ejb需涉及到哪些配|文件不同类型的EJB涉及的配|文件不同,都涉及到的配|文件包括ejb-jar.xml,weblogic-ejb-jar.xmlCMP实体Bean一般还需要weblogic-cmp-rdbms-jar.xml
86、如何在weblogic中进行ssl配置与客L的认证配|或说说j2ee(标准)q行ssl的配|缺省安装中使用DemoIdentity.jks和DemoTrust.jks KeyStore实现SSLQ需要配|服务器使用Enable SSLQ配|其端口Q在产品模式下需要从CA获取U有密钥和数字证书,创徏identity和trust keystoreQ装载获得的密钥和数字证书。可以配|此SSLq接是单向还是双向的?/p>
87、如何查看在weblogic中已l发布的EJB?可以使用理控制収ͼ在它的Deployment中可以查看所有已发布的EJB
88、CORBA是什?用途是什? CORBA 标准是公共对象请求代理结?Common Object Request Broker Architecture)Q由对象理l织 (Object Management GroupQ羃写ؓ OMG)标准化。它的组成是接口定义语言(IDL), 语言l定(binding:也译~?和允许应用程序间互操作的协议。其目的为:用不同的E序设计语言书写在不同的q程中运行,Z同的操作pȝ开发?/p>
89、说说你所熟悉或听说过的j2ee中的几种常用模式?及对设计模式的一些看?br /> Session Facade PatternQ用SessionBean讉KEntityBeanQMessage Facade PatternQ实现异步调用;EJB Command PatternQ用Command JavaBeans取代SessionBeanQ实现轻量讉KQData Transfer Object FactoryQ通过DTO Factory化EntityBean数据提供Ҏ;Generic Attribute AccessQ通过AttibuteAccess接口化EntityBean数据提供Ҏ;Business InterfaceQ通过q程Q本圎ͼ接口和Beancd现相同接口规范业务逻辑一致性;QJQ架构的设计好坏直接媄响系l的性能、可扩展性、可l护性、组件可重用性及开发效率。项目越复杂Q项目队伍越庞大则越能体现良好设计的重要性?/p>
90、说说在weblogic中开发消息Bean时的persistent与non-persisten的差别persistent方式的MDB可以保证消息传递的可靠?也就是如果EJB容器出现问题而JMS服务器依然会消息在此MDB可用的时候发送过来,而nonQpersistent方式的消息将被丢弃?/p>
91、Servlet执行时一般实现哪几个ҎQpublic void init(ServletConfig config)Qpublic ServletConfig getServletConfig()Qpublic String getServletInfo()Qpublic void service(ServletRequest request,ServletResponse response)Qpublic void destroy()
92、常用的设计模式Q说明工厂模式?Java中的23U设计模式:FactoryQ工厂模式)QBuilderQ徏造模式)Q?Factory MethodQ工厂方法模式)QPrototypeQ原始模型模式)QSingletonQ单例模式)Q?FacadeQ门面模式)QAdapterQ适配器模式)Q?BridgeQ桥梁模式)Q?CompositeQ合成模式)QDecoratorQ装饰模式)Q?FlyweightQn元模式)Q?ProxyQ代理模式)QCommandQ命令模式)Q?InterpreterQ解释器模式Q, VisitorQ访问者模式)QIteratorQP代子模式Q, MediatorQ调停者模式)Q?MementoQ备忘录模式Q,ObserverQ观察者模式)QStateQ状态模式)QStrategyQ策略模式)QTemplate MethodQ模板方法模式)Q?Chain Of ResponsibleityQ责任链模式Q。工厂模式:工厂模式是一U经常被使用到的模式Q根据工厂模式实现的cd以根据提供的数据生成一l类中某一个类的实例,通常q一l类有一个公q抽象父类q且实现了相同的ҎQ但是这些方法针对不同的数据q行了不同的操作。首先需要定义一个基c,该类的子c通过不同的方法实C基类中的Ҏ。然后需要定义一个工厂类Q工厂类可以Ҏ条g生成不同的子cd例。当得到子类的实例后Q开发h员可以调用基cM的方法而不必考虑到底q回的是哪一个子cȝ实例?/p>
93、EJB需直接实现它的业务接口或Home接口吗,Lq理由。远E接口和Home接口不需要直接实玎ͼ他们的实C码是由服务器产生的,E序q行中对应实现类会作为对应接口类型的实例被用?/p>
94、排序都有哪几种ҎQ请列D。用JAVA实现一个快速排序。排序的Ҏ有:插入排序Q直接插入排序、希排序)Q交换排序(冒排序、快速排序)Q选择排序Q直接选择排序、堆排序Q,归ƈ排序Q分配排序(排序、基数排序)
快速排序的伪代码? /使用快速排序方法对a[ 0 :n- 1 ]排序Q从a[ 0 :n- 1 ]中选择一个元素作为m i d d l eQ该元素为支点,
把余下的元素分割ZDleft 和r i g h tQ得l e f t中的元素都小于等于支点,而right 中的元素都大于等于支点,递归C用快速排序方法对left q行排序Q递归C用快速排序方法对right q行排序Q所得结果ؓl e f t + m i d d l e + r i g h t?/p>
95、请对以下在J2EE中常用的名词q行解释(或简单描q?web容器Q给处于其中的应用程序组ӞJSPQSERVLETQ提供一个环境,使JSP,SERVLET直接更容器中的环境变量接口交互,不必x其它pȝ问题。主要有WEB服务器来实现。例如:TOMCAT,WEBLOGIC,WEBSPHERE{。该容器提供的接口严格遵守J2EE规范中的WEB APPLICATION 标准。我们把遵守以上标准的WEB服务器就叫做J2EE中的WEB容器。EJB容器QEnterprise java bean 容器。更h行业领域特色。他提供l运行在其中的组件EJB各种理功能。只要满J2EE规范的EJB攑օ该容器,马上׃被容器进行高效率的管理。ƈ且可以通过现成的接口来获得pȝU别的服务。例如邮件服务、事务管理。JNDIQ(Java Naming & Directory InterfaceQJAVA命名目录服务。主要提供的功能是:提供一个目录系l,让其它各地的应用E序在其上面留下自己的烦引,从而满_速查扑֒定位分布式应用程序的功能。JMSQ(Java Message ServiceQJAVA消息服务。主要实现各个应用程序之间的通讯。包括点对点和广播。JTAQ(Java Transaction APIQJAVA事务服务。提供各U分布式事务服务。应用程序只需调用其提供的接口卛_。JAFQ(Java Action FrameWorkQJAVA安全认证框架。提供一些安全控制方面的框架。让开发者通过各种部v和自定义实现自己的个性安全控制策略。RMI/IIOP:QRemote Method Invocation /internet对象h中介协议Q他们主要用于通过q程调用服务。例如,q程有一台计机上运行一个程序,它提供股分析服务,我们可以在本地计机上实现对其直接调用。当然这是要通过一定的规范才能在异构的pȝ之间q行通信。RMI是JAVAҎ的?/p>
96、JAVA语言如何q行异常处理Q关键字Qthrows,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?
Java通过面向对象的方法进行异常处理,把各U不同的异常q行分类Qƈ提供了良好的接口。在Java中,每个异常都是一个对象,它是ThrowablecL其它子类的实例。当一个方法出现异常后便抛Z个异常对象,该对象中包含有异怿息,调用q个对象的方法可以捕获到q个异常q进行处理。Java的异常处理是通过5个关键词来实现的Qtry、catch、throw、throws和finally。一般情况下是用try来执行一D늨序,如果出现异常Q系l会抛出QthrowsQ一个异常,q时候你可以通过它的cd来捕捉(catchQ它Q或最后(finallyQ由~省处理器来处理。用try来指定一块预防所有“异常”的E序。紧跟在tryE序后面Q应包含一个catch子句来指定你惌捕捉的“异常”的cd。throw语句用来明确地抛Z个“异常”。throws用来标明一个成员函数可能抛出的各种“异常”。Finally为确保一D代码不发生什么“异常”都被执行一D代码。可以在一个成员函数调用的外面写一个try语句Q在q个成员函数内部写另一个try语句保护其他代码。每当遇C个try语句Q“异常”的框架放到堆栈上面,直到所有的try语句都完成。如果下一U的try语句没有ҎU“异常”进行处理,堆栈׃展开Q直到遇到有处理q种“异常”的try语句?/p>
97、一个?java”源文g中是否可以包括多个类Q不是内部类Q?有什么限Ӟ可以。必d有一个类名与文g名相同?/p>
98、MVC的各个部分都有那些技术来实现?如何实现? MVC是ModelQViewQController的简写?Model" 代表的是应用的业务逻辑Q通过JavaBeanQEJBlg实现Q, "View" 是应用的表示面(由JSP面产生Q,"Controller" 是提供应用的处理q程控制Q一般是一个ServletQ,通过q种设计模型把应用逻辑Q处理过E和昄逻辑分成不同的组件实现。这些组件可以进行交互和重用?/p>
99、java中有几种Ҏ可以实现一个线E?用什么关键字修饰同步Ҏ? stop()和suspend()ҎZ不推荐用?有两U实现方法,分别是承ThreadcM实现Runnable接口用synchronized关键字修饰同步方法反对用stop()Q是因ؓ它不安全。它会解除由U程获取的所有锁定,而且如果对象处于一U不q诏状态,那么其他U程能在那种状态下查和修改它们。结果很难检查出真正的问题所在。suspend()ҎҎ发生死锁。调用suspend()的时候,目标U程会停下来Q但却仍然持有在q之前获得的锁定。此Ӟ其他MU程都不能访问锁定的资源Q除非被“挂起”的U程恢复q行。对MU程来说Q如果它们想恢复目标U程Q同时又试图使用M一个锁定的资源Q就会造成死锁。所以不应该使用suspend()Q而应在自qThreadcM|入一个标志,指出U程应该zdq是挂v。若标志指出U程应该挂vQ便用wait()命其q入{待状态。若标志指出U程应当恢复Q则用一个notify()重新启动U程?/p>
100、java中有几种cd的流QJDK为每U类型的提供了一些抽象类以供l承Q请说出他们分别是哪些类Q?br />字节,字符。字节流l承于InputStream \ OutputStreamQ字W流l承于InputStreamReader \ OutputStreamWriter。在java.io包中q有许多其他的流Q主要是Z提高性能和用方ѝ?br />
101、java中会存在内存泄漏吗,L单描q。会。如Qint i,i2; return (i-i2); //when i够大的正?i2够大的负数。结果会造成溢位Q导致错误?/font>
102、java中实现多态的机制是什么?Ҏ的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父cM子类之间多态性的一U表玎ͼ重蝲Overloading是一个类中多态性的一U表现?/font>
103、垃圑֛收器的基本原理是什么?垃圾回收器可以马上回收内存吗Q有什么办法主动通知虚拟行垃圑֛Ӟ对于GC来说Q当E序员创建对象时QGC开始监控这个对象的地址、大以及用情c通常QGC采用有向囄方式记录和管理堆(heap)中的所有对象。通过q种方式定哪些对象?可达?Q哪些对象是"不可辄"。当GC定一些对象ؓ"不可?ӞGC有责Q回收q些内存I间。可以。程序员可以手动执行System.gc()Q通知GCq行Q但是Java语言规范q不保证GC一定会执行?/font>
104、静态变量和实例变量的区别?static i = 10; //帔RQ?class A a; a.i =10;//可变
105、什么是java序列化,如何实现java序列化?
序列化就是一U用来处理对象流的机Ӟ所谓对象流也就是将对象的内容进行流化。可以对化后的对象q行d操作Q也可将化后的对象传输于网l之间。序列化是ؓ了解军_对对象流q行d操作时所引发的问题。序列化的实玎ͼ需要被序列化的cd现Serializable接口Q该接口没有需要实现的ҎQimplements Serializable只是Z标注该对象是可被序列化的Q然后用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象?对象Q接着Q用ObjectOutputStream对象的writeObject(Object obj)Ҏ可以将参数为obj的对象写?即保存其状?Q要恢复的话则用输入?/font>
106、是否可以从一个staticҎ内部发出寚wstaticҎ的调用?不可?如果其中包含对象的method()Q不能保证对象初始化.
107、写clone()ҎӞ通常都有一行代码,是什么?Clone 有缺省行为,super.clone();他负责生正大的I间Qƈ逐位复制?/font>
108、在JAVA中,如何跛_当前的多重嵌套@环?用break; return Ҏ?/font>
109、List、Map、Set三个接口Q存取元素时Q各有什么特点?List 以特定次序来持有元素Q可有重复元素。Set 无法拥有重复元素,内部排序。Map 保存key-value|value可多倹{?/font>
110、J2EE是什么?J2EE是Sun公司提出的多?multi-diered),分布?distributed),Zlg(component-base)的企业应用模型(enterpriese application model).在这L一个应用系l中Q可按照功能划分Z同的lgQ这些组件又可在不同计算ZQƈ且处于相应的层次(tier)中。所属层ơ包括客户层(clietn tier)lg,web层和lg,Business层和lg,企业信息pȝ(EIS)层?/font>
111、UML斚w标准建模语言UML。用例图,静态图(包括cd、对象图和包?,行ؓ?交互?序?合作?,实现图?/font>
112、说Z些常用的c,包,接口Q请各D5个常用的c:BufferedReader BufferedWriter FileReader FileWirter String IntegerQ常用的包:java.lang java.awt java.io java.util java.sqlQ常用的接口QRemote List Map Document NodeList
113、开发中都用C那些设计模式?用在什么场? 每个模式都描qC一个在我们的环境中不断出现的问题,然后描述了该问题的解x案的核心。通过q种方式Q你可以无数ơ地使用那些已有的解x案,无需在重复相同的工作。主要用CMVC的设计模式。用来开发JSP/Servlet或者J2EE的相兛_用。简单工厂模式等?/font>
114、jsp有哪些动?作用分别是什? JSP共有以下6U基本动?jsp:includeQ在面被请求的时候引入一个文件?jsp:useBeanQ寻找或者实例化一个JavaBean?jsp:setPropertyQ设|JavaBean的属性?jsp:getPropertyQ输出某个JavaBean的属性?jsp:forwardQ把h转到一个新的页面?jsp:pluginQ根据浏览器cd为Java插g生成OBJECT或EMBED标记?/font>
115、Anonymous Inner Class (匿名内部c? 是否可以extends(l承)其它c,是否可以implements(实现)interface(接口)? 可以l承其他cL完成其他接口Q在swing~程中常用此方式?/font>
116、应用服务器与WEB SERVER的区别?应用服务器:Weblogic、Tomcat、JbossQ?WEB SERVERQIIS?Apache
117、BS与CS的联pM区别?br />C/S是Client/Server的羃写。服务器通常采用高性能的PC、工作站或小型机Qƈ采用大型数据库系l,如Oracle、Sybase、Informix?SQL Server。客L需要安装专用的客户端Y件?br />B/QxBrower/Server的羃写,客户Z只要安装一个浏览器QBrowserQ,如Netscape Navigator或Internet ExplorerQ服务器安装Oracle、Sybase、Informix?SQL Server{数据库。在q种l构下,用户界面完全通过WWW览器实玎ͼ一部分事务逻辑在前端实玎ͼ但是主要事务逻辑在服务器端实现。浏览器通过Qeb Server 同数据库q行数据交互?br />C/S ?B/S 区别Q?br />Q.g环境不同: C/S 一般徏立在专用的网l上, 范围里的网l环? 局域网之间再通过专门服务器提供连接和数据交换服务Q B/S 建立在广域网之上? 不必是专门的|络g环境,例与电话上网, U用讑֤. 信息自己理. 有比C/S更强的适应范围, 一般只要有操作pȝ和浏览器p
Q.对安全要求不?QC/S 一般面向相对固定的用户? 对信息安全的控制能力很强. 一般高度机密的信息pȝ采用C/S l构适宜. 可以通过B/S发布部分可公开信息.B/S 建立在广域网之上, 对安全的控制能力相对? 可能面向不可知的用户?br />Q.对程序架构不?Q C/S E序可以更加注重程, 可以Ҏ限多层次校验, 对系l运行速度可以较少考虑. B/S 对安全以及访问速度的多重的考虑, 建立在需要更加优化的基础之上. 比C/S有更高的要求 B/Sl构的程序架构是发展的趋? 从MS?Netpd的BizTalk 2000 Exchange 2000{? 全面支持|络的构件搭建的pȝ. SUN 和IBM推的JavaBean 构g技术等,?B/S更加成熟.
Q.软g重用不同Q?C/S E序可以不可避免的整体性考虑, 构g的重用性不如在B/S要求下的构g的重用性好. B/S 对的多重l构,要求构g相对独立的功? 能够相对较好的重?入买来的餐桌可以再利用,而不是做在墙上的矛_桌子?br />Q.pȝl护不同 QC/S E序׃整体? 必须整体考察, 处理出现的问题以及系l升U? 升? 可能是再做一个全新的pȝQ B/S 构gl成,斚w构g个别的更?实现pȝ的无~升U? pȝl护开销减到最?用户从网上自׃载安装就可以实现升.
Q.处理问题不同 QC/S E序可以处理用户面固? q且在相同区? 安全要求高需? 与操作系l相? 应该都是相同的系l,B/S 建立在广域网? 面向不同的用L, 分散地域, q是C/S无法作到? 与操作系l^台关pL?
Q.用户接口不同Q?C/S 多是建立的Windowq_?表现Ҏ有限,对程序员普遍要求较高QB/S 建立在浏览器? 有更加丰富和生动的表现方式与用户交流. q且大部分难度减?减低开发成?
Q.信息不?Q C/S E序一般是典型的中央集权的机械式处? 交互性相对低QB/S 信息向可变? B-B B-C B-G{信息、流向的变化, 更像交易中心?br />
JAVA~程?br />1Q现在输入n个数字,以逗号Q分开Q然后可选择升或者降序排序;按提交键在另一面昄按什么排序,l果为,提供reset
import java.util.*;
public class bycomma{
public static String[] splitStringByComma(String source){
if(source==null||source.trim().equals(""))
return null;
StringTokenizer commaToker = new StringTokenizer(source,",");
String[] result = new String[commaToker.countTokens()];
int i=0;
while(commaToker.hasMoreTokens()){
result[i] = commaToker.nextToken();
i++;
}
return result;
}
public static void main(String args[]){
String[] s = splitStringByComma("5,8,7,4,3,9,1");
int[] ii = new int[s.length];
for(int i = 0;i<s.length;i++){
ii[i] =Integer.parseInt(s[i]);
}
Arrays.sort(ii);
//asc
for(int i=0;i<s.length;i++){
System.out.println(ii[i]);
}
//desc
for(int i=(s.length-1);i>=0;i--){
System.out.println(ii[i]);
}
}
}
2Q金额{换,阿拉伯数字的金额转换成中国传l的形式如:QE1011Q->Q一千零一拾一元整Q输出?br />package test.format;
import java.text.NumberFormat;
import java.util.HashMap;
public class SimpleMoneyFormat {
public static final String EMPTY = "";
public static final String ZERO = "?;
public static final String ONE = "?;
public static final String TWO = "?;
public static final String THREE = "?;
public static final String FOUR = "?;
public static final String FIVE = "?;
public static final String SIX = "?;
public static final String SEVEN = "?;
public static final String EIGHT = "?;
public static final String NINE = "?;
public static final String TEN = "?;
public static final String HUNDRED = "?;
public static final String THOUSAND = "?;
public static final String TEN_THOUSAND = "?;
public static final String HUNDRED_MILLION = "?;
public static final String YUAN = "?;
public static final String JIAO = "?;
public static final String FEN = "?;
public static final String DOT = ".";
private static SimpleMoneyFormat formatter = null;
private HashMap chineseNumberMap = new HashMap();
private HashMap chineseMoneyPattern = new HashMap();
private NumberFormat numberFormat = NumberFormat.getInstance();
private SimpleMoneyFormat() {
numberFormat.setMaximumFractionDigits(4);
numberFormat.setMinimumFractionDigits(2);
numberFormat.setGroupingUsed(false);
chineseNumberMap.put("0", ZERO);
chineseNumberMap.put("1", ONE);
chineseNumberMap.put("2", TWO);
chineseNumberMap.put("3", THREE);
chineseNumberMap.put("4", FOUR);
chineseNumberMap.put("5", FIVE);
chineseNumberMap.put("6", SIX);
chineseNumberMap.put("7", SEVEN);
chineseNumberMap.put("8", EIGHT);
chineseNumberMap.put("9", NINE);
chineseNumberMap.put(DOT, DOT);
chineseMoneyPattern.put("1", TEN);
chineseMoneyPattern.put("2", HUNDRED);
chineseMoneyPattern.put("3", THOUSAND);
chineseMoneyPattern.put("4", TEN_THOUSAND);
chineseMoneyPattern.put("5", TEN);
chineseMoneyPattern.put("6", HUNDRED);
chineseMoneyPattern.put("7", THOUSAND);
chineseMoneyPattern.put("8", HUNDRED_MILLION);
}
public static SimpleMoneyFormat getInstance() {
if (formatter == null)
formatter = new SimpleMoneyFormat();
return formatter;
}
public String format(String moneyStr) {
checkPrecision(moneyStr);
String result;
result = convertToChineseNumber(moneyStr);
result = addUnitsToChineseMoneyString(result);
return result;
}
public String format(double moneyDouble) {
return format(numberFormat.format(moneyDouble));
}
public String format(int moneyInt) {
return format(numberFormat.format(moneyInt));
}
public String format(long moneyLong) {
return format(numberFormat.format(moneyLong));
}
public String format(Number moneyNum) {
return format(numberFormat.format(moneyNum));
}
private String convertToChineseNumber(String moneyStr) {
String result;
StringBuffer cMoneyStringBuffer = new StringBuffer();
for (int i = 0; i < moneyStr.length(); i++) {
cMoneyStringBuffer.append(chineseNumberMap.get(moneyStr.substring(i, i + 1)));
}
//拾䘪仟万亿等都是汉字里面才有的单位,加上它们
int indexOfDot = cMoneyStringBuffer.indexOf(DOT);
int moneyPatternCursor = 1;
for (int i = indexOfDot - 1; i > 0; i--) {
cMoneyStringBuffer.insert(i, chineseMoneyPattern.get(EMPTY + moneyPatternCursor));
moneyPatternCursor = moneyPatternCursor == 8 ? 1 : moneyPatternCursor + 1;
}
String fractionPart = cMoneyStringBuffer.substring(cMoneyStringBuffer.indexOf("."));
cMoneyStringBuffer.delete(cMoneyStringBuffer.indexOf("."), cMoneyStringBuffer.length());
while (cMoneyStringBuffer.indexOf("零拾") != -1) {
cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零拾"), cMoneyStringBuffer.indexOf("零拾") + 2, ZERO);
}
while (cMoneyStringBuffer.indexOf("零䘪") != -1) {
cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零䘪"), cMoneyStringBuffer.indexOf("零䘪") + 2, ZERO);
}
while (cMoneyStringBuffer.indexOf("零仟") != -1) {
cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零仟"), cMoneyStringBuffer.indexOf("零仟") + 2, ZERO);
}
while (cMoneyStringBuffer.indexOf("零万") != -1) {
cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零万"), cMoneyStringBuffer.indexOf("零万") + 2, TEN_THOUSAND);
}
while (cMoneyStringBuffer.indexOf("零亿") != -1) {
cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零亿"), cMoneyStringBuffer.indexOf("零亿") + 2, HUNDRED_MILLION);
}
while (cMoneyStringBuffer.indexOf("雉") != -1) {
cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("雉"), cMoneyStringBuffer.indexOf("雉") + 2, ZERO);
}
if (cMoneyStringBuffer.lastIndexOf(ZERO) == cMoneyStringBuffer.length() - 1)
cMoneyStringBuffer.delete(cMoneyStringBuffer.length() - 1, cMoneyStringBuffer.length());
cMoneyStringBuffer.append(fractionPart);
result = cMoneyStringBuffer.toString();
return result;
}
private String addUnitsToChineseMoneyString(String moneyStr) {
String result;
StringBuffer cMoneyStringBuffer = new StringBuffer(moneyStr);
int indexOfDot = cMoneyStringBuffer.indexOf(DOT);
cMoneyStringBuffer.replace(indexOfDot, indexOfDot + 1, YUAN);
W二QAnonymous Inner Class (匿名内部c? 是否可以extends(l承)其它c,是否可以implements(实现)interface(接口)?
W三QStatic Nested Class ?Inner Class的不同,说得多好(面试题有的很W统)?/font>
W四Q?amp;?amp;&的区别?/font>
W五QHashMap和Hashtable的区别?/font>
W六QCollection ?Collections的区别?/font>
W七Q什么时候用assert?/font>
W八QGC是什? Z么要有GC?
W九QString s = new String("xyz");创徏了几个String Object?
W十QMath.round(11.5){於多少? Math.round(-11.5){於多少?
W十一Qshort s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
W十二,sleep() ?wait() 有什么区?
W十三,Java有没有goto?
W十四,数组有没有length()q个Ҏ? String有没有length()q个Ҏ?
W十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的cd?
W十六,Set里的元素是不能重复的Q那么用什么方法来区分重复与否? 是用==q是equals()? 它们有何区别?
W十七,l我一个你最常见到的runtime exception?/font>
W十八,error和exception有什么区?
W十九,List, Set, Map是否l承自Collection接口?
W二十,abstract class和interface有什么区?
W二十一Qabstract的method是否可同时是static,是否可同时是nativeQ是否可同时是synchronized?
W二十二Q接口是否可l承接口? 抽象cL否可实现(implements)接口? 抽象cL否可l承实体c?concrete class)?
W二十三Q启动一个线E是用run()q是start()?
W二十四Q构造器Constructor是否可被override?
W二十五Q是否可以承Stringc?
W二十六Q当一个线E进入一个对象的一个synchronizedҎ后,其它U程是否可进入此对象的其它方?
W二十七Qtry {}里有一个return语句Q那么紧跟在q个try后的finally {}里的code会不会被执行Q什么时候被执行Q在return前还是后?
W二十八Q编E题: 用最有效率的Ҏ出2乘以8{於?
W二十九Q两个对象值相?x.equals(y) == true)Q但却可有不同的hash codeQ这句话对不?
W三十,当一个对象被当作参数传递到一个方法后Q此Ҏ可改变这个对象的属性,q可q回变化后的l果Q那么这里到底是g递还是引用传?
W三十一Qswtich是否能作用在byte上,是否能作用在long上,是否能作用在String?
W三十二Q编E题: 写一个Singleton出来?br />
以下是答?br />
W一Q谈谈final, finally, finalize的区别?br />final—修饰符Q关键字Q如果一个类被声明ؓfinalQ意味着它不能再z出新的子c,不能作ؓ父类被ѝ因此一个类不能既被声明?abstract的,又被声明为final的。将变量或方法声明ؓfinalQ可以保证它们在使用中不被改变。被声明为final的变量必d声明时给定初|而在以后的引用中只能dQ不可修攏V被声明为final的方法也同样只能使用Q不能重?br />finally—再异常处理时提?finally 块来执行M清除操作。如果抛Z个异常,那么相匹配的 catch 子句׃执行Q然后控制就会进?finally 块(如果有的话)?br />finalize—方法名。Java 技术允怋?finalize() Ҏ在垃圾收集器对象从内存中清除出M前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对q个对象调用的。它是在 Object cM定义的,因此所有的c都l承了它。子c覆?finalize() Ҏ以整理系l资源或者执行其他清理工作。finalize() Ҏ是在垃圾攉器删除对象之前对q个对象调用的?/font>
W二QAnonymous Inner Class (匿名内部c? 是否可以extends(l承)其它c,是否可以implements(实现)interface(接口)?
匿名的内部类是没有名字的内部cR不能extends(l承) 其它c,但一个内部类可以作ؓ一个接口,由另一个内部类实现?/font>
W三QStatic Nested Class ?Inner Class的不同,说得多好(面试题有的很W统)?br />Nested Class Q一般是C++的说法)QInner Class (一般是JAVA的说?。Java内部cMC++嵌套cL大的不同在于是否有指向外部的引用上。具体可见http: //www.frontfree.net/articles/services/view.asp?id=704&page=1
注: 静态内部类QInner ClassQ意味着1创徏一个static内部cȝ对象Q不需要一个外部类对象Q?不能从一个static内部cȝ一个对象访问一个外部类对象
W四Q?amp;?amp;&的区别?br />&是位q算W?amp;&是布逻辑q算W?/font>
W五QHashMap和Hashtable的区别?br />都属于Map接口的类Q实C惟一键映到特定的g?br />HashMap cL有分cL者排序。它允许一?null 键和多个 null 倹{?
Hashtable cM?HashMapQ但是不允许 null 键和 null 倹{它也比 HashMap 慢,因ؓ它是同步的?/font>
W六QCollection ?Collections的区别?br />Collections是个java.util下的c,它包含有各种有关集合操作的静态方法?br />Collection是个java.util下的接口Q它是各U集合结构的父接口?/font>
W七Q什么时候用assert?br />断言是一个包含布表辑ּ的语句,在执行这个语句时假定该表辑ּ?true。如果表辑ּ计算?falseQ那么系l会报告一?AssertionError。它用于调试目的Q?
assert(a > 0); // throws an AssertionError if a <= 0
断言可以有两UŞ式:
assert Expression1 ;
assert Expression1 : Expression2 ;
Expression1 应该L产生一个布倹{?
Expression2 可以是得Z个值的L表达式。这个值用于生成显C更多调试信息的 String 消息?br />断言在默认情况下是禁用的。要在编译时启用断言Q需要?source 1.4 标记Q?
javac -source 1.4 Test.java
要在q行时启用断aQ可使用 -enableassertions 或?-ea 标记?
要在q行旉择用断言Q可使用 -da 或?-disableassertions 标记?
要系l类中启用断aQ可使用 -esa 或?-dsa 标记。还可以在包的基上启用或者禁用断a?
可以在预计正常情况下不会到达的Q何位|上攄断言。断a可以用于验证传递给U有Ҏ的参数。不q,断言不应该用于验证传递给公有Ҏ的参敎ͼ因ؓ不管是否启用了断aQ公有方法都必须查其参数。不q,既可以在公有Ҏ中,也可以在非公有方法中利用断言试后置条g。另外,断言不应该以M方式改变E序的状态?
W八QGC是什? Z么要有GC? (基础)?br />GC是垃圾收集器。Java E序员不用担心内存管理,因ؓ垃圾攉器会自动q行理。要h垃圾攉Q可以调用下面的Ҏ之一Q?
System.gc()
Runtime.getRuntime().gc()
W九QString s = new String("xyz");创徏了几个String Object?
两个对象Q一个是“xyx?一个是指向“xyx”的引用对象s?/font>
W十QMath.round(11.5){於多少? Math.round(-11.5){於多少?
Math.round(11.5)q回QlongQ?2QMath.round(-11.5)q回QlongQ?11;
W十一Qshort s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
short s1 = 1; s1 = s1 + 1;有错Qs1是short型,s1+1是int?不能昑ּ转化为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确?/font>
W十?/font>Qsleep() ?wait() 有什么区? 搞线E的最?br />sleep()Ҏ是ɾU程停止一D|间的Ҏ。在sleep 旉间隔期满后,U程不一定立x复执行。这是因为在那个时刻Q其它线E可能正在运行而且没有被调度ؓ攑ּ执行Q除?a)“醒来”的U程h更高的优先
(b)正在q行的线E因为其它原因而阻塞?br />wait()是线E交互时Q如果线E对一个同步对象x 发出一个wait()调用Q该U程会暂停执行,被调对象q入{待状态,直到被唤醒或{待旉到?/font>
W十?/font>QJava有没有goto?
Goto—java中的保留字,现在没有在java中用?/font>
W十?/font>Q数l有没有length()q个Ҏ? String有没有length()q个ҎQ?br />数组没有length()q个ҎQ有length的属性?br />String有有length()q个Ҏ?/font>
W十?/font>QOverload和Override的区别。Overloaded的方法是否可以改变返回值的cd?
Ҏ的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父cM子类之间多态性的一U表玎ͼ重蝲Overloading是一个类中多态性的一U表现。如果在子类中定义某Ҏ与其父类有相同的名称和参敎ͼ我们说该Ҏ被重?(Overriding)。子cȝ对象使用q个ҎӞ调用子cM的定义,对它而言Q父cM的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参C数或有不同的参数cdQ则UCؓҎ的重?Overloading)。Overloaded的方法是可以改变q回值的cd?/font>
W十?/font>QSet里的元素是不能重复的Q那么用什么方法来区分重复与否? 是用==q是equals()? 它们有何区别?
Set里的元素是不能重复的Q那么用iterator()Ҏ来区分重复与否。equals()是判M个Set是否相等?br />equals()?=Ҏ军_引用值是否指向同一对象equals()在类中被覆盖Qؓ的是当两个分ȝ对象的内容和cd盔R的话Q返回真倹{?/font>
W十?/font>Q给我一个你最常见到的runtime exception?br />ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException,
ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException
W十?/font>Qerror和exception有什么区?
error 表示恢复不是不可能但很困隄情况下的一U严重问题。比如说内存溢出。不可能指望E序能处理这L情况?br />exception 表示一U设计或实现问题。也是_它表C如果程序运行正常,从不会发生的情况?/font>
W十?/font>QList, Set, Map是否l承自Collection接口?
ListQSet?/font>
Map不是
W二?/font>Qabstract class和interface有什么区?
声明Ҏ的存在而不d现它的类被叫做抽象类Qabstract classQ,它用于要创徏一个体现某些基本行为的c,qؓ该类声明ҎQ但不能在该cM实现该类的情c不能创建abstract cȝ实例。然而可以创Z个变量,其类型是一个抽象类Qƈ让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract cȝ子类为它们父cM的所有抽象方法提供实玎ͼ否则它们也是抽象cMؓ。取而代之,在子cM实现该方法。知道其行ؓ的其它类可以在类中实现这些方法?br />接口QinterfaceQ是抽象cȝ变体。在接口中,所有方法都是抽象的。多l承性可通过实现q样的接口而获得。接口中的所有方法都是抽象的Q没有一个有E序体。接口只可以定义static final成员变量。接口的实现与子cȝ|除了该实现类不能从接口定义中l承行ؓ。当cd现特D接口时Q它定义Q即程序体l予Q所有这U接口的Ҏ。然后,它可以在实现了该接口的类的Q何对象上调用接口的方法。由于有抽象c,它允怋用接口名作ؓ引用变量的类型。通常的动态联~将生效。引用可以{换到接口cd或从接口cd转换Qinstanceof q算W可以用来决定某对象的类是否实现了接口?/font>
W二十一Qabstract的method是否可同时是static,是否可同时是nativeQ是否可同时是synchronized?
都不?/font>
W二十二Q接口是否可l承接口? 抽象cL否可实现(implements)接口? 抽象cL否可l承实体c?concrete class)?
接口可以l承接口。抽象类可以实现(implements)接口Q抽象类是否可承实体类Q但前提是实体类必须有明的构造函数?/font>
W二十三Q启动一个线E是用run()q是start()?
启动一个线E是调用start()ҎQɾU程所代表的虚拟处理机处于可运行状态,q意味着它可以由JVM调度q执行。这q不意味着U程׃立即q行。run()Ҏ可以产生必须退出的标志来停止一个线E?/font>
W二十四Q构造器Constructor是否可被override?
构造器Constructor不能被承,因此不能重写OverridingQ但可以被重载Overloading?/font>
W二十五Q是否可以承Stringc?
StringcLfinalcL不可以ѝ?/font>
W二十六Q当一个线E进入一个对象的一个synchronizedҎ后,其它U程是否可进入此对象的其它方?
不能Q一个对象的一个synchronizedҎ只能׃个线E访问?/font>
W二十七Qtry {}里有一个return语句Q那么紧跟在q个try后的finally {}里的code会不会被执行Q什么时候被执行Q在return前还是后?
会执行,在return前执行?/font>
W二十八Q编E题: 用最有效率的Ҏ出2乘以8{於?
有C背景的程序员特别喜欢问这U问题?/font>
2 << 3
W二十九Q两个对象值相?x.equals(y) == true)Q但却可有不同的hash codeQ这句话对不?
不对Q有相同的hash code?/font>
W三?/font>Q当一个对象被当作参数传递到一个方法后Q此Ҏ可改变这个对象的属性,q可q回变化后的l果Q那么这里到底是g递还是引用传?
是g递。Java ~程语言只由g递参数。当一个对象实例作Z个参数被传递到Ҏ中时Q参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变Q但对象的引用是永远不会改变的?/font>
W三十一Qswtich是否能作用在byte上,是否能作用在long上,是否能作用在String?
switchQexpr1Q中Qexpr1是一个整数表辑ּ。因此传递给 switch ?case 语句的参数应该是 int?short?char 或?byte。long,string 都不能作用于swtich?/font>
W三十二Q编E题: 写一个Singleton出来?br /> Singleton模式主要作用是保证在Java应用E序中,一个类Class只有一个实例存在?br />一般Singleton模式通常有几U种形式:
W一UŞ? 定义一个类Q它的构造函Cؓprivate的,它有一个static的private的该cd量,在类初始化时实例话,通过一个public的getInstanceҎ获取对它的引?l而调用其中的Ҏ?br />public class Singleton {
private Singleton(){}
//在自己内部定义自׃个实例,是不是很奇怪?
//注意q是private 只供内部调用
private static Singleton instance = new Singleton();
//q里提供了一个供外部讉K本class的静态方法,可以直接讉K
public static Singleton getInstance() {
return instance;
}
}
W二UŞ?
public class Singleton {
private static Singleton instance = null;
public static synchronized Singleton getInstance() {
//q个Ҏ比上面有所改进Q不用每ơ都q行生成对象Q只是第一ơ
//使用时生成实例,提高了效率!
if (instance==null)
instanceQnew Singleton();
return instance; }
}
其他形式:
定义一个类Q它的构造函Cؓprivate的,所有方法ؓstatic的?br />一般认为第一UŞ式要更加安全?
W三十三 Hashtable和HashMap
Hashtablel承自Dictionaryc,而HashMap是Java1.2引进的Map interface的一个实?
HashMap允许null作ؓ一个entry的key或者valueQ而Hashtable不允?
q有是QHashMap把Hashtable的containsҎL了,Ҏcontainsvalue和containsKey。因为containsҎҎ让h引v误解?
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是Q在
多个U程讉KHashtableӞ不需要自׃ؓ它的Ҏ实现同步Q而HashMap
必Mؓ之提供外同步?
Hashtable和HashMap采用的hash/rehash法都大概一P所以性能不会有很大的差异?/font>