版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)信息技術(shù)第三冊 第19課帶變量的過程教學(xué)實(shí)錄 北京版
- 2023九年級歷史下冊 第一單元 殖民地人民的反抗與資本主義制度的擴(kuò)展第4課 日本明治維新教學(xué)實(shí)錄 新人教版
- 六年級兒童節(jié)講話稿10篇
- 銀行的實(shí)習(xí)報告模板集錦五篇
- 2024六年級英語上冊 Unit 2 School in Canada Lesson 11 Always Do Your Homework教學(xué)實(shí)錄 冀教版(三起)
- 異位妊娠說課-教學(xué)課件
- 老師道歉信范文集合五篇
- 第3課 突破封鎖線(教學(xué)實(shí)錄)-教學(xué)實(shí)錄2023-2024學(xué)年粵教版(B版)小學(xué)信息技術(shù)六年級下冊
- 駕駛員工作述職報告6篇
- 教師學(xué)期個人總結(jié)2021匯報【10篇】
- 兒童保健服務(wù)內(nèi)容與流程
- 幼兒園幼兒食品安全培訓(xùn)
- 珠寶店貴重物品管理規(guī)范(大全)
- 庫存管理中的供應(yīng)與需求平衡
- 中建八局一公司新員工手冊
- WB原理流程課件
- 設(shè)備管理的設(shè)備績效績效指標(biāo)和評價體系
- 智能安防智慧監(jiān)控智慧管理
- 2024年甘肅蘭州生物制品研究所有限責(zé)任公司招聘筆試參考題庫附帶答案詳解
- 保單檢視報告活動策劃
- 室外消火栓安裝工程檢驗(yàn)批質(zhì)量驗(yàn)收記錄表
評論
0/150
提交評論