java筆試面試題集必備_第1頁
java筆試面試題集必備_第2頁
java筆試面試題集必備_第3頁
java筆試面試題集必備_第4頁
java筆試面試題集必備_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

總結(jié)4.ArrayList,Vector,LinkedList存儲性能和特性5.Collection和Collections的區(qū)別6.List、Map、Set三個(gè)接口,存取元素時(shí),各有什么特點(diǎn)?7.final,finally,finalize的區(qū)別8.Overload和Override的區(qū)別。Overload的方法是否可以改變返回值的類型?11.說一下“==〞和equals()方法在字串變量操作中的不同?12.sleep()和wait()有什么區(qū)別?13.&與&&的區(qū)別?15.請說出你所知道的線程同步的方法。16.網(wǎng)絡(luò)編程中設(shè)計(jì)并發(fā)效勞器,使用多進(jìn)程與多線程,請問有什么區(qū)別?17.什么是反射?18.什么是回調(diào)函數(shù)?19.遍歷文件夾下所有.java的文件?20.線程的根本概念、線程的本狀態(tài)以及狀態(tài)之間的關(guān)系22.描述一下JVM加載class文件的原理機(jī)制?23.什么是觸發(fā)器和存儲過程?二.Servlet&Jsp局部:24.MVC的各個(gè)局部都有那些技術(shù)來實(shí)現(xiàn)?如何實(shí)現(xiàn)?,并說出Servlet和CGI的區(qū)別28.jsp有哪些內(nèi)置對象?作用分別是什么?29.forward和redirect的區(qū)別31.什么是B/S結(jié)構(gòu),C/S結(jié)構(gòu)?三.JDBC&XML35.解析一個(gè)XML文檔有哪些方式?36.XML文檔定義有幾種形式?四.Oracle數(shù)據(jù)庫局部:37.薪水排序后薪水排名在第3-5的員工38.刪除一張表中所有數(shù)據(jù)的方式?40.去除oracle數(shù)據(jù)庫表中重復(fù)數(shù)據(jù)應(yīng)有如下兩種方法五.三大框架局部:44.Hibernate的優(yōu)點(diǎn)?45.J2EE共有23中設(shè)計(jì)模式,說出其中幾種常用的46.Hibernate對象狀態(tài)有哪幾種,并簡單介紹一下47.spring的優(yōu)點(diǎn)?48.介紹一下Struts的工作原理?49.為什么要用Struts?50.什么是DI機(jī)制?51.什么是AJAX,什么是AOP?52.什么是Hibernate延遲加載?53.Hibernate中類之間的關(guān)聯(lián)關(guān)系有幾種?56.為什么要用spring?59.什么是UDDI、SOAP、WSDL?60.Java數(shù)據(jù)庫編程包含哪些類?Java數(shù)據(jù)庫編程的根本過程是什么?61.簡要說明JVM、JSP、Servlet、WebServer、WebBrowser之間的關(guān)系。62.EJB與JAVABEAN的區(qū)別?63.spring有幾種事務(wù)管理,spring的事務(wù)管理接口是什么?64.介紹一下springMVC的工作原理、為什么用spring?65.get和post的區(qū)別?66.請簡單畫出struts技術(shù)構(gòu)建mvc的流程圖67.JSP中動態(tài)INCLUDE與靜態(tài)INCLUDE的區(qū)別?69.jsp有哪些動作?作用分別是什么?70.Struts的控制器局部,視圖局部包括哪些內(nèi)容?71.WEBSERVICE名詞解釋。JSWDL開發(fā)包的介紹。JAXP、JAXM的解釋。72.Hibernate實(shí)現(xiàn)中,load和get方法的區(qū)別,find和iterate的區(qū)別?73.JAVA中如何進(jìn)行事務(wù)的處理?答:Connection類中提供了3個(gè)事務(wù)處理方法:74.Hibernate有哪5個(gè)核心接口?解答:Configuration接口:配置Hibernate,根據(jù)其75.什么是ORM?76.數(shù)據(jù)連接池的工作機(jī)制是什么?77.解釋四種會話跟蹤技術(shù)?78.Statement,PreparedStatement,CallableStatment的區(qū)別79.OOAD中的Association〔聯(lián)合〕、Aggregation(聚合)、Composition〔組合〕的區(qū)別?80.請說出你所知道的線程同步的方法。81.談?wù)剬lassLoader的理解?82.進(jìn)程和線程分別該怎么理解?83.同步和異步有何異同,在什么情況下分別使用他們?請舉例說明84.sleep()和wait()有什么區(qū)別?85.java中會存在內(nèi)存泄露嗎?請簡單描述。86.什么叫應(yīng)用程序域?什么是托管代碼?什么是強(qiáng)類型系統(tǒng)?什么是裝箱和拆箱?什么是重載?CTS、CLS和CLR分別作何解釋?87.程序注釋的用途有哪些?帶注釋的程序有什么缺點(diǎn)?88.UDP和TCP連接有和異同?89.構(gòu)造器Constructor是否可以被繼承?是否可以被Override?90.什么是java序列化,如何實(shí)現(xiàn)java序列化?91.面向?qū)ο蟮奶卣饔心男┓矫妫?2.接口是否可繼承接口?抽象類是否可實(shí)現(xiàn)接口?抽象類是否可繼承實(shí)體類?93.nonymousInnerClass(匿名內(nèi)部類)是否可以extends(繼承)其它類,是否可以94.Bit和Byte是什么意思?它們之間有什么關(guān)系?95.你認(rèn)為java與其他〔你所了解的〕語言相比,有什么優(yōu)點(diǎn)和缺點(diǎn)?96.一個(gè)subclass怎樣調(diào)用superclass中的方法〔myMethod〕和構(gòu)造函數(shù)?97.排序都有哪幾種方法?用偽代碼實(shí)現(xiàn)一個(gè)快速排序98.Stringa=null;if(a!=null&&a.length()>10){...},如果你用“&〞替換“&&〞將發(fā)生什么錯(cuò)誤?99.多線程有幾種實(shí)現(xiàn)方法,都是什么?同步的方法有幾種,都是什么?100.如何格式化日期101.在java語言中int和Integer有什么區(qū)別102、struts2中,Action通過什么方式獲得用戶從頁面輸入的數(shù)據(jù),又是通過什么方式把其自身的數(shù)據(jù)傳給視圖的?103.說出幾個(gè)與spring同類型的開源框架,說出幾個(gè)與hibernate同類型的開源框架,說出幾個(gè)與struts同類型的開源框架104.Struts1中actionform和action屬于MVC哪一層,為什么?105.EJB包含哪3種bean106.Class.forName〔StringclassName〕這個(gè)方法的作用107.你認(rèn)為在表上建立索引可以提高數(shù)據(jù)庫系統(tǒng)的效率嗎,為什么?108.hibernate中的java對象有幾種狀態(tài),其相互關(guān)系如何〔區(qū)別和相互轉(zhuǎn)換〕?109.對hibernate的延遲加載如何理解,在實(shí)際應(yīng)用中,延遲加載與session關(guān)閉的矛盾是如何處理的?110.請寫出一個(gè)單例模式。111.在java中,List是個(gè)接口,那實(shí)現(xiàn)List接口的類有哪些,有什么區(qū)別?112.String,StringBufferStringBuilder的區(qū)別。113.請寫出一段JavaScript代碼,要求頁面有一個(gè)按鈕,點(diǎn)擊按鈕彈出確認(rèn)框。程序可以判斷出用戶點(diǎn)擊的是“確認(rèn)〞還是“取消〞。114.JavaScript如何實(shí)現(xiàn)計(jì)時(shí)功能。115.Java反射機(jī)制的作用?116.你是怎么理解java的泛型的?117.簡述基于Struts框架Web應(yīng)用的工作流程118.在工程中用過Spring的哪些方面?及用過哪些Ajax框架?119、abstractclass和interface有什么區(qū)別?120.MVC模式中M,V,C每個(gè)代表意義,并簡述在Struts中MVC的表現(xiàn)方式。121.簡單說明什么是遞歸?什么情況會使用?并使用java實(shí)現(xiàn)一個(gè)簡單的遞歸程序。122.列出自己常用的jdk包.123.列出自己常用的jdk中的數(shù)據(jù)結(jié)構(gòu)124.簡要描述如何結(jié)合struts、hibernate、spring開發(fā)Web應(yīng)用?125.說明反轉(zhuǎn)控制〔IOC〕和面向方向編程〔AOP〕在spring中的應(yīng)用126.描述J2EE框架的多層結(jié)構(gòu),并簡要說明各層的作用。127、HashMap與TreeMap的區(qū)別?128、ArrayList和Vector的區(qū)別?129.事務(wù)是什么?有哪些屬性,并簡要說明這些屬性的含義。130.類有哪三個(gè)根本特性?各特性的優(yōu)點(diǎn)?131.談?wù)剬ML的理解?說明Web應(yīng)用中文件的作用?132.什么是Web容器?133.運(yùn)行時(shí)異常與一般異常有何異同?134.J2EE是什么?它包括哪些技術(shù)?135、面向?qū)ο蟮奶卣饔心男┓矫?【根底】136、GC是什么?為什么要有GC?137、垃圾回收的優(yōu)點(diǎn)和原理。并考慮2種回收機(jī)制。【根底】138、垃圾回收器的根本原理是什么?垃圾回收器可以馬上回收內(nèi)存嗎?有什么方法主動通知虛擬機(jī)進(jìn)行垃圾回收?【根底】139、Strings=newString(“xyz〞);創(chuàng)立了幾個(gè)StringObject?140、Java中的異常處理機(jī)制的簡單原理和應(yīng)用?141、JAVA語言如何進(jìn)行異常處理,關(guān)鍵字:throws,throw,try,catch,finally分別代表什么意義?在try塊中可以拋出異常嗎?【根底】一.CoreJava局部:1.簡述一下java根本數(shù)據(jù)類型及所占位數(shù),java根本數(shù)據(jù)類型:4類8種邏輯型:booleanfalse/true1byte文本型:char2byte整數(shù)型:byte(1byte),short(2byte),int(4byte),long(8byte)浮點(diǎn)數(shù)型:float(4byte),double(8byte)2.說出5個(gè)的啟動時(shí)異常:RunTimeException|NullPointerException空指針〔空引用〕異常|——ArrayIndexOutOfBoundsException數(shù)組下標(biāo)越界異常|——ArithmeticException數(shù)學(xué)運(yùn)算異常|——ClassCastException強(qiáng)制類型轉(zhuǎn)換異常|——NumberFormatException數(shù)據(jù)格式轉(zhuǎn)換異常3.HashMap和HashTable的區(qū)別:1)HashMap允許空鍵值對,HashTable不允許2)HashMap不是線程平安的,HashTable是3)HashMap直接實(shí)現(xiàn)Map接口,HashTable繼承Dictionary類4ArrayList,Vector,LinkedList存儲性能和特性它們都實(shí)現(xiàn)List接口ArrayList和Vector都是基于數(shù)組實(shí)現(xiàn)的LinkedList基于雙向循環(huán)鏈表〔查找效率低,添加刪除容易〕ArrayList不是線程平安的而Vector是線程平安的,所以速度上ArrayList高于Vector5.Collection和Collections的區(qū)別。Collection是集合類的上級接口,繼承與他的接口主要有Set和List.Collections是針對集合類的一個(gè)幫助類,他提供一系列靜態(tài)方法實(shí)現(xiàn)對各種集合的搜索、排序、線程平安化等操作。6.List、Map、Set三個(gè)接口,存取元素時(shí),各有什么特點(diǎn)?List以特定次序來持有元素,可有重復(fù)元素。Set無法擁有重復(fù)元素,內(nèi)部排序。Map保存key-value值,value可多值。7.final,finally,finalize的區(qū)別final用于聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。finally是異常處理語句結(jié)構(gòu)的一局部,表示總是執(zhí)行。finalize是Object類的一個(gè)方法,在垃圾收集器執(zhí)行的時(shí)候會調(diào)用被回收對象的此方法,可以覆蓋此方法提供垃圾收集時(shí)的其他資源回收,例如關(guān)閉文件等。8.java語言中public、private、protected三個(gè)關(guān)鍵字的用法,Overload和Override的區(qū)別。Overload的方法是否可以改變返回值的類型?作用域當(dāng)前類同包子類其它public√√√√protected√√√×default√√××private√×××方法的重寫Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。重寫是父類與子類之間多態(tài)性的一種表現(xiàn),方法名,參數(shù)列表(類型)、個(gè)數(shù)、順序相同,返回值類型都得與父類的方法一致,訪問權(quán)限不能更封閉,拋出異常不能寬泛.重載是一個(gè)類中多態(tài)性的一種表現(xiàn)。方法名相同,但是參數(shù)不同〔類型不同或個(gè)數(shù)不同或參數(shù)的順序不同〕重載的方法是可以改變返回值的類型。9.用一句話總結(jié)一下冒泡排序。依次比擬相鄰的兩個(gè)數(shù),將小數(shù)放在前面,大數(shù)放在后面.10.實(shí)現(xiàn)線程平安的兩種方式1〕synchronized方法:通過在方法聲明中參加synchronized關(guān)鍵字來聲明synchronized方法。2〕synchronized塊:通過synchronized關(guān)鍵字來聲明synchronized塊。11.說一下“==〞和equals()方法在字串變量操作中的不同?〞==〞比擬的是兩個(gè)字符串對象的地址,equals()是比擬的兩個(gè)字符串的具體值。12.sleep()和wait()有什么區(qū)別?sleep是線程類〔Thread〕的方法,導(dǎo)致此線程暫停執(zhí)行指定時(shí)間,給執(zhí)行時(shí)機(jī)給其他線程,但是監(jiān)控狀態(tài)依然保持,到時(shí)后會自動恢復(fù)。調(diào)用sleep不會釋放對象鎖。wait是Object類的方法,對此對象調(diào)用wait方法導(dǎo)致本線程放棄對象鎖,進(jìn)入等待此對象的等待鎖定池,只有針對此對象發(fā)出notify方法〔或notifyAll〕后本線程才進(jìn)入對象鎖定池準(zhǔn)備獲得對象鎖進(jìn)入運(yùn)行狀態(tài)。13.&與&&的區(qū)別?&位運(yùn)算符:非短路運(yùn)算符,它會把所有條件執(zhí)行完畢之后,才會返回結(jié)果&&邏輯運(yùn)算符〔and〕:短路運(yùn)算符,遇到不符合條件,立即終止程序的執(zhí)行14.error和exception區(qū)別error:表示恢復(fù)不是不可能的一種嚴(yán)重的問題,比方:內(nèi)存溢出,不指望程序處理exception程序運(yùn)行時(shí)的異常,如果程序設(shè)計(jì)合理從不會出現(xiàn)的情況15.請說出你所知道的線程同步的方法。wait():使一個(gè)線程處于等待狀態(tài),并且釋放所持有的對象的lock;sleep():使一個(gè)正在運(yùn)行的線程處于睡眠狀態(tài),是一個(gè)靜態(tài)方法,調(diào)用此方法要捕InterruptedException異常;notify():喚醒一個(gè)處于等待狀態(tài)的線程,注意的是在調(diào)用此方法的時(shí)候,并不能確切的喚醒某一個(gè)等待狀態(tài)的線程,而是由JVM確定喚醒哪個(gè)線程,而且不是按優(yōu)先級;notityAll():喚醒所有處入等待狀態(tài)的線程,注意并不是給所有喚醒線程一個(gè)對象的鎖,而是讓它們競爭。16.網(wǎng)絡(luò)編程中設(shè)計(jì)并發(fā)效勞器,使用多進(jìn)程與多線程,請問有什么區(qū)別?1)進(jìn)程:子進(jìn)程是父進(jìn)程的復(fù)制品子進(jìn)程獲得父進(jìn)程數(shù)據(jù)空間堆和棧的復(fù)制品2)線程:相對與進(jìn)程而言,線程是一個(gè)更加接近與執(zhí)行體的概念,它可以與同進(jìn)程的其他線程共享數(shù)據(jù),但擁有自己的??臻g,擁有獨(dú)立的執(zhí)行序列兩者都可以提高程序的并發(fā)度,提高程序運(yùn)行效率和響應(yīng)時(shí)間線程和進(jìn)程在使用上各有優(yōu)缺點(diǎn):線程執(zhí)行開銷小,但不利于資源管理和保護(hù);而進(jìn)程正相反同時(shí),線程適合于在SMP機(jī)器上運(yùn)行,而進(jìn)程那么可以跨機(jī)器遷移17.什么是反射?在運(yùn)行過程中:⑴.對于任意一個(gè)類,可以知道這個(gè)類的屬性和方法.⑵.對于任意一個(gè)對象,可以調(diào)用這個(gè)對象的任意方法.對于這種動態(tài)獲取的信息,以及動態(tài)調(diào)用對象方法的功能稱為反射機(jī)制.java反射機(jī)制提供的功能:⑴.運(yùn)行時(shí)判斷任意對象的所屬類;⑵.運(yùn)行時(shí)構(gòu)造任意類的對象;⑶.運(yùn)行時(shí)判斷和調(diào)用對象的成員變量和方法;⑷.生成動態(tài)代理.18.什么是回調(diào)函數(shù)?某個(gè)程序in)調(diào)用效勞程序A(Arrays)中的某個(gè)方法(sort),效勞程序A的sort方法在某個(gè)時(shí)候反過來調(diào)用S的某個(gè)方法(compareTo),這種情況下,compareTo叫做S的回調(diào)方法。例如:publicclassStudentimplementsComparable{privateintid;privateStringname;privateintage;privateintscore;//構(gòu)造器//getter/setter方法//回調(diào)方法publicintcompareTo(Objectobj){returnthis.id-((Student)obj).id;}}Students1=newStudent(1,〞a〞,18,89);Students2=newStudent(2,〞x〞,22,94);Students3=newStudent(3,〞w〞,19,78);Student[]arrs={s1,s2,s3};Arrays.sort(arrs);19.遍歷文件夾下所有.java的文件?publicvoidlistFiles(Stringpath){Filedir=newFile(path);Filesfiles[]=dir.listFiles(newFileFilter(){publicbooleanaccept(Filef){returnf.getName().endWith(“.java〞);}});for(Filefile:files){n(file.getName());}}20.線程的根本概念、線程的本狀態(tài)以及狀態(tài)之間的關(guān)系⑴新建(Born):新建的線程處于新建狀態(tài)⑵就緒(Ready):在創(chuàng)立線程后,它將處于就緒狀態(tài),⑶等待start()方法被調(diào)用⑷運(yùn)行(Running):線程在開始執(zhí)行時(shí)進(jìn)入運(yùn)行狀態(tài)⑸睡眠(Sleeping):線程的執(zhí)行可通過使用sleep()方法來暫時(shí)中止。在睡眠后,線程將進(jìn)入就緒狀態(tài)等待(Waiting):如果調(diào)用了wait()方法,線程將處于等待狀態(tài)。用于在兩個(gè)或多個(gè)線程并發(fā)運(yùn)行時(shí)。掛起(Suspended):在臨時(shí)停止或中斷線程的執(zhí)行時(shí),線程就處于掛起狀態(tài)?;謴?fù)(Resume):在掛起的線程被恢復(fù)執(zhí)行時(shí),可以說它已被恢復(fù)。阻塞(Blocked)–在線程等待一個(gè)事件時(shí)〔例如輸入/輸出操作〕,就稱其處于阻塞狀態(tài)。死亡(Dead)–在run()方法已完成執(zhí)行或其stop()方法被調(diào)用之后,線程就處于死亡狀態(tài)。21.串行化的考前須知以及如何實(shí)現(xiàn)串行化答:如果有循環(huán)引用是不可以串行化的。對象輸出流的WriteObject方法和對象輸入流的ReadObect方法22.描述一下JVM加載class文件的原理機(jī)制?JVM中類的裝載是由ClassLoader和它的子類來實(shí)現(xiàn)的,JavaClassLoader是一個(gè)重要的Java運(yùn)行時(shí)系統(tǒng)組件。它負(fù)責(zé)在運(yùn)行時(shí)查找和裝入類文件的類。23.什么是觸發(fā)器和存儲過程?觸發(fā)器是存儲在數(shù)據(jù)庫中的塊,這些塊一旦被構(gòu)造后,就可以屢次執(zhí)行,當(dāng)觸發(fā)它的事件發(fā)生時(shí)調(diào)用該觸發(fā)器。觸發(fā)事件是指對表中數(shù)據(jù)的操作,如插入、刪除和修改。存儲過程是將常用的或很復(fù)雜的工作,預(yù)先用SQL語句寫好并用一個(gè)指定的名稱存儲起來,那么以后要叫數(shù)據(jù)庫提供與已定義好的存儲過程的功能相同的效勞時(shí),只需調(diào)用execute,即可自動完成命令。我的理解就是一堆sql的集合,可以建立非常復(fù)雜的查詢,編譯運(yùn)行,所以運(yùn)行一次后,以后再運(yùn)行速度比單獨(dú)執(zhí)行SQL快很多UML方面標(biāo)準(zhǔn)建模語言UML。用例圖,靜態(tài)圖(包括類圖、對象圖和包圖),行為圖,交互圖(順序圖,合作圖),實(shí)現(xiàn)圖二.Servlet&Jsp局部:24.MVC的各個(gè)局部都有那些技術(shù)來實(shí)現(xiàn)?如何實(shí)現(xiàn)?MVC是Model-View-Controller的簡寫。〞Model〞代表的是應(yīng)用的業(yè)務(wù)邏輯〔通過JavaBean,EJB組件實(shí)現(xiàn)〕,“View〞是應(yīng)用的表示面〔由JSP頁面產(chǎn)生〕,〞Controller〞是提供給用的處理過程控制〔一般是一個(gè)Servlet〕,通過這種設(shè)計(jì)模型把應(yīng)用邏輯,處理過程和顯示邏輯分成不同的組件實(shí)現(xiàn)。這些組件可以進(jìn)行交互和重用。25.servlet的生命周期,并說出Servlet和CGI的區(qū)別web容器加載servlet,生命周期開始。通過調(diào)用servlet的init()方法進(jìn)行servlet的初始化。通過調(diào)用service()方法實(shí)現(xiàn),根據(jù)請求的不同調(diào)用不同的doGet()或者doPost()方法。結(jié)束效勞,web容器調(diào)用servlet的destroy()方法。與cgi的區(qū)別在于servlet處于效勞器進(jìn)程中,它通過多線程方式運(yùn)行其service方法,一個(gè)實(shí)例可以效勞于多個(gè)請求,并且其實(shí)例一般不會銷毀,而CGI對每個(gè)請求都產(chǎn)生新的進(jìn)程,效勞完成后就銷毀,所以效率上低于servlet。26.jsp與servlet的區(qū)別及聯(lián)系JSP是Servlet技術(shù)的擴(kuò)展,本質(zhì)上是Servlet的簡易方式,更強(qiáng)調(diào)應(yīng)用的外表表達(dá)。JSP編譯后是〞類servlet〞。Servlet和JSP最主要的不同點(diǎn)在于,Servlet的應(yīng)用邏輯是在Java文件中,并且完全從表示層中的HTML里別離開來。而JSP的情況是Java和HTML可以組合成一個(gè)擴(kuò)展名為.jsp的文件。JSP側(cè)重于視圖,Servlet主要用于控制邏輯。\\兩者的創(chuàng)立方式不一樣.Servlet完全是JAVA程序代碼構(gòu)成,擅長于流程控制和事務(wù)處理,通過Servlet來生成動態(tài)網(wǎng)頁很不直觀.JSP由HTML代碼和JSP標(biāo)簽構(gòu)成,可以方便地編寫動態(tài)網(wǎng)頁.因此在實(shí)際應(yīng)用中采用Servlet來控制業(yè)務(wù)流程,而采用JSP來生成動態(tài)網(wǎng)頁.27.數(shù)據(jù)庫連接池的工作機(jī)制:J2EE效勞器啟動的時(shí)候,會創(chuàng)立一定數(shù)量的池連接,并維持不少于此數(shù)量的池連接。程序需要時(shí),池驅(qū)動程序會返回一個(gè)未使用的池連接并將其標(biāo)記為忙。如果當(dāng)前沒有空閑連接,池驅(qū)動會新建一批,數(shù)量由配置參數(shù)決定。當(dāng)調(diào)用池連接完成后,池驅(qū)動將此連接標(biāo)記為空閑,其他調(diào)用就可以使用這個(gè)連接。28.jsp有哪些內(nèi)置對象?作用分別是什么?答:JSP共有以下9種根本內(nèi)置組件〔可與ASP的6種內(nèi)部組件相對應(yīng)〕:request用戶端請求,此請求會包含來自GET/POST請求的參數(shù)response網(wǎng)頁傳回用戶端的回應(yīng)pageContext網(wǎng)頁的屬性是在這里管理session與請求有關(guān)的會話期applicationservlet正在執(zhí)行的內(nèi)容out用來傳送回應(yīng)的輸出configservlet的構(gòu)架部件pageJSP網(wǎng)頁本身exception針對錯(cuò)誤網(wǎng)頁,未捕捉的例外29.forward和redirect的區(qū)別答:forward是效勞器請求資源,效勞器直接訪問目標(biāo)地址的URL,把那個(gè)URL的響應(yīng)內(nèi)容讀取過來,然后把這些內(nèi)容再發(fā)給瀏覽器,瀏覽器根本不知道效勞器發(fā)送的內(nèi)容是從哪兒來的,所以它的地址欄中還是原來的地址。redirect就是效勞端根據(jù)邏輯,發(fā)送一個(gè)狀態(tài)碼,告訴瀏覽器重新去請求那個(gè)地址,一般來說瀏覽器會用剛剛請求的所有參數(shù)重新請求,所以session,request參數(shù)都可以獲取。要跳轉(zhuǎn)到一個(gè)其它效勞器上的資源,那么必須使用sendRedirect()方法30.Jsp的四種范圍page否是代表與一個(gè)頁面相關(guān)的對象和屬性。作用域在當(dāng)前頁.request是是代表與Web客戶機(jī)發(fā)出的一個(gè)請求相關(guān)的對象和屬性。session只要訪問的瀏覽器不關(guān)閉,作用域就一直存在。application只要訪問的效勞器不關(guān)閉,作用域就一直存在。31.什么是B/S結(jié)構(gòu),C/S結(jié)構(gòu)?C/S是Client/Server的縮寫。效勞器通常采用高性能的PC、工作站或小型機(jī),并采用大型數(shù)據(jù)庫系統(tǒng),如Oracle、Sybase、Informix或SQLServer??蛻舳诵枰惭b專用的客戶端軟件。B/S是Brower/Server的縮寫,客戶機(jī)上只要安裝一個(gè)瀏覽器(Browser),如NetscapeNavigator或InternetExplorer,效勞器安裝Oracle、Sybase、Informix或SQLServer等數(shù)據(jù)庫。在這種結(jié)構(gòu)下,用戶界面完全通過WWW瀏覽器實(shí)現(xiàn),一局部事務(wù)邏輯在前端實(shí)現(xiàn),但是主要事務(wù)邏輯在效勞器端實(shí)現(xiàn)。瀏覽器通過WebServer同數(shù)據(jù)庫進(jìn)行數(shù)據(jù)交互。32.編碼格式轉(zhuǎn)換問題:Stringstr=newString(“中國〞.getBytes(“ISO-8859-1〞),〞GBK〞).trim();三.JDBC&XML33.說說jdbc連接數(shù)據(jù)庫的步驟⑴.注冊驅(qū)動⑵.獲得連接⑶.執(zhí)行sql語句⑷.獲得結(jié)果集,進(jìn)行結(jié)果集的處理⑸.關(guān)閉結(jié)果集⑹.關(guān)閉連接,釋放資源34.statement和preparedstatement的區(qū)別⑴.statement是preparedstatemnet的父類⑵.statement是直接發(fā)送sql語句到數(shù)據(jù)庫,事先沒有進(jìn)行預(yù)編譯。prepatedstatement會將sql進(jìn)行預(yù)編譯,當(dāng)sql語句要重復(fù)執(zhí)行時(shí),數(shù)據(jù)庫會調(diào)用以前編譯好的sql,所以preparedstatement在性能方面會更好⑶.preparedstatement在執(zhí)行sql時(shí),對傳入的參數(shù)進(jìn)行強(qiáng)制類型轉(zhuǎn)換,以保證數(shù)據(jù)格式與底層數(shù)據(jù)庫格式一致。35.解析一個(gè)XML文檔有哪些方式?解析有:dom和sax兩種dom:把整個(gè)XML文檔放入內(nèi)存,適合XML隨機(jī)訪問,占用內(nèi)存資源大sax:事件驅(qū)動型的XML解析方式,順序讀取,不用一次裝載整個(gè)文件,遇到標(biāo)簽會觸發(fā)一個(gè)事件,適和對XML的順序訪問,占用內(nèi)存資源稍小36.XML文檔定義有幾種形式?a:兩種形式dtdschemab:本質(zhì)區(qū)別:schema本身是xml的,可以被XML解析器解析(這也是從DTD上開展schema的根本目的),c:有DOM,SAX,STAX等四.Oracle數(shù)據(jù)庫局部:37.薪水排序后薪水排名在第3-5的員工1)select*from(selectename,sal,rownumrnfrom(selectename,salfromemp_44wheresalisnotnullorderbysaldesc)whererownum<6)wherern>2;2)select*from(selectename,sal,rownumrnfrom(selectename,salfromemp_44wheresalisnotnullorderbysaldesc))wherernbetween3and5;38.刪除一張表中所有數(shù)據(jù)的方式?⑴.truncatetable命令將快速刪除數(shù)據(jù)表中的所有記錄⑵.delete產(chǎn)生rollback,如果刪除在數(shù)據(jù)量的表速度會很慢,同時(shí)會占用很多的是DLL操作,不產(chǎn)生rollback,速度會快一些。39.用一條sql語句取出所有姓名有重復(fù)的學(xué)員姓名和重復(fù)的記錄數(shù).selectname,count(*)fromstudentgroupbynamehavingcount(*)>1orderbycount(*)desc;40.去除oracle數(shù)據(jù)庫表中重復(fù)數(shù)據(jù)應(yīng)有如下兩種方法:方法一:創(chuàng)立新表刪除舊表法1〕createtablestudent1asselectdistinctid,name,scorefromstudent;2〕droptablestudent;3〕renamestudent1tostudent;方法二:使用rowid(地址)偽列刪除偽列地址除了最大地址值以外的記錄deletefromtempwhererowidnotin(selectmax(rowid)fromtempgroupbyid);刪除偽列地址除了最大地址值以外的記錄deletefromtempwhererowidnotin(selectmin(rowid)fromtempgroupbyid);五.三大框架局部:41.應(yīng)用效勞器有哪些:weblogic,jboss,tomcat42.Hibernate優(yōu)于JDBC的地方⑴.對jdbc訪問數(shù)據(jù)庫進(jìn)行了封裝,簡化了數(shù)據(jù)訪問層的重復(fù)代碼⑵.Hibernate操作數(shù)據(jù)庫是面向?qū)ο蟮牟僮?3.hibernate工作原理⑴.讀取并解析配置文件⑵.讀取并解析映射信息,創(chuàng)立SessionFactory⑶.翻開Sesssion⑷.創(chuàng)立事務(wù)Transation⑸.持久化操作⑹.提交事務(wù)⑺.關(guān)閉Session⑻.關(guān)閉SesstionFactory44.Hibernate的優(yōu)點(diǎn):⑴.對JDBC訪問數(shù)據(jù)庫的代碼做了封裝,大大簡化了數(shù)據(jù)訪問層繁瑣的重復(fù)性代碼。⑵.Hibernate是一個(gè)基于JDBC的主流持久化框架,是一個(gè)優(yōu)秀的ORM實(shí)現(xiàn)。他很大程度的簡化DAO層的編碼工作⑶.hibernate使用Java反射機(jī)制,而不是字節(jié)碼增強(qiáng)程序來實(shí)現(xiàn)透明性。⑷.hibernate的性能非常好,因?yàn)樗莻€(gè)輕量級框架。映射的靈活性很出色。它支持各種關(guān)系數(shù)據(jù)庫,從一對一到多對多的各種復(fù)雜關(guān)系。45.J2EE共有23中設(shè)計(jì)模式,說出其中幾種常用的:Factory〔工廠模式〕,Builder〔建造模式〕,F(xiàn)actoryMethod〔工廠方法模式〕,Prototype〔原始模型模式〕,Singleton〔單例模式〕,Facade〔門面模式〕,Adapter〔適配器模式〕,Bridge〔橋梁模式〕,Composite〔合成模式〕,Decorator〔裝飾模式〕,F(xiàn)lyweight〔享元模式〕,Proxy〔代理模式〕,Command〔命令模式〕,Interpreter〔解釋器模式〕,Visitor〔訪問者模式〕,Iterator〔迭代子模式〕,Mediator〔調(diào)停者模式〕,Memento〔備忘錄模式〕,Observer〔觀察者模式〕,State〔狀態(tài)模式〕,Strategy〔策略模式〕,TemplateMethod〔模板方法模式〕,ChainOfResponsibleity〔責(zé)任鏈模式〕工廠模式:工廠模式是一種經(jīng)常被使用到的模式,根據(jù)工廠模式實(shí)現(xiàn)的類可以根據(jù)提供的數(shù)據(jù)生成一組類中某一個(gè)類的實(shí)例,通常這一組類有一個(gè)公共的抽象父類并且實(shí)現(xiàn)了相同的方法,但是這些方法針對不同的數(shù)據(jù)進(jìn)行了不同的操作。首先需要定義一個(gè)基類,該類的子類通過不同的方法實(shí)現(xiàn)了基類中的方法。然后需要定義一個(gè)工廠類,工廠類可以根據(jù)條件生成不同的子類實(shí)例。當(dāng)?shù)玫阶宇惖膶?shí)例后,開發(fā)人員可以調(diào)用基類中的方法而不必考慮到底返回的是哪一個(gè)子類的實(shí)例。46.Hibernate對象狀態(tài)有哪幾種,并簡單介紹一下。⑴臨時(shí)狀態(tài):內(nèi)存對象,并沒有保存在數(shù)據(jù)庫⑵持久化狀態(tài)已經(jīng)保存在數(shù)據(jù)庫并納入了session緩存中⑶游離狀題啊已經(jīng)保存在數(shù)據(jù)庫中,但沒有納入session緩存中47.spring的優(yōu)點(diǎn)?1.降低了組件之間的耦合性,實(shí)現(xiàn)了軟件各層之間的解耦2.可以使用容易提供的眾多效勞,如事務(wù)管理,消息效勞等3.容器提供單例模式支持4.容器提供了AOP技術(shù),利用它很容易實(shí)現(xiàn)如權(quán)限攔截,運(yùn)行期監(jiān)控等功能5.容器提供了眾多的輔助類,能加快應(yīng)用的開發(fā)對于主流的應(yīng)用框架提供了集成支持,如hibernate,JPA,Struts等屬于低侵入式設(shè)計(jì),代碼的污染極低8.獨(dú)立于各種應(yīng)用效勞器的DI機(jī)制降低了業(yè)務(wù)對象替換的復(fù)雜性的高度開放性,并不強(qiáng)制應(yīng)用完全依賴于Spring,開發(fā)者可以自由選擇spring的局部或全部48.介紹一下Struts的工作原理?⑴讀取配置。加載struts控制器.⑵用戶請求用戶提交表單或調(diào)用URL向WEB應(yīng)用程序效勞器提交一個(gè)請求,請求的數(shù)據(jù)用協(xié)議上傳給WEB效勞器。⑶通過struts控制器進(jìn)行處理,⑷經(jīng)過一系列的攔截器處理⑸進(jìn)行業(yè)務(wù)邏輯的處理⑹響應(yīng)用戶JSP將結(jié)果展現(xiàn)給用戶。49.為什么要用Struts:⑴JSP、Servlet、JavaBean技術(shù)的出現(xiàn)給我們構(gòu)建強(qiáng)大的企業(yè)應(yīng)用系統(tǒng)提供了可能。但用這些技術(shù)構(gòu)建的系統(tǒng)非常的繁亂。⑵基于Struts開發(fā)的應(yīng)用:⑴不用再考慮公共問題⑵專心在業(yè)務(wù)實(shí)現(xiàn)上⑶結(jié)構(gòu)統(tǒng)一,易于學(xué)習(xí)、維護(hù)⑷新手也可寫出好程序50.什么是IOC和DI機(jī)制?控制反轉(zhuǎn)IOC(InversionofControl)控制指的就是程序相關(guān)類之間的依賴關(guān)系.傳統(tǒng)觀念設(shè)計(jì)中,通常由調(diào)用者來創(chuàng)立被調(diào)用者的實(shí)例,在Spring里,創(chuàng)立被調(diào)用者的工作不再由調(diào)用者來完成,而是由Spring容器完成,依賴關(guān)系被反轉(zhuǎn)了,稱為控制反轉(zhuǎn),目的是為了獲得更好的擴(kuò)展性和良好的可維護(hù)性。依賴注入(Dependencyinjection)創(chuàng)立被調(diào)用者的工作由Spring容器完成,然后注入調(diào)用者,因此也稱依賴注入??刂品崔D(zhuǎn)和依賴注入是同一個(gè)概念。\\依賴注入〔DependecyInjection〕和控制反轉(zhuǎn)〔InversionofControl〕是同一個(gè)概念,具體的講:當(dāng)某個(gè)角色需要另外一個(gè)角色協(xié)助的時(shí)候,在傳統(tǒng)的程序設(shè)計(jì)過程中,通常由調(diào)用者來創(chuàng)立被調(diào)用者的實(shí)例。但在spring中創(chuàng)立被調(diào)用者的工作不再由調(diào)用者來完成,因此稱為控制反轉(zhuǎn)。創(chuàng)立被調(diào)用者的工作由spring來完成,然后注入調(diào)用者因此也稱為依賴注入。spring以動態(tài)靈活的方式來管理對象,注入的兩種方式,設(shè)置注入和構(gòu)造注入。設(shè)置注入的優(yōu)點(diǎn):直觀,自然構(gòu)造注入的優(yōu)點(diǎn):可以在構(gòu)造器中決定依賴關(guān)系的順序。51.什么是AJAX,什么是OOP,什么是AOP?Ajax的全稱是:AsynchronousJavaScriptAndXML。Ajax不是一個(gè)技術(shù),它實(shí)際上是幾種技術(shù),每種技術(shù)都有其獨(dú)特這處,合在一起就成了一個(gè)功能強(qiáng)大的新技術(shù)。Ajax包括:XHTML和CSS使用文檔對象模型(DocumentObjectModel)作動態(tài)顯示和交互使用XML和XSLT做數(shù)據(jù)交互和操作使用XMLRequest進(jìn)行異步數(shù)據(jù)接收使用JavaScript將它們綁定在一起。OOP面向?qū)ο缶幊獭睴bjectOrientedProgramming,OOP,面向?qū)ο蟪绦蛟O(shè)計(jì)〕是一種計(jì)算機(jī)編程架構(gòu)。面向切面編程〔AOP〕完善spring的依賴注入〔DI〕,面向切面編程在spring中主要表現(xiàn)為兩個(gè)方面⑴面向切面編程提供聲明式事務(wù)管理⑵spring支持用戶自定義的切面面向切面編程〔aop〕是對面向?qū)ο缶幊獭瞣op〕的補(bǔ)充,面向?qū)ο缶幊虒⒊绦蚍纸獬筛鱾€(gè)層次的對象,面向切面編程將程序運(yùn)行過程分解成各個(gè)切面。AOP從程序運(yùn)行角度考慮程序的結(jié)構(gòu),提取業(yè)務(wù)處理過程的切面,oop是靜態(tài)的抽象,aop是動態(tài)的抽象,是對應(yīng)用執(zhí)行過程中的步驟進(jìn)行抽象,,從而獲得步驟之間的邏輯劃分。aop框架具有的兩個(gè)特征:⑴各個(gè)步驟之間的良好隔離性⑵源代碼無關(guān)性52.什么是Hibernate延遲加載?延遲加載機(jī)制是為了防止一些無謂的性能開銷而提出來的,所謂延遲加載就是當(dāng)在真正需要數(shù)據(jù)的時(shí)候,才真正執(zhí)行數(shù)據(jù)加載操作。在Hibernate中提供了對實(shí)體對象的延遲加載以及對集合的延遲加載,另外在Hibernate3中還提供了對屬性的延遲加載。53.Hibernate中類之間的關(guān)聯(lián)關(guān)系有幾種?(如:一對多、多對多的關(guān)系)many-to-one、one-to-many、many-to-many、one-to-one54.說下Hibernate的緩存機(jī)制一、hibernate一級緩存〔1〕hibernate支持兩個(gè)級別的緩存,默認(rèn)只支持一級緩存;〔2〕每個(gè)Session內(nèi)部自帶一個(gè)一級緩存;〔3〕某個(gè)Session被關(guān)閉時(shí),其對應(yīng)的一級緩存自動去除;二、hibernate二級緩存(1)二級緩存獨(dú)立于session,默認(rèn)不開啟;55.Hibernate的查詢方式本地SQL查詢、Criteria、Hql56.為什么要用spring?Spring是一個(gè)輕量級的IOC和AOP框架。IOC〔控制反轉(zhuǎn)〕意味著將你設(shè)計(jì)好的類交給系統(tǒng)去控制,而不是在你的類內(nèi)部控制。這稱為控制反轉(zhuǎn)AOP〔面向切面〕,它將那些影響多個(gè)類的行為封裝到可重用的模塊中,面向?qū)ο笫前褑栴}從同類事物中抽象出來,面向切面是把問題從不同類問題中抽象出來。57.struts框架提供了哪些輔助功能⑴自動收集數(shù)據(jù)〔成員變量〕⑵支持類型轉(zhuǎn)換⑶國際化⑷異常處理⑸標(biāo)簽58.struts1和struts2的區(qū)別⑴struts1控制器servlet,struts2控制器filter⑵struts收集數(shù)據(jù)時(shí)ActionForm,Struts2成員變量⑶struts1execute(Resquest,Response),struts2execute()⑷struts1與ServletAPI耦合性強(qiáng),struts2與ServletAPI耦合性低⑸struts1沒有攔截器,struts2有攔截器(可以使代碼各司其職)⑹struts1只能使用jstl標(biāo)簽,而struts2提供了OGNL表達(dá)式59.什么是UDDI、SOAP、WSDL?解答:UDDI是一套基于Web的、分布式的、為WebService提供的、信息注冊中心的實(shí)現(xiàn)標(biāo)準(zhǔn)標(biāo)準(zhǔn),同時(shí)也包含一組使企業(yè)能將自身提供的WebService注冊,以使別的企業(yè)能夠發(fā)現(xiàn)的訪問協(xié)議的實(shí)現(xiàn)標(biāo)準(zhǔn)。SOAP即簡單對象訪問協(xié)議(SimpleObjectAccessProtocol),它是用于交換XML編碼信息的輕量級協(xié)議。WSDL是一種XML格式,用于將網(wǎng)絡(luò)效勞描述為一組端點(diǎn),這些端點(diǎn)對包含面向文檔信息或面向過程信息的消息進(jìn)行操作。這種格式首先對操作和消息進(jìn)行抽象描述,然后將其綁定到具體的網(wǎng)絡(luò)協(xié)議和消息格式上以定義端點(diǎn)。相關(guān)的具體端點(diǎn)即組合成為抽象端點(diǎn)(效勞)。60.Java數(shù)據(jù)庫編程包含哪些類?Java數(shù)據(jù)庫編程的根本過程是什么?解答:用到的類:Connection、ResultSet、PreparedStatement、StatementJava中訪問數(shù)據(jù)庫的步驟如下:1〕注冊驅(qū)動;2〕建立連接;3〕創(chuàng)立Statement;4〕執(zhí)行sql語句;5〕處理結(jié)果集〔假設(shè)sql語句為查詢語句〕;6〕關(guān)閉連接。61.簡要說明JVM、JSP、Servlet、WebServer、WebBrowser之間的關(guān)系。解答:當(dāng)用戶在JSP頁面上提交了需要效勞器處理的數(shù)據(jù)后,通過WebBrowser發(fā)送到效勞器端,Servlet會根據(jù)用戶的請求產(chǎn)生必要的相應(yīng),如果需要還會通過JVM或WebServer來獲取資源,最后把效勞器端的相應(yīng)結(jié)果返回給用戶。62.EJB與JAVABEAN的區(qū)別?解答:JavaBean是可復(fù)用的組件,對JavaBean并沒有嚴(yán)格的標(biāo)準(zhǔn),理論上講,任何一個(gè)Java類都可以是一個(gè)Bean。但通常情況下,由于JavaBean是被容器所創(chuàng)立〔如Tomcat)的,所以JavaBean應(yīng)具有一個(gè)無參的構(gòu)造器,另外,通常JavaBean還要實(shí)現(xiàn)Serializable接口用于實(shí)現(xiàn)Bean的持久性。JavaBean實(shí)際上相當(dāng)于微軟COM模型中的本地進(jìn)程內(nèi)COM組件,它是不能被跨進(jìn)程訪問的。EnterpriseJavaBean相當(dāng)于DCOM,即分布式組件。它是基于Java的遠(yuǎn)程方法調(diào)用〔RMI〕技術(shù)的,所以EJB可以被遠(yuǎn)程訪問〔跨進(jìn)程、跨計(jì)算機(jī)〕。但EJB必須被布署在諸如Webspere、WebLogic這樣的容器中,EJB客戶從不直接訪問真正的EJB組件,而是通過其容器訪問。EJB容器是EJB組件的代理,EJB組件由容器所創(chuàng)立和管理??蛻敉ㄟ^容器來訪問真正的EJB組件。63.spring有幾種事務(wù)管理,spring的事務(wù)管理接口是什么?解答:Spring提供的事務(wù)管理可以分為兩類:編程式的和聲明式的。編程式的,比擬靈活,但是代碼量大,存在重復(fù)的代碼比擬多;而聲明式的比編程式的更靈活方便。接口:其中最重要的三個(gè)接口:TransactionDefinition、PlatformTransactionManager、TransactionStatus。在Spring中,事務(wù)是通過TransactionDefinition接口來定義的。該接口包含與事務(wù)屬性有關(guān)的方法,TransactionDefinition接口中定義了五個(gè)表示隔離級別的常量、代表傳播行為的常量,在TransactionDefinition中以int的值來表示超時(shí)時(shí)間,PlatformTransactionManager.getTransaction(…)方法返回一個(gè)TransactionStatus對象。返回的TransactionStatus對象可能代表一個(gè)新的或已經(jīng)存在的事務(wù)〔如果在當(dāng)前調(diào)用堆棧有一個(gè)符合條件的事務(wù)〕。TransactionStatus接口提供了一個(gè)簡單的控制事務(wù)執(zhí)行和查詢事務(wù)狀態(tài)的方法。64.介紹一下springMVC的工作原理、為什么用spring?解答:springMVC工作原理:1〕.springmvc將所有的請求都提交給DispatcherServlet,它會委托應(yīng)用系統(tǒng)的其他模塊負(fù)責(zé)對請求進(jìn)行真正的處理工作。2〕.DispatcherServlet查詢一個(gè)或多個(gè)HandlerMapping,找到處理請求的Controller.3〕.DispatcherServlet請請求提交到目標(biāo)Controller4〕.Controller進(jìn)行業(yè)務(wù)邏輯處理后,會返回一個(gè)ModelAndView5〕.Dispathcher查詢一個(gè)或多個(gè)ViewResolver視圖解析器,找到ModelAndView對象指定的視圖對象6〕.視圖對象負(fù)責(zé)渲染返回給客戶端。為什么用spring:AOP讓開發(fā)人員可以創(chuàng)立非行為性的關(guān)注點(diǎn),稱為橫切關(guān)注點(diǎn),并將它們插入到應(yīng)用程序代碼中。使用AOP后,公共效勞〔比方日志、持久性、事務(wù)等〕就可以分解成方面并應(yīng)用到域?qū)ο笊?,同時(shí)不會增加域?qū)ο蟮膶ο竽P偷膹?fù)雜性。IOC允許創(chuàng)立一個(gè)可以構(gòu)造對象的應(yīng)用環(huán)境,然后向這些對象傳遞它們的協(xié)作對象。正如單詞倒置所說明的,IOC就像反過來的JNDI。沒有使用一堆抽象工廠、效勞定位器、單元素〔singleton〕和直接構(gòu)造〔straightconstruction〕,每一個(gè)對象都是用其協(xié)作對象構(gòu)造的。因此是由容器管理協(xié)作對象〔collaborator〕。Spring既是一個(gè)AOP框架,也是一IOC容器。Spring最好的地方是它有助于您替換對象。有了Spring,只要用JavaBean屬性和配置文件參加依賴性〔協(xié)作對象〕。然后可以很容易地在需要時(shí)替換具有類似接口的協(xié)作對象。65.get和post的區(qū)別?解答:Form中的get和post方法,在數(shù)據(jù)傳輸過程中分別對應(yīng)了協(xié)議中的GET和POST方法。二者主要區(qū)別如下:1〕Get是用來從效勞器上獲得數(shù)據(jù),而Post是用來向效勞器上傳數(shù)據(jù);2〕Get將表單中數(shù)據(jù)按照variable=value的形式,添加到action所指向的URL后面,并且兩者使用“?〞連接,而各個(gè)變量之間使用“&〞連接;Post是將表單中的數(shù)據(jù)放在form的數(shù)據(jù)體中,按照變量和值相對應(yīng)的方式,傳遞到action所指向URL;3〕Get是不平安的,因?yàn)樵趥鬏斶^程,數(shù)據(jù)被放在請求的URL中;Post的所有操作對用戶來說都是不可見的;4〕Get傳輸?shù)臄?shù)據(jù)量小,這主要是因?yàn)槭躑RL長度限制;而Post可以傳輸大量的數(shù)據(jù),所以在上傳文件只能使用Post;5〕Get限制Form表單的數(shù)據(jù)集必須為ASCII字符,而Post支持整個(gè)ISO10646字符集;6〕Get是Form的默認(rèn)方法。66.請簡單畫出struts技術(shù)構(gòu)建mvc的流程圖解答67.JSP中動態(tài)INCLUDE與靜態(tài)INCLUDE的區(qū)別?解答:動態(tài)INCLUDE用jsp:include動作實(shí)現(xiàn)<jsp:includepage="head.jsp"/>它總是會檢查所含文件中的變化,適合用于包含動態(tài)頁面,并且可以帶參數(shù);靜態(tài)INCLUDE用include偽碼實(shí)現(xiàn),它不會檢查所含文件的變化,適用于包含靜態(tài)頁面<%@includefile="head.htm"%>68.Session的根本原理是什么?答:Session對象的原理在于,效勞器可以為客戶端創(chuàng)立并維護(hù)一個(gè)所謂的Session對象,用于存放數(shù)據(jù)。在創(chuàng)立Session對象的同時(shí),效勞器將會為該Session對象產(chǎn)生一個(gè)唯一編號,這個(gè)編號稱之為SessionID,效勞器以Cookie的方式將SessionID存放在客戶端。當(dāng)瀏覽器再次訪問該效勞器時(shí),會將SessionID作為Cookie信息帶到效勞器,效勞器可以通過該SessionID檢索到以前的Session對象,并對其進(jìn)行訪問。需要注意的是,此時(shí)的Cookie中僅僅保存了一個(gè)SessionID,而相對較多的會話數(shù)據(jù)保存在效勞器端對應(yīng)的Session對象中,由效勞器來統(tǒng)一維護(hù),這樣一定程度保證了會話數(shù)據(jù)平安性,但增加了效勞器端的內(nèi)存開銷。存放在客戶端的用于保存SessionID的Cookie會在瀏覽器關(guān)閉時(shí)去除。我們把用戶翻開一個(gè)瀏覽器訪問某個(gè)應(yīng)用開始,到關(guān)閉瀏覽器為止交互過程稱為一個(gè)“會話〞。在一個(gè)“會話〞過程中,可能會向同一個(gè)應(yīng)用發(fā)出了屢次請求,這些請求將共享一個(gè)Session對象,因?yàn)檫@些請求攜帶了相同的SessionID信息。Session對象的正常使用要依賴于Cookie。如果考慮到客戶端瀏覽器可能出于平安的考慮禁用了Cookie,應(yīng)該使用URL重寫的方式使Session在客戶端禁用Cookie的情況下繼續(xù)生效。69.jsp有哪些動作?作用分別是什么?解答:JSP共有以下6種根本動作:jsp:include:在頁面被請求的時(shí)候引入一個(gè)文件;jsp:useBean:尋找或者實(shí)例化一個(gè)JavaBean。;jsp:setProperty:設(shè)置JavaBean的屬性。;jsp:getProperty:輸出某個(gè)JavaBean的屬性;jsp:forward:把請求轉(zhuǎn)到一個(gè)新的頁面;jsp:plugin:根據(jù)瀏覽器類型為Java插件生成OBJECT或EMBED標(biāo)記70.Struts的控制器局部,視圖局部包括哪些內(nèi)容?解答:控制器:在struts中,根本的控制器組件是ActionServlet類中的實(shí)例servelt,實(shí)際使用的servlet在配置文件中由一組映射〔由ActionMapping類進(jìn)行描述〕進(jìn)行定義。對于業(yè)務(wù)邏輯的操作那么主要由Action、ActionMapping、ActionForward這幾個(gè)組件協(xié)調(diào)完成的,其中Action扮演了真正的業(yè)務(wù)邏輯的實(shí)現(xiàn)者,ActionMapping與ActionForward那么指定了不同業(yè)務(wù)邏輯或流程的運(yùn)行方向。文件配置控制器。視圖:視圖主要由JSP建立,struts包含擴(kuò)展自定義標(biāo)簽庫〔TagLib〕,可以簡化創(chuàng)立完全國際化用戶界面的過程。目前的標(biāo)簽庫包括:BeanTags、HTMLtags、LogicTags、NestedTags以及TemplateTags等。71.WEBSERVICE名詞解釋。JSWDL開發(fā)包的介紹。JAXP、JAXM的解釋。解答:WebService是基于網(wǎng)絡(luò)的、分布式的模塊化組件,它執(zhí)行特定的任務(wù),遵守具體的技術(shù)標(biāo)準(zhǔn),這些標(biāo)準(zhǔn)使得WebService能與其他兼容的組件進(jìn)行互操作;JAXP(JavaAPIforXMLParsing)定義了在Java中使用DOM,SAX,XSLT的通用的接口,這樣在你的程序中你只要使用這些通用的接口,當(dāng)你需要改變具體的實(shí)現(xiàn)時(shí)候也不需要修改代碼;JAXM(JavaAPIforXMLMessaging)是為SOAP通信提供訪問方法和傳輸機(jī)制的API;72.Hibernate實(shí)現(xiàn)中,load和get方法的區(qū)別,find和iterate的區(qū)別?解答:load和get方法的區(qū)別:hibernate對于load方法認(rèn)為該數(shù)據(jù)在數(shù)據(jù)庫中一定存在,可以放心的使用代理來延遲加載,如果在使用過程中發(fā)現(xiàn)了問題,只能拋異常;而對于get方法,hibernate一定要獲取到真實(shí)的數(shù)據(jù),否那么返回null。find和iterate的區(qū)別:find方法通過一條SelectSQL實(shí)現(xiàn)了查詢操作,而iterate方法要執(zhí)行多條第一次查詢獲取所有符合條件的記錄的id,然后再根據(jù)各個(gè)id從庫表中讀取對應(yīng)的記錄,這是一個(gè)典型的N+1次的查詢問題,如果符合條件記錄有10000條,就需要執(zhí)行10001條SelectSQL,性能會非常差。73.JAVA中如何進(jìn)行事務(wù)的處理?答:Connection類中提供了3個(gè)事務(wù)處理方法:setAutoCommit(BooleanautoCommit):設(shè)置是否自動提交事務(wù),默認(rèn)為自動提交,即為true,通過設(shè)置false禁止自動提交事務(wù);commit():提交事務(wù);rollback():回滾事務(wù)。74.Hibernate有哪5個(gè)核心接口?解答:Configuration接口:配置Hibernate,根據(jù)其啟動hibernate,創(chuàng)立SessionFactory對象;SessionFactory接口:初始化Hibernate,充當(dāng)數(shù)據(jù)存儲源的代理,創(chuàng)立session對象,sessionFactory是線程平安的,意味著它的同一個(gè)實(shí)例可以被應(yīng)用的多個(gè)線程共享,是重量級、二級緩存;Session接口:負(fù)責(zé)保存、更新、刪除、加載和查詢對象,是線程不平安的,防止多個(gè)線程共享同一個(gè)session,是輕量級、一級緩存;Transaction接口:管理事務(wù);Query和Criteria接口:執(zhí)行數(shù)據(jù)庫的查詢。75.什么是ORM?解答:對象關(guān)系映射〔Object—RelationalMapping,簡稱ORM〕是一種為了解決面向?qū)ο笈c面向關(guān)系數(shù)據(jù)庫存在的互不匹配的現(xiàn)象的技術(shù);簡單的說,ORM是通過使用描述對象和數(shù)據(jù)庫之間映射的元數(shù)據(jù),將java程序中的對象自動持久化到關(guān)系數(shù)據(jù)庫中;本質(zhì)上就是將數(shù)據(jù)從一種形式轉(zhuǎn)換到另外一種形式。76.數(shù)據(jù)連接池的工作機(jī)制是什么?解答:J2EE效勞器啟動時(shí)會建立一定數(shù)量的池連接,并一直維持不少于此數(shù)目的池連接。客戶端程序需要連接時(shí),池驅(qū)動程序會返回一個(gè)未使用的池連接并將其表記為忙。如果當(dāng)前沒有空閑連接,池驅(qū)動程序就新建一定數(shù)量的連接,新建連接的數(shù)量有配置參數(shù)決定。當(dāng)使用的池連接調(diào)用完成后,池驅(qū)動程序?qū)⒋诉B接表記為空閑,其他調(diào)用就可以使用這個(gè)連接。77.解釋四種會話跟蹤技術(shù)?解答:隱藏表單域、URL重寫,Cookie、Session。1〕.隱藏表單域:<inputtype="hidden">,非常適合步需要大量數(shù)據(jù)存儲的會話應(yīng)用。2〕.URL重寫:URL可以在后面附加參數(shù),和效勞器的請求一起發(fā)送,這些參數(shù)為名字/值對。3〕.Cookie:一個(gè)Cookie是一個(gè)小的,已命名數(shù)據(jù)元素。效勞器使用SET-Cookie頭標(biāo)將它作為響應(yīng)的一局部傳送到客戶端,客戶端被請求保存Cookie值,在對同一效勞器的后續(xù)請求使用一個(gè)Cookie頭標(biāo)將之返回到效勞器。與其它技術(shù)比擬,Cookie的一個(gè)優(yōu)點(diǎn)是在瀏覽器會話結(jié)束后,甚至在客戶端計(jì)算機(jī)重啟后它仍可以保存其值。4〕.Session:使用setAttribute(Stringstr,Objectobj)方法將對象捆綁到一個(gè)會話78.Statement,PreparedStatement,CallableStatment的區(qū)別解答:區(qū)別有以下幾點(diǎn):1〕Statement是PreparedStatement和CallableStatement的父類;2〕Statement是直接發(fā)送Sql語句到數(shù)據(jù)庫,事先沒有進(jìn)行預(yù)編譯。PreparedStatement會將sql進(jìn)行預(yù)編譯,當(dāng)sql語句要重復(fù)執(zhí)行時(shí),數(shù)據(jù)庫會調(diào)用以前預(yù)編譯好的sql語句,所以PreparedStatement在性能方面會更好;3〕PreparedStatement在執(zhí)行sql時(shí),對傳入的參數(shù)可以進(jìn)行強(qiáng)制的類型轉(zhuǎn)換。以保證數(shù)據(jù)格式與底層的數(shù)據(jù)庫格式一致。4〕CallableStatement適用與存儲過程的查詢表達(dá)語句79.OOAD中的Association〔聯(lián)合〕、Aggregation(聚合)、Composition〔組合〕的區(qū)別?解答:三者從概念上來講:Association是一般的關(guān)聯(lián),有〞use-a〞的含義。Aggregation和Composition都有整體和局部的關(guān)系,其中Aggregation中的局部脫離了整體,局部仍然有意義,有〞hasa〞的含義,是共享式的。而Composition中的局部脫離了整體,局部將沒有任何意義,是獨(dú)占式的。從代碼實(shí)現(xiàn)的角度上講:三者都是以屬性出現(xiàn),其中Association中作為屬性出現(xiàn)時(shí),不需要對其進(jìn)行強(qiáng)制賦值,只要在使用是對其進(jìn)行初始化即可。Aggregation中作為屬性出現(xiàn)時(shí),需要在構(gòu)造器中通過傳遞參數(shù)來對其進(jìn)行初始化。Composition中作為屬性出現(xiàn)時(shí),需要在整體的構(gòu)造器中創(chuàng)立局部的具體實(shí)例,完成對其的實(shí)例化。從數(shù)據(jù)庫的層面上來講:Association不需要被級聯(lián)刪除,Aggregation不需要被級聯(lián)刪除,Composition是需要被級聯(lián)刪除的。80.請說出你所知道的線程同步的方法。解答:wait():使一個(gè)線程處于等待狀態(tài),并且釋放所持有的對象的lock;sleep():使一個(gè)正在運(yùn)行的線程處于睡眠狀態(tài),是一個(gè)靜態(tài)方法,調(diào)用此方法要捕捉InterruptedException異常;notify():喚醒一個(gè)處于等待狀態(tài)的線程,注意的是在調(diào)用此方法的時(shí)候,并不能確切的喚醒某一個(gè)等待狀態(tài)的線程,而是由JVM確定喚醒哪個(gè)線程,而且不是按優(yōu)先級;notityAll():喚醒所有處入等待狀態(tài)的線程,注意并不是給所有喚醒線程一個(gè)對象的鎖,而是讓它們競爭。81.談?wù)剬lassLoader的理解?解答:ClassLoader加載類用的是全盤負(fù)責(zé)委托機(jī)制。所謂全盤負(fù)責(zé),即是當(dāng)一個(gè)classloader加載一個(gè)Class的時(shí)候,這個(gè)Class所依賴的和引用的所有Class也由這個(gè)classloader負(fù)責(zé)載入,除非是顯式的使用另外一個(gè)classloader載入;委托機(jī)制那么是先讓parent〔父〕類加載器(而不是super,它與parentclassloader類不是繼承關(guān)系)尋找,只有在parent找不到的時(shí)候才從自己的類路徑中去尋找。此外類加載還采用了cache機(jī)制,也就是如果cache中保存了這個(gè)Class就直接返回它,如果沒有才從文件中讀取和轉(zhuǎn)換成Class,并存入cache,這就是為什么我們修改了Class但是必須重新啟動JVM才能生效的原因。82.進(jìn)程和線程分別該怎么理解?解答:進(jìn)程是資源分配的根本單位。所有與該進(jìn)程有關(guān)的資源,都被記錄在進(jìn)程控制塊PCB中。以表示該進(jìn)程擁有這些資源或正在使用它們。另外,進(jìn)程也是搶占處理機(jī)的調(diào)度單位,它擁有一個(gè)完整的虛擬地址空間。與進(jìn)程相對應(yīng),線程與資源分配無關(guān),它屬于某一個(gè)進(jìn)程,并與進(jìn)程內(nèi)的其他線程一起共享進(jìn)程的資源。當(dāng)進(jìn)程發(fā)生調(diào)度時(shí),不同的進(jìn)程擁有不同的虛擬地址空間,而同一進(jìn)程內(nèi)的不同線程共享同一地址空間。線程只由相關(guān)堆棧〔系統(tǒng)?;蛴脩魲!炒娣牌骱途€程控制表TCB組成。存放器可被用來存儲線程內(nèi)的局部變量,但不能存儲其他線程的相關(guān)變量。發(fā)生進(jìn)程切換與發(fā)生線程切換時(shí)相比擬,進(jìn)程切換時(shí)涉及到有關(guān)資源指針的保存以及地址空間的變化等問題;線程切換時(shí),由于同不進(jìn)程內(nèi)的線程共享資源和地址空間,將不涉及資源信息的保存和地址變化問題,從而減少了操作系統(tǒng)的開銷時(shí)間。而且,進(jìn)程的調(diào)度與切換都是由操作系統(tǒng)內(nèi)核完成,而線程那么既可由操作系統(tǒng)內(nèi)核完成,也可由用戶程序進(jìn)行。83.同步和異步有何異同,在什么情況下分別使用他們?請舉例說明解答:如果數(shù)據(jù)將在線程間共享。例如正在寫的數(shù)據(jù)以后可能被另一個(gè)線程讀到,或者正在讀的數(shù)據(jù)可能已經(jīng)被另一個(gè)線程寫過了,那么這些數(shù)據(jù)就是共享數(shù)據(jù),必須進(jìn)行同步存取。當(dāng)應(yīng)用程序在對象上調(diào)用了一個(gè)需要花費(fèi)很長時(shí)間來執(zhí)行的方法,并且不希望讓程序等待方法的返回時(shí),就應(yīng)該使用異步編程,在很多情況下采用異步途徑往往更有效率。84.sleep()和wait()有什么區(qū)別?解答:sleep是線程類〔Thread〕的方法,導(dǎo)致此線程暫停執(zhí)行指定時(shí)間,給執(zhí)行時(shí)機(jī)給其他線程,但是監(jiān)控狀態(tài)依然保持,到時(shí)后會自動恢復(fù)。調(diào)用sleep不會釋放對象鎖。wait是Object類的方法,對此對象調(diào)用wait方法導(dǎo)致本線程放棄對象鎖,進(jìn)入等待此對象的等待鎖定池,只有針對此對象發(fā)出notify方法〔或notifyAll〕后本線程才進(jìn)入對象鎖定池準(zhǔn)備獲得對象鎖進(jìn)入運(yùn)行狀態(tài)。85.java中會存在內(nèi)存泄露嗎?請簡單描述。解答:內(nèi)存泄露是指系統(tǒng)中存在無法回收的內(nèi)存,有時(shí)候會造成內(nèi)存缺乏或系統(tǒng)崩潰。Java存在內(nèi)存泄露。Java中的內(nèi)存泄露當(dāng)然是指:存在無用但是垃圾回收器無法回收的對象。而且即使有內(nèi)存泄露問題存在,也不一定會表現(xiàn)出來。自己實(shí)現(xiàn)堆棧的數(shù)據(jù)結(jié)構(gòu)時(shí)有可能會出現(xiàn)內(nèi)存泄露。86.什么叫應(yīng)用程序域?什么是托管代碼?什么是強(qiáng)類型系統(tǒng)?什么是裝箱和拆箱?什么是重載?CTS、CLS和CLR分別作何解釋?解答:應(yīng)用程序域:一種邊界,它由公共語言運(yùn)行庫圍繞同一應(yīng)用程序范圍內(nèi)創(chuàng)立的對象建立〔即,從應(yīng)用程序入口點(diǎn)開始,沿著對象激活的序列的任何位置〕。應(yīng)用程序域有助于將在一個(gè)應(yīng)用程序中創(chuàng)立的對象與在其他應(yīng)用程序中創(chuàng)立的對象隔離,以使運(yùn)行時(shí)行為可以預(yù)知。在一個(gè)單獨(dú)的進(jìn)程中可以存在多個(gè)應(yīng)用程序域。托管代碼:由公共語言運(yùn)行庫環(huán)境〔而不是直接由操作系統(tǒng)〕執(zhí)行的代碼。托管代碼應(yīng)用程序可以獲得公共語言運(yùn)行庫效勞,例如自動垃圾回收、運(yùn)行庫類型檢查和平安支持等。這些效勞幫助提供獨(dú)立于平臺和語言的、統(tǒng)一的托管代碼應(yīng)用程序行為。強(qiáng)類型系統(tǒng):通過運(yùn)行時(shí)類型識別〔RTTI〕(Run-TimeTypeIdentification),程序能夠使用基類的指針或引用來檢查這些指針或引用所指的對象的實(shí)際派生類型。裝箱、拆箱:從值類型接口轉(zhuǎn)換到引用類型裝箱。從引用類型轉(zhuǎn)換到值類型拆箱。重載:是方法的名稱相同。參數(shù)或參數(shù)類型不同,進(jìn)行屢次重載以適應(yīng)不同的需要。CTS:通用語言系統(tǒng)。CLS:通用語言標(biāo)準(zhǔn)。CLR:公共語言運(yùn)行庫。87.程序注釋的用途有哪些?帶注釋的程序有什么缺點(diǎn)?解答:注釋可以說明程序,給自己或他人在閱讀程序時(shí)提供幫助,使程序更容易理解,也就是增強(qiáng)程序代碼的可讀性。過多的代碼注釋會使程序結(jié)構(gòu)變得不清晰。88.UDP和TCP連接有和異同?解答:TCP協(xié)議是面向連接的,每個(gè)數(shù)據(jù)包的傳輸過程是:先建立鏈路、數(shù)據(jù)傳輸、然后去除鏈路。數(shù)據(jù)包不包含目的地址。受端和發(fā)端不但順序一致,而且內(nèi)容相同。它的可靠性高;UDP協(xié)議是面向無連接的,每個(gè)數(shù)據(jù)包都有完整的源、目的地址及分組編號,各自在網(wǎng)絡(luò)中獨(dú)立傳輸,傳輸中不管其順序,數(shù)據(jù)到達(dá)收端后再進(jìn)行排序組裝,遇有喪失、過失和失序等情況,通過請求重發(fā)來解決。它的效率比擬高89.構(gòu)造器Constructor是否可以被繼承?是否可以被Override?解答:構(gòu)造器Constructor不能被繼承,因此不能重寫Overriding,但可以被重載Overloading。90.什么是java序列化,如何實(shí)現(xiàn)java序列化?解答:序列化就是一種用來處理對象流的機(jī)制,所謂對象流也就是將對象的內(nèi)容進(jìn)行流化??梢詫α骰蟮膶ο筮M(jìn)行讀寫操作,也可將流化后的對象傳輸于網(wǎng)絡(luò)之間。序列化是為了解決在對對象流進(jìn)行讀寫操作時(shí)所引發(fā)的問題;序列化的實(shí)現(xiàn):將需要被序列化的類實(shí)現(xiàn)Serializable接口,該接口沒有需實(shí)現(xiàn)的方法,implementsSerializable只是為了標(biāo)注該對象是可被序列化的,然后使用一個(gè)輸出流(如FileOutputStream)來構(gòu)造一個(gè)ObjectOutputStream(對象流)對象,接著,使用ObjectOutputStream對象的writeObject(Objectobj)方法就可以將參數(shù)為obj的對象寫出(即保存其狀態(tài)),要恢復(fù)的話那么用輸入流。91.面向?qū)ο蟮奶卣饔心男┓矫??解答:面向?qū)ο蟮奶卣髦饕幸韵聨讉€(gè)方面:1)抽象:抽象就是忽略一個(gè)主題中與當(dāng)前目標(biāo)無關(guān)的那些方面,以便更充分地注意與當(dāng)前目標(biāo)有關(guān)的方面。抽象并不打算了解全部問題,而只是選擇其中的一局部,暫時(shí)不用局部細(xì)節(jié)。抽象包括兩個(gè)方面,一是過程抽象,二是數(shù)據(jù)抽象。2)繼承:繼承是一種聯(lián)結(jié)類的層次模型,并且允許和鼓勵(lì)類的重用,它提供了一種明確表述共性的方法。對象的一個(gè)新類可以從現(xiàn)有的類中派生,這個(gè)過程稱為類繼承。新類繼承了原始類的特性,新類稱為原始類的派生類〔子類〕,而原始類稱為新類的基類〔父類〕。派生類可以從它的基類那里繼承方法和實(shí)例變量,并且類可以修改或增加新的方法使之更適合特殊的需要。3)封裝:封裝是把過程和數(shù)據(jù)包圍起來,對數(shù)據(jù)的訪問只能通過已定義的界面。面向?qū)ο笥?jì)算始于這個(gè)根本概念,即現(xiàn)實(shí)世界可以被描繪成一系列完全自治、封裝的對象,這些對象通過一個(gè)受保護(hù)的接口訪問其他對象。4)多態(tài)性:多態(tài)性是指允許不同類的對象對同一消息作出響應(yīng)。多態(tài)性包括參數(shù)化多態(tài)性和包含多態(tài)性。多態(tài)性語言具有靈活、抽象、行為共享、代碼共享的優(yōu)勢,很好的解決了應(yīng)用程序函數(shù)同名問題。92.接口是否可繼承接口?抽象類是否可實(shí)現(xiàn)接口?抽象類是否可繼承實(shí)體類?解答:接口是可以繼承接口的并且可以繼承多個(gè)其它接口;抽象類可以實(shí)現(xiàn)接口中的方法;抽象類可以繼承實(shí)體類。93.nonymousInnerClass(匿名內(nèi)部類)是否可以extends(繼承)其它類,是否可以implements(實(shí)現(xiàn))interface(接口)?解答:匿名內(nèi)部類是可以繼承其它類,同樣也可以去實(shí)現(xiàn)接口的,用法為:JButtonbutton=newJButton();button.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){//somemothod...}});這樣的用法在swing編程中是經(jīng)常使用的,就是因?yàn)樗枰玫阶员O(jiān)聽器機(jī)制,而該監(jiān)聽類如果只效勞于一個(gè)組件,那么,將該類設(shè)置成內(nèi)部類/匿名類是最方便的。94.Bit和Byte是什么意思?它們之間有什么關(guān)系?解答:bit中文名稱是位,是用以描述電腦數(shù)據(jù)量的最小單位。byte〔字節(jié)〕是計(jì)算機(jī)信息技術(shù)用于計(jì)量存儲容量和傳輸容量的一種計(jì)量單位1byte=8bit95.你認(rèn)為java與其他〔你所了解的〕語言相比,有什么優(yōu)點(diǎn)和缺點(diǎn)?解答:1).Java沒有預(yù)處理指令?!踩鏑中的#define,#include,#ifdef等〕。C中的常量定義在Java中用staticfinal來取代。2).Java中沒有C中的全局變量。3).Java中的主類型的size是確定的,而C中主類型的size跟平臺相關(guān)。4).Java中沒有了指針,它使用了類似的句柄來取代指針,但是Java中不允許對句柄進(jìn)行加減,沒有取地址操作符之類的東東。5).Java有垃圾收集機(jī)制,不需要自己釋放空間。6).Java沒有g(shù)oto語句。Java在C提供的控制語句根底上增加了異常處理和標(biāo)簽break和continue語句。這些可以替代goto的作用。7).C要求一個(gè)方法或塊中使用的所有局部變量的定義在該方法或塊的最開始處定義,而Java允許這些定義在方法或塊的任意地方出現(xiàn)。8).Java不要求在調(diào)用一個(gè)函數(shù)以前已經(jīng)定義了該函數(shù),可以在調(diào)用點(diǎn)后面定義。而C有這個(gè)要求。9).Java不支持C中的strut和union類型。Java支持方法重載。10).Java不支持C中的enum關(guān)鍵字。11).Java不支持C中的bitfields能力。12).Java不支持C的typedef。13).Java不支持C的方法指針。14).Java不支持C的可變參數(shù)表。java和.net的都不適合做桌面程序,這兩個(gè)比擬適合寫WEB的程序;c++比擬適合寫桌面程序c++/java都是強(qiáng)類型的靜態(tài)預(yù)編譯型語言。優(yōu)點(diǎn)是結(jié)構(gòu)性強(qiáng),程序可讀性好,開發(fā)效率高,適合開發(fā)大型應(yīng)用。就本人的經(jīng)驗(yàn)而言,java的開發(fā)效率優(yōu)于c++,實(shí)際上java大行其道的首要因素就是它夠簡單。java尤其不適合開發(fā)桌面程序,GUI的API一直都是java的弱點(diǎn);perl/python是動態(tài)解釋型語言。perl是弱類型的而python是強(qiáng)類型的,后者的變量一旦賦值,就擁有了類型,不能再賦其他類型的值。不象javascript/perl可以隨便定義。perl是unix下的王牌工具,在缺乏IDE的字符界面下,很好地彌補(bǔ)了unix;shell/utility的缺乏,并且局部繼承了面向?qū)ο笳Z言的靈活性

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論