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