Java基礎(chǔ)方面:
1,作用域public,protected,private,以及不寫(xiě)時(shí)的區(qū)別
2,ArrayList和Vector的區(qū)別,HashMap和Hashtable的區(qū)別
3,char型變量能不能定義為一個(gè)中文?為什么?
4,多線程有幾種表示方法,都是什么?同步有幾種實(shí)現(xiàn)方法,都是什么?
5,繼承時(shí)候類的執(zhí)行順序問(wèn)題,一般都是選擇題,問(wèn)你將會(huì)打印出什么?
6,內(nèi)部類的實(shí)現(xiàn)方式?
7,垃圾回收機(jī)制,如何優(yōu)化程序?
8,float型float f=3.4是否正確?
Jsp方面
1,jsp有哪些內(nèi)置對(duì)象?作用分別是什么?
2,jsp有哪些動(dòng)作?作用分別是什么?
3,include的兩種實(shí)現(xiàn)方式的區(qū)別?
4,兩種跳轉(zhuǎn)方式分別是什么?有什么區(qū)別?
Servlet方面
1,說(shuō)一說(shuō)Servlet的生命周期?
2,Servlet版本間(忘了問(wèn)的是哪兩個(gè)版本了)的不同?
Jdbc,Jdo方面
1,可能會(huì)讓你寫(xiě)一段Jdbc連Oracle的程序.
2,Class.forName的作用?為什么要用?
3,Jdo是什么?
Xml方面
1,xml有哪些解析技術(shù)?區(qū)別是什么?
2,你在項(xiàng)目中用到了xml技術(shù)的哪些方面?如何實(shí)現(xiàn)的?
3,用jdom解析xml文件時(shí)如何解決中文問(wèn)題?如何解析?
EJB方面
1,EJB2.0有哪些內(nèi)容?分別用在什么場(chǎng)合? EJB2.0和EJB1.1的區(qū)別?
MVC方面
1,MVC的各個(gè)部分都有那些技術(shù)來(lái)實(shí)現(xiàn)?如何實(shí)現(xiàn)?
設(shè)計(jì)模式方面:
1,開(kāi)發(fā)中都用到了那些設(shè)計(jì)模式?用在什么場(chǎng)合?
JavaScript方面
1,如何校驗(yàn)數(shù)字型?
CORBA
1,CORBA是什么?用途是什么?
誰(shuí)來(lái)做出解答阿!
-------------------------------------------------------------
回答一部分。
1,作用域public,protected,private,以及不寫(xiě)時(shí)的區(qū)別
public 在其他的包中的類也可以引用,protected只限于同一個(gè)包內(nèi)的類,private只有自己可以使用。不寫(xiě)的時(shí)候和protected一樣。
2,ArrayList和Vector的區(qū)別,HashMap和Hashtable的區(qū)別
ArrayList需要預(yù)先定義大小,Vector不用。HashMap和Hashtable的默認(rèn)初始化容量(default initial capacity)不同 HashMap是16,Hashtable為11。
3,char型變量能不能定義為一個(gè)中文?為什么?
可以定義。因?yàn)橹形囊彩?6bit的。
4,多線程有幾種表示方法,都是什么?同步有幾種實(shí)現(xiàn)方法,都是什么?
查看jdk文檔。
5,繼承時(shí)候類的執(zhí)行順序問(wèn)題,一般都是選擇題,問(wèn)你將會(huì)打印出什么?
這個(gè)具體的去看。
6,內(nèi)部類的實(shí)現(xiàn)方式?
內(nèi)部類”是在另一個(gè)類的內(nèi)部聲明的類。從Java 1.1開(kāi)始,你可在一個(gè)類中聲明另一個(gè)類,這與聲明字段和方法非常相似。
7,垃圾回收機(jī)制,如何優(yōu)化程序?
在變量不使用的時(shí)候?qū)⑵滟x值為null。
8,float型float f=3.4是否正確?
不行。類型不匹配。改為float f=3.4f。
Servlet方面
1,說(shuō)一說(shuō)Servlet的生命周期?
Servlet的生命周期是當(dāng)服務(wù)器裝載運(yùn)行servlets,接收來(lái)自客戶端的多個(gè)請(qǐng)求并且返回?cái)?shù)據(jù)給客戶端,然后再刪除移開(kāi)servlets的時(shí)間。
2,Servlet版本間(忘了問(wèn)的是哪兩個(gè)版本了)的不同?
我個(gè)人認(rèn)為這個(gè)問(wèn)題沒(méi)有什么實(shí)際意義。
Jdbc,Jdo方面
1,可能會(huì)讓你寫(xiě)一段Jdbc連Oracle的程序.
有通式。Connection conn = null;
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@xxx:1521:xxx";
String user = "xxx";
String password = "xxx";
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(url, user, password);
}
catch (ClassNotFoundException e)
{
System.err.print("ClassNotFoundException: Load jdbc-driver failure!");
System.err.println(e.getMessage());
}
catch (SQLException e)
{
e.printStackTrace();
try
{
if (conn != null)
{
conn.close();
conn = null;
}
}
catch (SQLException se)
{
}
}
2,Class.forName的作用?為什么要用?
返回一個(gè)指定名稱的class對(duì)象。用它是為了load你指定名稱的class。
3,Jdo是什么?
全稱Java Data Objects。提供了在事務(wù)處理數(shù)據(jù)庫(kù)中Java對(duì)象模型的明顯的持久性,直接支持了Java類的實(shí)例,應(yīng)用程序不用處理任何其它的數(shù)據(jù)模型。
Xml方面
1,xml有哪些解析技術(shù)?區(qū)別是什么?
1) CSS是Cascading Style Sheet的縮寫(xiě),即“層疊樣式表”,在1997年W3C頒布HTML4標(biāo)準(zhǔn)的同時(shí)也公布了有關(guān)樣式單的第一個(gè)標(biāo)準(zhǔn)CSS1。
2)XSL(eXtensible Style Language,可擴(kuò)展的樣式語(yǔ)言)是最強(qiáng)大和靈活的樣式語(yǔ)言,是特別為應(yīng)用XML而設(shè)計(jì)的,它完全遵循XML規(guī)則,進(jìn)一步完善了XML本身。
3)Data-Island。還有幾個(gè),但是主要是第二個(gè),其他的我認(rèn)為不是主流。
2,你在項(xiàng)目中用到了xml技術(shù)的哪些方面?如何實(shí)現(xiàn)的?
xslt,fo,html解析,xml數(shù)據(jù)封裝和解析。使用第三方軟件包實(shí)現(xiàn)。
3,用jdom解析xml文件時(shí)如何解決中文問(wèn)題?如何解析?
沒(méi)用過(guò),不太清楚。我使用的castor。(jbuilder9中有)
JavaScript方面
1,如何校驗(yàn)數(shù)字型?
isNaN(parseFloat(xxx))如果為true,則不是數(shù)字。
---
做點(diǎn)力所能及的補(bǔ)充:
(1)Vector的方法都是同步的(Synchronized),是線程安全的(thread-safe),而
ArrayList的方法不是,由于線程的同步必然要影響性能,因此,ArrayList的性能比
Vector好。
(2)當(dāng)Vector或ArrayList中的元素超過(guò)它的初始大小時(shí),Vector會(huì)將它的容量翻倍,而
ArrayList只增加50%的大小,這樣,ArrayList就有利于節(jié)約內(nèi)存空間。
(3)Hashtable是基于陳舊的Dictionary類的,HashMap是Java 1.2引進(jìn)的Map接口的一
個(gè)實(shí)現(xiàn)。
(4)性能方面的比較類似 Vector和ArrayList,比如Hashtable的方法是同步的,而
HashMap的不是。
(5)只有HashMap可以讓你將空值作為一個(gè)表的條目的key或value
---
1,xml有哪些解析技術(shù)?區(qū)別是什么?
有兩種:DOM和SAX.
DOM:可以得到一個(gè)包含文檔中所有元素的樹(shù)結(jié)構(gòu).
SAX:在文檔的不同治點(diǎn)產(chǎn)生事件,應(yīng)用程序可以決定如何處理這些事件以從解析器中得到信息.
---
Java基礎(chǔ)方面:(未寫(xiě)的是已經(jīng)有人回答或我自己也未知或不確定)
4,多線程有幾種表示方法,都是什么?同步有幾種實(shí)現(xiàn)方法,都是什么?
:::
我所知道的有兩種實(shí)現(xiàn)方法:
一種是將方法同步:public synchronized methodName(...){....}
另一種是將對(duì)象同步(此對(duì)象不能是null值): synchronized (object) { ..... }
5,繼承時(shí)候類的執(zhí)行順序問(wèn)題,一般都是選擇題,問(wèn)你將會(huì)打印出什么?
繼承時(shí)候類的執(zhí)行順序是:
父類中被static關(guān)鍵字定義的部分是按所定義的順序而最先被初始化的;
父類構(gòu)造函數(shù)(按調(diào)用順序);
子類中被static關(guān)鍵字定義的部分是按所定義的順序而最先被初始化的;
子類構(gòu)造函數(shù)(按調(diào)用順序);
其他則按方法的調(diào)用順序.
6,內(nèi)部類的實(shí)現(xiàn)方式?
public class XXXXX{ // 只有一個(gè)public類
...
class YYYYY{ // 可以有的訪問(wèn)類型是[ protected | private | 無(wú) ]
...
}
}
8,float型float f=3.4是否正確?
我也不知道是否正確.
我一般是這樣:float f=3.4F; 或 float f=3.4f;// 后面跟一個(gè)英文大寫(xiě)或小寫(xiě)字母F
---
JavaScript方面
1,如何校驗(yàn)數(shù)字型?
var v = document.all.Telephone.value;
if(isNan(v)){
alert("全是數(shù)字");
}
---
yangtaylor的解釋有一半以上是錯(cuò)誤的,大家不要作標(biāo)準(zhǔn)答案背哦
noisysilence的解釋很不錯(cuò),說(shuō)明你已經(jīng)是高手了,不過(guò)說(shuō)明一點(diǎn),Vector的精妙設(shè)置是在于第二個(gè)參數(shù)的設(shè)置,其余的都基本正確。
關(guān)于“作用域public,protected,private,以及不寫(xiě)時(shí)的區(qū)別”的說(shuō)明---
前三個(gè)常用,就不用說(shuō)了,關(guān)于不寫(xiě)時(shí)的情況我來(lái)說(shuō)明一下:
JAVA的作用域其實(shí)有5種,除了上面的3種外還有:private protected,default
public--------------不說(shuō)了
protected-----------除了所有的子類可訪問(wèn)外,同包的非子類也可以訪問(wèn)
private-------------也不說(shuō)了
private protected---只有子類可以訪問(wèn)(這才是我們理解意義上的protected)
default-------------只有同包的類可以訪問(wèn),即使是子類但不同包仍不能訪問(wèn)
我也是看了很多參考書(shū)才最終得到的結(jié)果,在此獻(xiàn)給大家了。
---
ArrayList和Vector的區(qū)別上面已說(shuō),我說(shuō)說(shuō)它們會(huì)帶來(lái)得影響吧。
同為對(duì)象集合,ArrayList可由編譯器檢查而Vector則不會(huì),所以如果用Vector返回對(duì)象集合,編譯器是無(wú)法查錯(cuò)得,只有在運(yùn)行時(shí)才能才能發(fā)現(xiàn)。例如:
********采用Vector*************
server side:
public Vector getCustomDataSet(int num)
{
Vector v = new Vector();
for(int i=0; i<num; i++)
{
CustomData customData = new CustomData(i);
v.add(customData) //此處加入自定義的數(shù)據(jù)結(jié)構(gòu)CustomData
}
return v;
}
client side:
Vector v = getCustomDataSet(5);
for(int i=0; i<v.size(); i++)
{
OtherData data = (OtherData)v.get(i);//此處取出的是customData卻轉(zhuǎn)換為OtherData,編譯器通過(guò)
}
********采用ArrayList*************
server side:
public CustomData[] getCustomDataSet(int num)
{
CustomData[] customData = new CustomData[5];
for(int i=0; i<num; i++)
{
customData[i] = new CustomData(i);
}
return customData;
}
client side:
CustomData[] datas = getCustomDataSet(5);
for(int i=0; i<datas.length; i++)
{
OtherData data = datas[i];//編譯不通過(guò),類型不匹配
}
---
下邊是以前我找的關(guān)于Hashtable和HashMap的不同之處。
Hashtable和HashMap
Hashtable和HashMap類有三個(gè)重要的不同之處。第一個(gè)不同主要是歷史原因。Hashtable是基于陳舊的Dictionary類的,HashMap是Java 1.2引進(jìn)的Map接口的一個(gè)實(shí)現(xiàn)。
也
許最重要的不同是Hashtable的方法是同步的,而HashMap的方法不是。這就意味著,雖然你可以不用采取任何特殊的行為就可以在一個(gè)多線程的應(yīng)
用程序中用一個(gè)Hashtable,但你必須同樣地為一個(gè)HashMap提供外同步。一個(gè)方便的方法就是利用Collections類的靜態(tài)的
synchronizedMap()方法,它創(chuàng)建一個(gè)線程安全的Map對(duì)象,并把它作為一個(gè)封裝的對(duì)象來(lái)返回。這個(gè)對(duì)象的方法可以讓你同步訪問(wèn)潛在的
HashMap。這么做的結(jié)果就是當(dāng)你不需要同步時(shí),你不能切斷Hashtable中的同步(比如在一個(gè)單線程的應(yīng)用程序中),而且同步增加了很多處理費(fèi)
用。
第三點(diǎn)不同是,只有HashMap可以讓你將空值作為一個(gè)表的條目的key或value。HashMap中只有一條記錄可以是一個(gè)空的
key,但任意數(shù)量的條目可以是空的value。這就是說(shuō),如果在表中沒(méi)有發(fā)現(xiàn)搜索鍵,或者如果發(fā)現(xiàn)了搜索鍵,但它是一個(gè)空的值,那么get()將返回
null。如果有必要,用containKey()方法來(lái)區(qū)別這兩種情況。
一些資料建議,當(dāng)需要同步時(shí),用Hashtable,反之用
HashMap。但是,因?yàn)樵谛枰獣r(shí),HashMap可以被同步,HashMap的功能比Hashtable的功能更多,而且它不是基于一個(gè)陳舊的類的,
所以有人認(rèn)為,在各種情況下,HashMap都優(yōu)先于Hashtable。
---
XML 的編程接口: DOM SAX JDOM JAXP
文檔對(duì)象模型(通常稱為 DOM)為 XML
文檔的已解析版本定義了一組接口。解析器讀入整個(gè)文檔,然后構(gòu)建一個(gè)駐留內(nèi)存的樹(shù)結(jié)構(gòu),然后您的代碼就可以使用 DOM
接口來(lái)操作這個(gè)樹(shù)結(jié)構(gòu)。您可以遍歷樹(shù)以了解原始文檔包含了什么,您可以刪除樹(shù)的幾個(gè)部分,還可以重新排列樹(shù)和添加新的分支
DOM 提供了一組豐富的功能,您可以用這些功能來(lái)解釋和操作 XML 文檔,但使用它們是有代價(jià)的。
DOM 構(gòu)建整個(gè)文檔駐留內(nèi)存的樹(shù)。如果文檔很大,就會(huì)要求有極大的內(nèi)存。
DOM 創(chuàng)建表示原始文檔中每個(gè)東西的對(duì)象,包括元素、文本、屬性和空格。如果您只需關(guān)注原始文檔的一小部分,那么創(chuàng)建那些永遠(yuǎn)不被使用的對(duì)象是極其浪費(fèi)的。
DOM 解析器必須在您的代碼取得控制權(quán)之前讀取整個(gè)文檔。對(duì)于非常大的文檔,這會(huì)引起顯著的延遲
為了解決 DOM 問(wèn)題,XML-DEV 參與者們(由 David Megginson 領(lǐng)導(dǎo))創(chuàng)建了 SAX 接口。SAX 的幾個(gè)特征解決了 DOM 的問(wèn)題:
SAX 解析器向您的代碼發(fā)送事件。當(dāng)解析器發(fā)現(xiàn)元素開(kāi)始、元素結(jié)束、文本、文檔的開(kāi)始或結(jié)束等時(shí),它會(huì)告訴您。您可以決定什么事件對(duì)您重要,而且可以決定要?jiǎng)?chuàng)建什么類型的數(shù)據(jù)結(jié)構(gòu)以保存來(lái)自這些事件的數(shù)據(jù)。如果您沒(méi)有顯式地保存來(lái)自某個(gè)事件的數(shù)據(jù),它就被丟棄。
SAX 解析器根本不創(chuàng)建任何對(duì)象,它只是將事件傳遞給您的應(yīng)用程序。如果希望基于那些事件創(chuàng)建對(duì)象,這將由您來(lái)完成。
SAX
解析器在解析開(kāi)始的時(shí)候就開(kāi)始發(fā)送事件。當(dāng)解析器發(fā)現(xiàn)文檔開(kāi)始、元素開(kāi)始和文本等時(shí),代碼會(huì)收到一個(gè)事件。您的應(yīng)用程序可以立即開(kāi)始生成結(jié)果;您不必一直
等到整個(gè)文檔被解析完畢。更妙的是,如果您只查找文檔中某些內(nèi)容,代碼一旦找到所要找的東西就可以拋出一個(gè)異常。該異常會(huì)停止 SAX
解析器,然后代碼用它找到的數(shù)據(jù)做它需要做的任何事。
SAX 解析器也有些問(wèn)題引人關(guān)注:
SAX 事件是無(wú)狀態(tài)的。當(dāng) SAX 解析器在 XML 文檔中發(fā)現(xiàn)文本時(shí),它就向您的代碼發(fā)送一個(gè)事件。該事件僅僅給您發(fā)現(xiàn)的文本;它不告訴您什么元素包含那個(gè)文本。如果您想知道這一點(diǎn),則必須自己編寫(xiě)狀態(tài)管理代碼。
SAX 事件不是持久的。如果應(yīng)用程序需要一個(gè)數(shù)據(jù)結(jié)構(gòu)來(lái)對(duì) XML 文檔建模,則必須自己編寫(xiě)那樣的代碼。如果您需要從 SAX 事件訪問(wèn)數(shù)據(jù),并且沒(méi)有把那個(gè)數(shù)據(jù)存儲(chǔ)在代碼中,那么您不得不再次解析該文檔。
JDOM 是基于 Java 技術(shù)的開(kāi)放源碼項(xiàng)目,它試圖遵循 80/20 規(guī)則:用 DOM 和 SAX 20% 的功能來(lái)滿足 80% 的用戶需求。JDOM 使用 SAX 和 DOM 解析器,因此它是作為一組相對(duì)較小的 Java 類被實(shí)現(xiàn)的。
JDOM 的主要特性是它極大地減少了您必須編寫(xiě)的代碼數(shù)量。盡管本篇介紹性教程并不深入討論編程主題,但 JDOM 應(yīng)用程序的長(zhǎng)度通常是
DOM 應(yīng)用程序的三分之一,大約是 SAX 應(yīng)用程序的一半。(當(dāng)然,堅(jiān)持使用 DOM 的純粹主義者會(huì)建議說(shuō):從長(zhǎng)遠(yuǎn)來(lái)看,學(xué)習(xí)和使用 DOM
終會(huì)有所回報(bào))。JDOM 并不做所有的事,但對(duì)于大多數(shù)您要做的解析,它可能正好適合您。
盡管 DOM、SAX 和 JDOM 為大多數(shù)常見(jiàn)任務(wù)提供了標(biāo)準(zhǔn)接口,但仍有些事情是它們不能解決的。例如,在 Java 程序中創(chuàng)建
DOMParser 對(duì)象的過(guò)程因 DOM 解析器的不同而不同。為了修正這個(gè)問(wèn)題,Sun 發(fā)布了 JAXP(用于 XML 解析的 Java
API,Java API for XML Parsing)。該 API 為使用 DOM、SAX 和 XSLT 處理 XML 文檔提供了公共接口。
JAXP 提供的諸如 DocumentBuilderFactory 和 DocumentBuilder 之類的接口為不同的解析器提供了一個(gè)標(biāo)準(zhǔn)接口。還有一些方法可以允許您控制底層的解析器是否可以識(shí)別名稱空間以及是否使用 DTD 或模式來(lái)驗(yàn)證 XML 文檔。
為了確定哪種接口適合您,您需要理解所有接口的設(shè)計(jì)要點(diǎn),而且需要理解應(yīng)用程序用您將要處理的 XML 文檔來(lái)做什么。考慮下面的問(wèn)題將有助于您找到正確的方法。
要用 Java 編寫(xiě)應(yīng)用程序嗎?JAXP 使用 DOM、SAX 和 JDOM;如果您用 Java 編寫(xiě)代碼,那么您應(yīng)使用 JAXP 將您的代碼與各種解析器實(shí)現(xiàn)的細(xì)節(jié)隔離。
應(yīng)用程序?qū)⑷绾尾渴穑咳绻膽?yīng)用程序?qū)⒁鳛?Java applet 部署,那么您會(huì)希望使要下載的代碼數(shù)量最小,別忘了 SAX 解析器比 DOM 解析器小。還要知道使用 JDOM 時(shí),除了 SAX 或 DOM 解析器之外還要求編寫(xiě)少量的代碼。
一
旦解析了 XML 文檔,還需要多次訪問(wèn)那些數(shù)據(jù)嗎?如果您需要回過(guò)頭來(lái)訪問(wèn) XML 文件的已解析版本,DOM 可能是正確的選擇。而 SAX
事件被觸發(fā)時(shí),如果您以后需要它,則由您(開(kāi)發(fā)人員)自己決定以某種方式保存它。如果您需要訪問(wèn)不曾保存的事件,則必須再次解析該文件。而 DOM
自動(dòng)保存所有的數(shù)據(jù)。
只需要 XML 源文件的少量?jī)?nèi)容嗎?如果您只需要 XML 源文件的少量?jī)?nèi)容,那么 SAX
可能是正確的選擇。SAX 不會(huì)為源文件中的每個(gè)東西創(chuàng)建對(duì)象;您要確定什么是重要的。使用
SAX,您要檢查每個(gè)事件以了解它是否與您的需要有關(guān),然后相應(yīng)地處理它。更妙的是,一旦找到您正在尋找的東西,您的代碼就會(huì)拋出一個(gè)異常來(lái)完全停止
SAX 解析器。
您正在一臺(tái)內(nèi)存很少的機(jī)器上工作嗎?若是的話,不管您可能考慮到的其它因素是什么,SAX 是您的最佳選擇。