2023年企業(yè)面試題總匯_第1頁
2023年企業(yè)面試題總匯_第2頁
2023年企業(yè)面試題總匯_第3頁
2023年企業(yè)面試題總匯_第4頁
2023年企業(yè)面試題總匯_第5頁
已閱讀5頁,還剩54頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

公司面試題總匯

1、請列舉至少3個JDK安裝目錄下的可執(zhí)行程序(如:javac),并列舉幾個常用的命令行參數(shù)

1、javac將Java源javacv選項(xiàng)〉v源文獻(xiàn)〉也許的選項(xiàng)涉及:

代碼換成字節(jié)-g生成所有調(diào)試信息

代-gnonc生成無調(diào)試信息

-g:{lines,vars,source}生成只有部分調(diào)試信息

-O優(yōu)化;也許妨礙調(diào)試或者增大類文獻(xiàn)

-nowarn生成無警告

-verbose輸出關(guān)于編譯器正在做的信息

-deprecation輸出使用了不披勵使用的API的源程序位置

用法:-classpath<途徑〉指定用戶類文獻(xiàn)的位置

-sourcepath〈途徑>指定輸入源文獻(xiàn)的位置

-bootclasspath〈途徑〉覆蓋自舉類文獻(xiàn)的位置

-extdirs〈目錄(多個)》覆蓋安裝的擴(kuò)展類的位置

-d<目錄〉指定輸出類文獻(xiàn)的位置

2.jar打架包,查看jar{ctxu}[vfmOM][jar-文獻(xiàn)][manifest-文獻(xiàn)][-C目錄]文獻(xiàn)名…選

架包項(xiàng):

-C創(chuàng)建新的存檔

-t列出存檔內(nèi)容的列表

-X展開存檔中的命名的(或所有的)文獻(xiàn)

-u更新已存在的存檔

-V生成具體輸出到標(biāo)準(zhǔn)輸出上

用法:-f指定存檔文獻(xiàn)名

-m包含來自標(biāo)明文獻(xiàn)的標(biāo)明信息

-0只存儲方式;未用ZIP壓縮格式

-M不產(chǎn)生所有項(xiàng)的清單(manifest)文獻(xiàn)

-i為指定的加文獻(xiàn)產(chǎn)生索引信息

3.javadoc:根據(jù)Javajavadoc[options][packagenames][sourcefiles]Iclassnames][@files]

源代碼及其說明語-ovcrvicwVfHc〉讀取HTML格式的概述文檔

句生成的HTML文-public僅顯示public類和成員

檔-protected顯示protected/public類和成員(缺?。?/p>

-package顯示package/protected/public類和成員

-private顯示所有類和成員

-help顯示命令行選項(xiàng)

用法:-doclct<class>通過候選doclct生成輸出

-docletpath<path>指定doclet類文獻(xiàn)的查找位置

-sourcepath<pathlist>指定源文獻(xiàn)的查找位置

-classpath<pathlist>指定用戶類文獻(xiàn)的查找位置

4.javah:產(chǎn)生可以調(diào)javah[options]<classcs>其中[options]涉及:

用Java過程的C過-help打印該幫助信息-classpath<path>類的加載途徑

程,或建立能被Java-bootclasspath<path>自舉類的加載途徑

程序調(diào)用的C過程-d<dir>輸出目錄

的頭文獻(xiàn)-o<file>輸出文獻(xiàn)(僅能使用-d或-o之一)

-jni生成JNI風(fēng)格的頭文獻(xiàn)(缺?。?/p>

-old生成JDK1.0風(fēng)格的頭文獻(xiàn)

-stubs生成stubs文獻(xiàn)

用法:

-version打印版本信息

-verbose輸出有關(guān)本命令所做工作的信息

-force始終寫輸出文獻(xiàn)

2、請分析命題:“Java采用自動垃圾回收技術(shù)(GC),因此不會出現(xiàn)內(nèi)存泄露“

對象的建立和放置都是在內(nèi)存堆棧上面進(jìn)行的。程序或者其他的對象可以鎖定

一塊堆棧地址來進(jìn)行其他對象的引用。

當(dāng)一個對象沒有任何引用的時候,Java的自動垃圾回收機(jī)制就發(fā)揮作用,自動

刪除這個對象所占用的空間,釋放內(nèi)存以避免內(nèi)存泄漏。但是內(nèi)存泄漏并不是就此

而完全避免了,當(dāng)程序員疏忽大意地忘掉解除一個對象不應(yīng)當(dāng)有的引用的時候,內(nèi)

存泄漏仍然不可避免,但是發(fā)生的幾率要比不啟用垃圾回收機(jī)制的C++程序少很

多。但是總體來講,自動垃圾回收機(jī)制要安全和簡樸許多。

3、請簡樸描述單子模式(單例模式)的各種不同實(shí)現(xiàn)方式,及各自優(yōu)缺陷。請列舉至少2中其

他的設(shè)計模式及應(yīng)用場景

4、/*單例設(shè)計模式重要有2種實(shí)現(xiàn)方式:懶漢式、餓漢式。

5、他們分別有如下實(shí)現(xiàn):

6、餓漢式:

7、〃餓漢式單例類.在類初始化時,已經(jīng)自行實(shí)例化*/

8、publicclassSingletonl{

9、〃私有的默認(rèn)構(gòu)造子

10、privateSingletonl(){}

11、〃己經(jīng)自行實(shí)例化

12、privatestaticfinalSingletonlsingle=newSingletonl();

13、〃靜態(tài)工廠方法

14、publicstaticSingletonlgetlnstance(){

15sreturnsingle;

16、}

17、)

18、懶漢式:

19,〃懶漢式單例類.在第一次調(diào)用的時候?qū)嵗?/p>

20、publicclassSingleton2{

21、〃私有的默認(rèn)構(gòu)造子

22、privateSingleton2(){}

23、〃注意,這里沒有final

24、privatestaticSingleton2single=null;

25、〃靜態(tài)工廠方法

26、publicsynchronizedstaticSingleton2getlnstance(){

27、if(single==null){

28、single=newSingleton2();

29、}

3。、returnsingle;

31、}

32、)

33、

34、/*其他設(shè)計模式:

35、1.適配器模式

36、應(yīng)用場景:比如說在朋友聚會上碰到一個德國人sarsh,可以我不會德語,她不會中文,我只好求助

于我的朋友many了,他作為我和sarsh之間的adapt,讓我和sarsh可以交流了。

37、2.裝飾模式

38、應(yīng)用場景:想要自己做禮物送給朋友,拿出去年在華山頂上的照片,在背面寫上“最佳的禮物”再到街

上禮品店買個相框,在找隔壁學(xué)美術(shù)的朋友設(shè)計一個美麗的盒子裝起來,我們都是Decorator。*/

4、輸出結(jié)果

1.publicstaticvoidmain(String[]args)throwsException(

2.Stringstr="中國”;

3.System.out.println(str.getBytes("UTF-8").length);

4.System.out.printIn(str.getBytes("GBK").length);

5.System.out.println(str,getBytes("ISO-8859-1").length);

6.System.out.printIn(newString(str.getBytes("ISO-8859-1"),("IS0-8859-ln));

7.System.out.println(newString(str.getBytes("UTF-8")?("UTF-8"));

8.System.out.printIn(newString(str.getBytes("GBK"),("GBK'*));

9.}

10.輸出結(jié)果:

11.6

12.4

13.2

14.??

15.中國

16.中國

5、使用二分直找法查找字符串?dāng)?shù)組中"g"元素

6、publicclassQuery4Half{

7、

8、staticintbsearch(String[]a.Stringv){

9、int1,r;

10、1=0;r=a.length-1;

11、while(1<=r){

12、intm=(l+r)/2;

13、if(a[m].compareTo(v)==0)returnm;else

14、if(a[m].compareTo(v)>0)r=m-1;else

15、if(a[m].compareTo(v)<0)1=m+1;

16、}

17、return-1;

18、}

19、

20、publicstaticvoidmain(String[]args){

21、Stringstr[]={"a"b"c"d"e"f"g"h"};

22、intbsearch=bsearch(str,"g");

23、System.out.println(bsearch);

24、}

6、請具體闡述Spring事務(wù)機(jī)制的實(shí)現(xiàn)原理?

Spring的事務(wù)管理機(jī)制實(shí)現(xiàn)的原理,就是通過AOP,使用動態(tài)代理對所有需要事務(wù)管理的

Bean進(jìn)行加載,并根據(jù)配置在invoke方法中對當(dāng)前調(diào)用的方法名進(jìn)行鑒定,并在

method.invoke方法前后為其加上合適的事務(wù)管理代碼,這樣就實(shí)現(xiàn)了Spring式的事務(wù)管

理。

7、Spring聲明式事務(wù)的優(yōu)點(diǎn)

執(zhí)行情況提交或者回滾事務(wù)。

聲明式事務(wù)最大的優(yōu)點(diǎn)就是不需要通過編程的方式管理事務(wù),這樣就不需要在業(yè)務(wù)邏輯代碼

中摻雜事務(wù)管理的代碼,只需在配置文獻(xiàn)中做相關(guān)的事務(wù)規(guī)則聲明(或通過等價的基于標(biāo)注

的方式),便可以將事務(wù)規(guī)則應(yīng)用到業(yè)務(wù)邏輯中。由于事務(wù)管理自身就是一個典型的橫切邏

輯,正是AOP的用武之地。Spring開發(fā)團(tuán)隊也意識到了這一點(diǎn),為聲明式事務(wù)提供了簡

樸而強(qiáng)大的支持。

聲明式事務(wù)管理曾經(jīng)是EJB引認(rèn)為傲的一個亮點(diǎn),如今Spring讓POJO在事務(wù)管理方

面也擁有了和EJB同樣的待遇,讓開發(fā)人員在EJB容器之外也用上了強(qiáng)大的聲明式事務(wù)

管理功能,這重要得益于Spring依賴注入容器和SpringAOP的支持。依賴注入容器為

聲明式事務(wù)管理提供了基礎(chǔ)設(shè)施,使得Bean對于Spring框架而言是可管理的;而

SpringAOP則是聲明式事務(wù)管理的直接實(shí)現(xiàn)者,這一點(diǎn)通過清單8可以看出來。

通常情況下,筆者強(qiáng)烈建議在開發(fā)中使用聲明式事務(wù),不僅由于其簡樸,更重要是由于這樣

使得純業(yè)務(wù)代碼不被污染,極大方便后期的代碼維護(hù)。

和編程式事務(wù)相比,聲明式事務(wù)唯一局限性地方是,后者的最細(xì)粒度只能作用到方法級別,

無法做到像編程式事務(wù)那樣可以作用到代碼塊級別。但是即便有這樣的需求,也存在很多變

通的方法,比如,可以將需要進(jìn)行事務(wù)管理的代碼塊獨(dú)立為方法等等。

8、Struts采用了什么設(shè)計模式?并具體說明各個組成部分?

struts采用了MVC設(shè)計模式,嚴(yán)格按照mvc設(shè)計模式進(jìn)行設(shè)計,實(shí)現(xiàn)解耦和,struts2通

過前端控制器來轉(zhuǎn)發(fā)請求,控制請求流向(也就是我們的控制層)。然后Struts通過模型層去

解決數(shù)據(jù),把解決結(jié)果再交給控制層進(jìn)行視圖解析。這樣一個過程嚴(yán)格按照MVC設(shè)計模式。

9、請簡要說明WebService的組成部分?以及各個部分使用的協(xié)議?

WebService框架核心是基于簡樸對象訪問協(xié)議(SimpleObjectAccessProtocol,

SOAPXWeb服務(wù)描述語言(WebServiceDescriptionLanguage,WSDL)以及通用

描述、發(fā)聊口集成(UniversalDescriptionDiscoveryandIntegration,UDDI\web

服務(wù)中三種發(fā)送接受協(xié)議SOAP/HTTPGET/HTTPPOST

在web服務(wù)中,有三種可供選擇的發(fā)送和接受信息的協(xié)議:SOARHTTPGET,HTTPPOST,

但是SOAP支持的數(shù)據(jù)類型更為廣泛

SOAP=RPC+HTTP+XMLSOAP簡樸的理解,就是這樣的一個開放協(xié)議

SOAP=RPC+HTTP+XML:采用HTTP作為底層通訊協(xié)議;RPC作為一致性的調(diào)用途徑,

XML作為數(shù)據(jù)傳送的格式,允許服務(wù)提供者和服務(wù)客戶通過防火墻在INTERNET進(jìn)行通

訊交互。

10、請用Java代碼實(shí)現(xiàn)一個鏈表結(jié)構(gòu)

10、publicclassMyList<AnyType>{

11、privateclassNode<AnyType>{

12、publicNode<AnyType>pre;

13、publicNode<AnyType>next;

14、publicAnyTypedata;

15publicNode(AnyTyped,Node<AnyType>pJNode<AnyType>n){}

16、publicNode(){}

17、}

18、privateinttheSize;

19、privateNode<AnyType>Header;

20、privateNode<AnyType>Tail;

21、publicMyList(){)

22、publicvoidadd(AnyTypeitem){}

23、publicbooleanisEmpty(){}

24、publicintsize(){}

25、publicAnyTypeget(intidx){}

26、publicvoidprint(){}

27、}

28、/*Node<AnyType>類定義了雙向鏈表中節(jié)點(diǎn)的結(jié)構(gòu),它是一個私有類,而其屬性和構(gòu)造函數(shù)都是公有

的,這樣,其父類可以直接訪問其屬性,而外部類主線不知道Node類的存在。Data是節(jié)點(diǎn)中的數(shù)據(jù)

與,pre指向前一個Node節(jié)點(diǎn),next指向后一個Node節(jié)點(diǎn)。其構(gòu)造函數(shù)的實(shí)現(xiàn)如卜,不解釋:

29、ViewCode*/

30、

、

31publicNode(AnyTyped,Node<AnyType>pJNode<AnyType>n){

32、this.data=d

33、this.pre=p;

34、this.next=n;

35、)

36、

37、publicNode(){

38、this.data=null;

39this.pre=null;

40、this.next=null;

41、)

42、/*下面我們看一下鏈表的構(gòu)造函數(shù)實(shí)現(xiàn):

43、ViewCode*/

44、publicMyList(){

45、theSize=0;

46、Header=newNode<AnyType>(null>null>null);

47、Tail=newNode<AnyType>(null?Headernull);

48>Header.next=Tail;

49、}

50、/*我們構(gòu)造了一個帶有頭、尾節(jié)點(diǎn)的雙向鏈表,頭節(jié)點(diǎn)的Next指向尾節(jié)點(diǎn),為節(jié)點(diǎn)的pre指向頭節(jié)

點(diǎn)。鏈表長度起始為0。

51、繼續(xù)貼上鏈表類其它方法的實(shí)現(xiàn),不解釋了,應(yīng)當(dāng)比較清楚:*/

52、//ViewCode

53、

54、publicvoidadd(AnyTypeitem){

55、Node<AnyType>aNode=newNode<AnyType>(item,null,null);

56、Tail.pre.next=aNode;

57、aNode.pre=Tail.pre;

58、aNode.next=Tail;

59^Tail.pre=aNode;

60、theSize++;

61、}

62、

63、publicbooleanisEmpty(){

64、return(theSize==0);

65、}

66、

67、publicintsize(){

68、returntheSize;

69、}

70、

71、publicAnyTypeget(intidx){

72、if(idx>theSize-1||idx<0)

73、thrownewIndexOutOfBoundsException();

74、Node<AnyType>current=newNode<AnyType>(null^Header,null);

75、for(inti=0;i<idx;i++)

76、current=current.next;

77、returncurrent.data;

78、}

79、

80、publicvoidprint(){

81、Node<AnyType>current=Header.next;

82、while(current.next!=null){

83、〃假如AnyType是你自己定義〃的數(shù)據(jù)類型,那么請務(wù)必提供

84、〃一個toString方法,要么就不

85、〃要在鏈表里實(shí)現(xiàn)print方法。

86、System.out.println(current.data.toString());

87、current=current.next;

88、}

89、}

11、Object類(或子類)的finalize。方法在什么情況下被調(diào)用?

當(dāng)某個對象被系統(tǒng)收集為無用信息的時候,finalize。將被自動調(diào)用,但是jvm不保證finalize()

一定被調(diào)用,也就是說,finalize。的調(diào)用是不擬定的…

12、Servlet中forward。與redirect。的區(qū)別是什么?

redirect()會丟失request的所有信息它屬于頁面級的重定向,僅僅讓你的瀏覽器重

新訪問一個新的url,作為瀏覽者,能很明顯的看到瀏覽器url地址的變化,這和點(diǎn)擊了一

個普通的超鏈接的后果是同樣的。

而RequestDispatcher的forward()方法,是轉(zhuǎn)發(fā),需要request和response最

為參數(shù),就是將用戶的請求,連同請求信息等內(nèi)容,一起轉(zhuǎn)發(fā)到服務(wù)器的此外一個servlet

去解決,它不會丟失request信息。這一過程是服務(wù)器內(nèi)部完畢的,作為訪問者,是感覺

不到了,或者說是透明的,因此訪客瀏覽器的url是不會發(fā)生變化的。

forward是轉(zhuǎn)發(fā),redirect是翳陣專。相同點(diǎn)都是為了兩個組件之間的互相調(diào)用。forward

的運(yùn)營原理是服務(wù)器端內(nèi)部的調(diào)用,所以它不需要通過瀏覽器來請求,所url地址不會改變,

request的作用范圍也沒有中斷過,它的作用域仍然有效。而redirect是重定向,是服務(wù)器

發(fā)送消息告訴瀏覽器,讓瀏覽器重新向新的地址請求,所以,url地址是會改變的,由于重

新請求了,因而request也中斷了,重新請求了,它的作用范圍也失效了,放在request

里面的信息也隨之而清空了。

13、請列出你所了解的若干個不同類型的runtimeexception

NullPointerException-空指針引用異常

ClassCastException-類型強(qiáng)制轉(zhuǎn)換異常。

IllegalArgumentException-傳遞非法參數(shù)異常。

ArithmeticException-算術(shù)運(yùn)算異常

ArrayStoreException-向數(shù)組中存放與聲明類型不兼容對象異常

IndexOutOfBoundsException-下標(biāo)越界異常

NegativeArraySizeException-創(chuàng)建一個大小為負(fù)數(shù)的數(shù)組錯誤異常

NumberFormatException-數(shù)字格式異常

SecurityException-安全異常

UnsupportedOperationException-不支持的操作異常

14、請說明數(shù)據(jù)庫主鍵、外犍的作用。以及獨(dú)立主犍的好處及怵處

SQL的主鍵和外鍵的作用:

外鍵取值規(guī)則:空值或參照的主鍵值。

(1)插入非空值時,假如主鍵表中沒有這個值,則不能插入。

(2)更新時,不能改為主鍵表中沒有的值。

(3)刪除主鍵表記錄時,你可以在建外鍵時選定外鍵記錄一起級聯(lián)刪除還是拒絕刪除。

(4)更新主鍵記錄時,同樣有級聯(lián)更新和拒絕執(zhí)行的選擇。

簡而言之,SQL的主鍵和外鍵就是起約束作用。

15、簡述什么是事物?事物存在哪些屬性?

數(shù)據(jù)庫事務(wù)是指作為單個邏輯工作單元執(zhí)行的一系列操作。屬性:ACID

1、一致性:將事務(wù)中所做的操作捆綁成一個原子單元,即對于事務(wù)所進(jìn)行的數(shù)據(jù)修改

等操作,要么所有執(zhí)行,要么所有不執(zhí)行。

2、原子性:事務(wù)在完畢時,必須使所有的數(shù)據(jù)都保持一致狀態(tài),并且在相關(guān)數(shù)據(jù)中,

所有規(guī)則都必須應(yīng)用于事務(wù)的修改,以保持所有數(shù)據(jù)的完整性。事務(wù)結(jié)束時,所有的內(nèi)部數(shù)

據(jù)結(jié)構(gòu)都應(yīng)當(dāng)是7寸的的。

3、隔離性:由并發(fā)事務(wù)所做的修改必須與任何其他事務(wù)所做的修改相隔離。事務(wù)查看

數(shù)據(jù)時數(shù)據(jù)所處的狀態(tài),要么是被另一并發(fā)事務(wù)修改之前的狀態(tài),要么是被另一并發(fā)事務(wù)修

改之后的狀態(tài),即事務(wù)不會查看由另一個并發(fā)事務(wù)正在修改的數(shù)據(jù)。這種隔離方式也叫可串

行性。

4、持久性:事務(wù)完畢之后,它對系統(tǒng)的影響是永久的,即使出現(xiàn)系統(tǒng)故障也是如此。

16.如何寫出高性能的SQL語句?

Q)整合簡樸,無關(guān)聯(lián)數(shù)據(jù)庫訪問:假如你有幾個簡樸數(shù)據(jù)庫查詢語句,你可以把它們整合

到個查詢中(即使它們的間沒有關(guān)系)

(2)刪除反復(fù)記錄:最高效刪除反復(fù)記錄思緒方法(使用了ROWID)例子:

DELETEFROMEMPEWHEREE.ROWID>(SELECTMIN(X.ROWID)FROMEMPX

WHEREX.EMP_NO=E.EMP_NO);

(3)用TRUNCATE替代DELETE:當(dāng)刪除表中記錄時,在通常情況下,回滾段(rollback

segments)用來存放可以被恢復(fù)信息.假如你沒有COMMIT事務(wù)ORACLE會將數(shù)據(jù)恢

復(fù)到刪除的前狀態(tài)(準(zhǔn)確地說是恢復(fù)到執(zhí)行刪除命令的前狀況)而當(dāng)運(yùn)用TRUNCATE時,回

滾段不再存放任何可被恢復(fù)信息.當(dāng)命令運(yùn)營后,數(shù)據(jù)不能被恢復(fù).因此很少資源被,執(zhí)行時間

也會很短.(譯者按:TRUNCATE只在刪除全表合用,TRUNCATE是DDL不是DML)

(4)選擇最有效率表名順序(只在基于規(guī)則優(yōu)化器中有效):ORACLE解析器按照從右

到左順序解決FROM子句中表名FROM子句中寫在最后表(基礎(chǔ)表drivingtable)將被最

先解決在FROM子句中包含多個表情況下,你必須選擇記錄條數(shù)最少表作為基礎(chǔ)表假如有3

個以上表連接查詢,那就需要選擇交叉表(ersectiontable)作為基礎(chǔ)表,交叉表是指那個被

其它表所引用表.

(5)WHERE子句中連接順序.:ORACLE采用自下而上順序解析WHERE子句,根據(jù)

這個原理,表的間連接必須寫在其它WHERE條件的前,那些可以過濾掉最大數(shù)量記錄條件

必須寫在WHERE子句末尾.

⑹SELECT子句中避免使用'*ORACLE在解析過程中,會將⑻依次轉(zhuǎn)換成所有

列名,這個工作是通過查詢數(shù)據(jù)字典完畢,這意味著將花費(fèi)更多時間

(7)減少訪問數(shù)據(jù)庫次數(shù):ORACLE在內(nèi)部執(zhí)行了許多工作:解析SQL語句,估算索

引運(yùn)用率,綁定變量,讀數(shù)據(jù)塊等;

(8)在SQL*Plus,SQL*Forms和Pro*C中重新設(shè)立ARRAYSIZE參數(shù)可以增長每次數(shù)

據(jù)庫訪問檢索數(shù)據(jù)量,建議值為200(9)使用DECODE來減少解決時間:使用

DECODE可以避免反復(fù)掃瞄相同記錄或反復(fù)連接相同表.(11)用Where子句替換

HAVING子句;

17、列舉JSP的內(nèi)置對象,同一應(yīng)用中頁面有哪些方法?

九大內(nèi)置對象:

1.輸出輸入對象:request對象、response對象、out對象

2.通信控制對象:pageContext對象、session對象、application對象

3.Servlet對象:page對象、config對象

4錯誤解決對象:exception對象

①、直接在URL請求后添加如:

<ahref二"thexuan.jsp?action=transparams&detail=directed直接彳專遞參數(shù)</a>

特別的在使用response.sendRedirect做頁面轉(zhuǎn)向的時候,也可以用如下代碼:

response.sendRedirect(nthexuan.jsp?action=transparams&detail=directe"),可用

request.getParameter(name)取得參數(shù)

②、jsp:param它可以實(shí)現(xiàn)主頁面向包含頁面?zhèn)鬟f參數(shù),如下:

1.<jsp:includepage="RelativeURL">

2.<jsp:paramname="paramname"value="paramvalue"/>

3.</jsp:include>

還可以實(shí)現(xiàn)在使用jsp:forward動作做頁面翳桀時傳遞參數(shù),如下:

1.<jsp:forwardpage="RelativeURL">

2.<jsp:paramname="paramname"value="paramvalue"/>

3.</jsp:forward>

通過這種方式和一般的表單參數(shù)同樣的,也可以通過request.getParameter(name)取得參數(shù)

3、設(shè)立session和request通過顯示的把參數(shù)放置?Jsession和request中,以達(dá)成傳

遞參數(shù)的目的session.setAttribute(name,value);request.setAttribute(name,value)

取參數(shù):value=(valueclassName)session.getAttribute(name);

value=(valueclassName)request.getAttribute(name);

大家肯定已經(jīng)注意到了,在取參數(shù)的時候,做了類型轉(zhuǎn)換,這是由于放置在

session和request中的對象的屬性被看作java.Iang.Object類型的了,假如不轉(zhuǎn)換,

在將直付給value時會報classcastexception異常。

18、JSP如何獲取HTMLFORM中的數(shù)據(jù)?

html頁面的表單

1.<formaction="myjsp.jsp"method=Hpost">

2.你要輸入的數(shù)據(jù):<inputtype="textHname="data">

3.</form>

在表單中,action動作和method合起來表達(dá)把數(shù)據(jù)交給mujsp.jsp頁面去解決,

在jsp頁面呢,用

<%request.getParmerter("data");%>獲取html頁面?zhèn)鬟f過來的數(shù)據(jù),

要注意的是,有時候連個頁面之間的傳遞會出現(xiàn)中文亂碼現(xiàn)象,

解決亂碼的做法是:在jsp頁面加上

1.<%request.setCharacterEncoding("GB2312");

2.request.setCharacterEncoding("GB2312");%>

這樣就不用緊張編碼問題了

另一種:是form表單提交方式獲取表單數(shù)據(jù)。

19、JSP中redirect和forward的區(qū)別是什么?(類似12)

forward是使用同一個request,也就是說用forward傳遞后可以在頁面中獲取request

中的變量或?qū)傩浴?/p>

redirect是新建一個request用新建的request傳遞。

比如有三個jsp文獻(xiàn)第一個里面有〈inputname="name">提交到第二個頁面進(jìn)行解決,

若想在第三個頁面中獲取name的值就要用forward。

20.JSP中對象的傳遞有哪些方法?

request,session,application,cookie

區(qū)別:page的生命周期最短,依次是request,session,叩plication.他們保存在服務(wù)器端.

cookie是保存在客戶端的,用來解決HTTP無狀態(tài)問題.

范圍不同,最小的是page然后request,session,application范圍依次增大

21、Http協(xié)議中返回狀態(tài)200、404、302、301、500、502各式什么含義?

200(成功)服務(wù)器已成功解決了請求。通常,這表達(dá)服務(wù)器提供了請求的網(wǎng)頁。

301(永久移動)請求的網(wǎng)頁已永久移動到新位置。服務(wù)器返回此響應(yīng)(對GET或HEAD

請求的響應(yīng))時,會自動將請求者轉(zhuǎn)到新位置。

302(臨時移動)服務(wù)器目前從不同位置的網(wǎng)頁響應(yīng)請求,但請求者應(yīng)繼續(xù)使用原有位置來

進(jìn)行以后的請求。

404(未找到)服務(wù)器找不到請求的網(wǎng)頁。

500(服務(wù)器內(nèi)部錯誤)服務(wù)器碰到錯誤,無法完畢請求。

502(錯誤網(wǎng)關(guān))服務(wù)器作為網(wǎng)關(guān)或代理,從上游服務(wù)器收到無效響應(yīng)。

22、描述CookiefflSession的作用,區(qū)別和各自的應(yīng)用范圍,Session工作原理

實(shí)現(xiàn)sessionid的保存和傳輸。是cookie,將http的請求變得有狀態(tài)。session的實(shí)現(xiàn)是

web服務(wù)器的事情,但是很顯然默認(rèn)是運(yùn)用會話cookie,也就是存放在瀏覽器內(nèi)存里的那

種cookie來實(shí)現(xiàn)的,在cookie里只是存放了SessionlD,然后在服務(wù)器上建立了一張表,

相應(yīng)客戶端的SessionlD。這張表是存放在服務(wù)器上的進(jìn)程中的,也就是服務(wù)器的內(nèi)存里,

也就是Application里。當(dāng)客戶端請求服務(wù)器的時候,假如服務(wù)器發(fā)現(xiàn)這是一個新的請求,

就會分派給他一個SessionlD,也就是在瀏覽器寫入一個sessionlD的cookie.你可以試

一下,在你請求過一次服務(wù)器之后,在服務(wù)器遍歷客戶端所有的cookie,就會發(fā)現(xiàn)這個叫

做SessionlD的cookie.

但是,這只是session實(shí)現(xiàn)sessionid狀態(tài)記錄的一種方法,假如客戶端瀏覽器禁用了

cookie,很多網(wǎng)站還是可以正常登錄,還是可以對的辨認(rèn)瀏覽器的身份,這就是通過url

重寫的方式,每次交互都攜帶sessionid的信息。

尚有一種方式,就是表單重寫,有些服務(wù)器會在表單中增長隱藏域,來回傳遞sessionid。

所以在了解了這個session的原理之后我們可以自己來造一個自己的session,可以使用

cookie,也可以使用url重寫方式,也可以使用表單方式。

session的結(jié)束問題

尚有知道了session的原理就會明白fsession會話如何結(jié)束,除非服務(wù)器端可以清除一

個session會話,客戶端是沒有能力清除session的,關(guān)閉瀏覽器的時候并不可以結(jié)束當(dāng)前

的會話(忽略瀏覽器關(guān)閉事件),在不依賴于cookie的session中最明顯,你可以記下你的

sessionlD那串字符串,關(guān)閉瀏覽器,打開,把sessionlD自己替換,你就可以恢復(fù)剛才的

會話了。所謂的20分鐘session超時,是服務(wù)器每隔20分鐘對于不活動的session清除

而已。

尚有要指出的是依賴于cookie的session是存放在瀏覽器內(nèi)存中的,所以一個瀏覽器的進(jìn)

程就會產(chǎn)生一個session,可以通過任務(wù)管理器查看進(jìn)程,對于IE來說,只有雙擊桌面上的

瀏覽器快捷方式才干新啟動一個進(jìn)程的,當(dāng)然其他類似啟動iexplorer.exe的行為也可以

到這里你會發(fā)現(xiàn)在依賴于cookie的session中,是需要瀏覽器的支持的!

對于js的ajax請求,確切的說是xmlhttp這個組件發(fā)送的http請求,雖然是你使用js的

代碼自己制造的,但是仍然是借助于瀏覽器發(fā)送的,所以可以獲得session。

23、數(shù)組String[]str和Stringstr分別怎么獲取長度?

size和length()

24、請用JAVA實(shí)現(xiàn)快速排序算法

1.publicclassQuicksort{

2.publicstaticintPartition(intp,intr){

3.intx=a[r-l];

4.inti=p-l;

5.inttemp;

6.for(intj=p;j<=r-l;j++){

7.if(a[j-l]<=x){

8.//swap(a[j-l],a[i-l]);

9.i++;

10.temp=a[j-1];

11.a[j-l]=a[i-l];

12.a[i-l]=temp;

13.)

14.}

15.//swap(a[r-lJa[i+l-l]);

16.temp=a[r-l];

17.a[r-l]=a[i+l-l];

18.a[i+l-l]=temp;

19.returni+1;

20.}

21.

22.publicstaticvoidQuickSort(intp4intr){

23.if(p<r'){

24.intq=Partition(a,p,r);

25.QuickSort(a,p,q-1);

26.QuickSort(a,q+l,r);

27.)

28.}

29.

30.publicstaticvoidmain(String[]args){

31.inta[]={23,53,77,36,84,76,93,13,45,23};

32.QuickSort(a,1,10);

33.for(inti=l;i<=10;i++)

34.System.out.println(a[i-l]);

35.}

36.}

25、請簡樸闡述一下Socket通訊原理,以及Socket基于TCP和UDP協(xié)議實(shí)現(xiàn)的優(yōu)缺陷

Socket通信的原理大體分為以下幾個環(huán)節(jié)。

服務(wù)器端的環(huán)節(jié)如下。

(1)建立服務(wù)器端的Socket,開始偵聽整個網(wǎng)絡(luò)中的連接請求。

(2)當(dāng)檢測到來自客戶端的連接請求時,向客戶端發(fā)送收到連接請求的信息,并建立與

客戶端之間的連接。

(3)當(dāng)完畢通信后,服務(wù)器關(guān)閉與客戶端的Socket連接。

客戶端的環(huán)節(jié)如下。

(1)建立客戶端的Socket,擬定要連接的服務(wù)器的主機(jī)名和端口。

(2)發(fā)送連接請求到服務(wù)器,并等待服務(wù)器的回饋信息。

(3)連接成功后,與服務(wù)器進(jìn)行數(shù)據(jù)的交互。

(4)數(shù)據(jù)解決完畢后,關(guān)閉自身的Socket連接。

TCP:面向連接、傳輸可靠(保證數(shù)據(jù)對的性,保證數(shù)據(jù)順序)、用于傳輸大量數(shù)據(jù)(流模式)、

速度慢,建立連接需要開銷較多(時間,系統(tǒng)資源)。

UDP:面向非連接、傳輸不可靠、用于傳輸少量數(shù)據(jù)(數(shù)據(jù)包模式)、速度快。

26、對象封裝的原則是什么?

封裝原則:隱藏對象的屬性和實(shí)現(xiàn)細(xì)節(jié),僅對外公開接口,并且控制訪問級別

在OOP(面向?qū)ο螅┚幊讨校妙悂韺?shí)現(xiàn)上面的規(guī)定。用類實(shí)現(xiàn)封裝,用封裝來實(shí)現(xiàn)高內(nèi)

聚,低耦合

高聚合是說一個對象的功能都在內(nèi)部搞定,緊緊地結(jié)合在一起

低耦合是說對象之間的依賴要松散,不要牽一發(fā)動全身

只有這樣,當(dāng)系統(tǒng)規(guī)模擴(kuò)大時,才干比較方便

27、請列舉幾種SQL優(yōu)化的方法?

l:mysql所在服務(wù)器內(nèi)核優(yōu)化;此優(yōu)化可由系統(tǒng)運(yùn)維人員完畢

2:mysql配置參數(shù)優(yōu)化(f);此優(yōu)化需進(jìn)行壓力測試來進(jìn)行參數(shù)調(diào)整

3:sql語句及表優(yōu)化

①、當(dāng)只要一行數(shù)據(jù)時使用LIMIT1

②、為搜索字段建索引

③、在Join表的時候使用相稱類型的列,并將其索引

④、千萬不要ORDERBYRAND()

⑤、避免SELECT*

⑥、永遠(yuǎn)為每張表設(shè)立一個ID

使用ENUM而不是VARCHAR

⑧、盡也許的使用NOTNULL

⑨、固定長度的表會更快

垂直分割

拆分大的DELETE或INSERT語句

越小的列會越快

28、請列舉幾種反復(fù)提交的方式?

F5反復(fù)提交、瀏覽器前進(jìn)和后退按鈕反復(fù)提交、使用frameset框架右鍵的此框架重新載

入:1、使用遮罩,讓用戶提交完畢之前等待。提交成功后執(zhí)行頁面重定向(redirectX轉(zhuǎn)

到提交成功信息頁面;

29、描述在MVC架構(gòu)模式下,表單從頁面提交內(nèi)容,最后到內(nèi)容保存到數(shù)據(jù)持久層中間要做

哪些環(huán)節(jié)解決?

30、序列化的作用,應(yīng)用場景

所謂java對象序列化就是將對象的狀態(tài)轉(zhuǎn)換成字節(jié)流,以后可以通過這些值再生成相同狀

態(tài)的對象!對象序列化是對象持久化的一種實(shí)現(xiàn)方法,它是將一個對象的屬性和方法轉(zhuǎn)化為

一種序列化的格式以用于存儲和傳輸,反序列化就是根據(jù)這些保存的信息重建對象的過程。

運(yùn)用場景1:

Java的JavaBeans:Bean的狀態(tài)信息通常是在設(shè)計時配置的,Bean的狀態(tài)信息必須被存

起來,以便當(dāng)程序運(yùn)營時能恢復(fù)這些狀態(tài)信息,這需要將對象的狀態(tài)保存到文獻(xiàn)中,而后可

以通過讀入對象狀態(tài)來重新構(gòu)造對象,恢復(fù)程序狀態(tài)。例如Java.i。包有兩個序列化對象的

類。ObjectOutputStream負(fù)責(zé)將對象寫入字節(jié)流,Objectinputstream從字節(jié)流重構(gòu)對

象。

運(yùn)用場景2:

activiti工作流設(shè)立流程變量

31、一個表中的ID有多個記錄,把所有這個id的記錄查出,并顯示共有多少條記錄數(shù)(SQL

實(shí)現(xiàn))

1.SELECTid,COUNT(id)FROMtable'GROUPBYidHAVINGCOUNT(id)>1

2.

3.SELECT*FROM(SELECTid,COUNT(id)sumidFROMtable'GROUPBYid)tWHEREt

.sumid>1

32、查詢表A中存在ID反復(fù)三次以上的記錄。(使用SQL實(shí)現(xiàn))

1.SELECTid.COUNT(id)FROMtable'GROUPBYidHAVINGCOUNT(id)>3

2.

3.SELECT*FROM(SELECTid,COUNT(id)sumidFROMtable'GROUPBYid)tWHEREt

.sumid>3

33、Collection和Collections有什么區(qū)別?

Collection是集合類的上級接口,繼承與他的接口重要有Set和List.

Collections是針對集合類的一個幫助類,他提供一系列靜態(tài)方法實(shí)現(xiàn)對各種集合的搜索、

排序、線程安全化等操作。

34、Strings=newStringC'abc");請問有幾個String對象?分別是

兩個或一個,"xyz"相應(yīng)一個對象,這個對象放在字符串常量緩沖區(qū),常量"xyz"不管出

現(xiàn)多少遍,都是緩沖區(qū)中的那一個。假如以前就用過‘xyz'直接從緩沖區(qū)拿。假如沒有就

在字符串緩沖區(qū)創(chuàng)建這個"xyz"字符串對象,NewString每寫一遍,就創(chuàng)建一個新的對

象。

35、XML是什么?針對它常用的工具包是什么?

XML全稱為ExtensibleMarkupLanguage,意思是可擴(kuò)展的標(biāo)記語言。XML語法上和

HTML比較相似,但HTML中的元素是固定的,而XML的標(biāo)簽是可以由用戶自定義的,

常用在保存關(guān)系型數(shù)據(jù)和配置文獻(xiàn)。針對它常用的工具包是DOM4J

36、Hibernate的特點(diǎn)及其工作原理,為什么大多數(shù)公司都使用Hibernate?

Hibernate是一個開放源代碼的對象關(guān)系映射框架,它對JDBC進(jìn)行了非常輕量級的對象封

裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫。Hibernate可以應(yīng)

用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的

Web應(yīng)用中使用,

此外hibernate還提供一級緩存和二級緩存。可以進(jìn)行簡樸的數(shù)據(jù)庫優(yōu)化和簡潔的HQL編

寫。使用hibernate需要根據(jù)項(xiàng)目來擬定。不能根據(jù)公司擬定。

Hibernate缺陷

(1)Hibernate在批量數(shù)據(jù)解決時有弱勢

(2)針對單一對象簡樸的增刪查改,適合于Hibernate,而對于批量的修改,刪除,不適合用

Hibernate,這也是OR框架的弱點(diǎn);要使用數(shù)據(jù)庫的特定優(yōu)化機(jī)制的時候,不適合用

Hibernateo

37,Spring的工作流程、以及核心機(jī)制?

核心機(jī)制:IOC-控制翻轉(zhuǎn)。對象的創(chuàng)建交由spring容器創(chuàng)建。常用方式有構(gòu)造器創(chuàng)建、靜態(tài)工

廠、實(shí)例工廠。底層使用反射技術(shù)實(shí)現(xiàn)。DI-依賴注入。對象的依賴屬性由容器注入。一般使用

set方法注入

38、Spring中的事物隔離級別有哪些?事物隔離和傳播的特點(diǎn)

ISOLATION_DEFAULT默認(rèn)級別,根據(jù)數(shù)據(jù)庫選擇相應(yīng)隔離級別

ISOLATION_READ_UNCOMMITTED可以讀取未提交數(shù)據(jù)

ISOLATION_READ_COMMITTED只能讀取已提交數(shù)據(jù),解決臟讀問題(Oracle默認(rèn)級

別)ISOLATION_REPEATABLE_READ是否讀取其他事務(wù)提交修改后的數(shù)據(jù),解決不可反復(fù)

讀問題(MySQL默認(rèn)級別)ISOLATION_SERIALIZABLE是否讀取其他事務(wù)提交添加后的數(shù)

據(jù),解決幻影讀問題

39、Flex的優(yōu)劣點(diǎn)及工作流程

40、不同語言開發(fā)的程序之間如何迸行通信?

Webservice

41."丫{}里有一個return語句,那么緊跟在這個try后的finally。里德code會不會被執(zhí)行?

什么時候被執(zhí)行,在return之前還是后?

1.publicclassTest{

2.publicstaticvoidmain(String[]args){

3.System.out.printin(newTest().test());;

4?}

5.

6.staticinttest()

7.{

8.intx=1;

9.try

10.{

11.returnx;

12.}

13.finally

14.{

15.++X;

16.}

17.)

18.)

19./*執(zhí)行結(jié)果*/

20.1

21./*運(yùn)營結(jié)果是1,為什么呢?主函數(shù)調(diào)用子函數(shù)并得到結(jié)果的過程,好比主函數(shù)準(zhǔn)備一個空罐

子,當(dāng)子函數(shù)要返回結(jié)果時,先把結(jié)果放在罐子里,然后再將程序邏輯返回到主函數(shù)。所謂返回,

就是子函數(shù)說,我不運(yùn)營了,你主函數(shù)繼續(xù)運(yùn)營吧,這沒什么結(jié)果可言,結(jié)果是在說這話之前放進(jìn)

罐子里的。

22.*/

42、在web開發(fā)中,將GBK字符串,以utf-8的格式進(jìn)行轉(zhuǎn)換輸出

newString("string".getBytes("GBK"),"UTF-8");

43、有一個長字符串,它的內(nèi)部包含多個子字符串、子字符串之間用空格隔離,給出算法:如

何去掉里面反復(fù)的字符串。

44、java遞歸調(diào)用輸出一個目錄下的所有子目錄及文獻(xiàn)名稱

1.publicvoidfun(Filefile){

2.File[]files=file.listFiles();

3.for(File_file:files){

4.ile.isDirectory()){

5.fun2(_file);

6.)else{

7.System.out.printIn(_file);

8.)

9.)

10.}

45、一個月的圖片的網(wǎng)站,用戶每檢索一次.閱讀一張、下載一張圖片就會扣除相應(yīng)的簽署,

假如讓你來設(shè)計計費(fèi)模板、采用何種方式最能

節(jié)省各方面的費(fèi)源,談?wù)勏敕ǎ?/p>

46、java中可見的訪問修飾符的含義

public:訪問不受限制。

protected:訪問僅限于包含類或從包含類派生的類型。只有包含該成員的類以及繼承的類

可以存取.

Internal:訪問僅限于當(dāng)前程序集。只有當(dāng)前工程可以存取.

protectedinternal:訪問僅限于當(dāng)前程序集或從包含類派生的類型。

private:訪問僅限于包含類型。只有包含該成員的類可以存取.

47、java用什么來判斷對象是否是屬于某個類或借口的事例?

Instanceof

48、Java中,int和Integer有什么區(qū)別

int是java提供的8種原始數(shù)據(jù)類型之一。Java為每個原始類型提供了封裝類,Integer

是java為int提供的封裝類。int的默認(rèn)值為0,而Integer的默認(rèn)值為null,即Integer

可以區(qū)分出未賦值和值為0的區(qū)別,int則無法表達(dá)出未賦值的情況,例如,要想表達(dá)出沒

有參與考試和考試成績?yōu)?的區(qū)別,則只能使用Integer.在JSP開發(fā)中,Integer的默認(rèn)

為null,所以用el表達(dá)式在文本框中顯示時,值為空白字符串,而int默認(rèn)的默認(rèn)值為0,

所以用el表達(dá)式在文本框中顯示時,結(jié)果為0,所以,int不適合作為web層的表單數(shù)據(jù)

的類型。

在Hibernate中,假如將OID定義為Integer類型,那么Hibernate就可以根據(jù)其

值是否為null而判斷一個對象是否是臨時的假如將OID定義為了int類型還需要在hbm

映射文獻(xiàn)中設(shè)立其unsaved-value屬性為0。

此外,Integer提供了多個與整數(shù)相關(guān)的操作方法,例如,將一個字符串轉(zhuǎn)換成整數(shù),

Integer中還定義了表達(dá)整數(shù)的最大值和最小值的常量

49、Java中,HashMap和Hashtable的區(qū)別?

HashMap把Hashtable的contains方法去掉了改成containsvalue和containsKey.

由于contains方法容易讓人引起誤解。

Hashtable繼承自Dictionary類,而HashMap是Javal.2弓|進(jìn)的Mapinterface

的一個實(shí)現(xiàn)。

最大的不同是,Hashtable的方法是Synchronize的,而HashM叩不是,在多個線

程訪問Hashtable時,不需要自己為它的方法實(shí)現(xiàn)同步,而HashMap就必須為之提供外

同步。

Hashtable和HashMap采用的hash/rehash算法都大約同樣,所以性能不會有很大

的差異。

就HashMap與HashTable重要從三方面來說。

1.歷史因素:Hashtable是基于陳舊的Dictionary類的,HashM

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論