2023年自己的詳細總結(jié)面試寶典_第1頁
2023年自己的詳細總結(jié)面試寶典_第2頁
2023年自己的詳細總結(jié)面試寶典_第3頁
2023年自己的詳細總結(jié)面試寶典_第4頁
2023年自己的詳細總結(jié)面試寶典_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Java面試寶典2023版(黃sir?qū)W生專用)TOC\o"1-3"\h\z\uHYPERLINK\l"_Toc"項目介紹 PAGEREF_Toc\h5HYPERLINK\l"_Toc"前言 PAGEREF_Toc\h7HYPERLINK\l"_Toc"一.Java基礎(chǔ)部分?PAGEREF_Toc\h9HYPERLINK\l"_Toc"1、 請說一下break和continue的區(qū)別??PAGEREF_Toc\h9HYPERLINK\l"_Toc"2、 switch中用于判斷的表達式,可以用哪些數(shù)據(jù)類型??PAGEREF_Toc\h9HYPERLINK\l"_Toc"3、 char型變量中能不能存貯一個中文漢字?為什么? PAGEREF_Toc\h9HYPERLINK4、 靜態(tài)變量和實例變量的區(qū)別? PAGEREF_Toc\h9HYPERLINK5、 是否可以從一個static方法內(nèi)部發(fā)出對非static方法的調(diào)用? PAGEREF_Toc\h9HYPERLINK6、?Integer與int的區(qū)別?PAGEREF_Toc\h9HYPERLINK\l"_Toc"7、?Overload和Override的區(qū)別。參數(shù)列表相同,返回值不同的方法,是否是重載方法? PAGEREF_Toc\h10HYPERLINK8、?接口是否可繼承接口?抽象類是否可實現(xiàn)(implements)接口?抽象類是否可繼承具體類(concreteclass)? PAGEREF_Toc\h10HYPERLINK\l"_Toc"9、?面向?qū)ο笥心娜筇匦裕?PAGEREF_Toc\h10HYPERLINK12、?String和StringBuffer的區(qū)別?PAGEREF_Toc\h11HYPERLINK13、 數(shù)組有沒有l(wèi)ength()這個方法?String有沒有l(wèi)ength()這個方法? PAGEREF_Toc\h11HYPERLINK\l"_Toc"14、 final,finally,finalize的區(qū)別。 PAGEREF_Toc\h11HYPERLINK\l"_Toc"15、?請說一下你常用的幾種異常??PAGEREF_Toc\h11HYPERLINK16、?線程的基本概念?線程的基本狀態(tài)以及狀態(tài)之間的關(guān)系?PAGEREF_Toc\h12_Toc"18、 多線程有幾種實現(xiàn)方法? PAGEREF_Toc\h12HYPERLINK\l"_Toc"19、 啟動一個線程是用run()還是start()?. PAGEREF_Toc\h12HYPERLINK\l"_Toc"20、?Set和List的區(qū)別,List和Map的區(qū)別 PAGEREF_Toc\h12HYPERLINK\l"_Toc"21、?HashMap和Hashtable的區(qū)別 PAGEREF_Toc\h12HYPERLINK22、 說出ArrayList,LinkedList的區(qū)別?PAGEREF_Toc\h13HYPERLINK\l"_Toc"23、?請描述一下JDK1.5有哪些新特性? PAGEREF_Toc\h13HYPERLINK\l"_Toc"24、?為什么要使用單例模式 PAGEREF_Toc\h13HYPERLINK\l"_Toc"二.Javaweb部分?PAGEREF_Toc\h13HYPERLINK25、 什么是B/S和C/S? PAGEREF_Toc\h13HYPERLINK26、 如何設(shè)立servlet初始化參數(shù)?如何獲?。骵rvlet初始化的參數(shù)??PAGEREF_Toc\h13HYPERLINK27、?Ajax是干么用的?有哪些常用的Ajax框架??PAGEREF_Toc\h14HYPERLINK\l"_Toc"28、 HTTP請求的GET與POST方式的區(qū)別?PAGEREF_Toc\h14HYPERLINK30、 ServletAPI中forward()與redirect()的區(qū)別??PAGEREF_Toc\h14HYPERLINK\l"_Toc"31、?jsp有哪些內(nèi)置對象??PAGEREF_Toc\h14HYPERLINK\l"_Toc"32、 Session和Cookie的區(qū)別? PAGEREF_Toc\h15HYPERLINK\l"_Toc"33、?靜態(tài)include和動態(tài)include的區(qū)別? PAGEREF_Toc\h15HYPERLINK\l"_Toc"三.數(shù)據(jù)庫部分?PAGEREF_Toc\h15HYPERLINK36、?什么是數(shù)據(jù)庫中的視圖,其好處是什么? PAGEREF_Toc\h16HYPERLINK\l"_Toc"37、 數(shù)據(jù)庫中索引的好處是什么?一個數(shù)據(jù)庫表,經(jīng)常要進行添加和刪除記錄的操作,應(yīng)當為該表建多個索引嗎??PAGEREF_Toc\h16HYPERLINK38、 什么是數(shù)據(jù)庫游標??16HYPERLINK\l"_Toc"39、 什么是事務(wù)??PAGEREF_Toc\h16HYPERLINK\l"_Toc"40、?數(shù)據(jù)庫中日記的作用是什么? PAGEREF_Toc\h16HYPERLINK\l"_Toc"41、?什么是主鍵和外鍵? PAGEREF_Toc\h17HYPERLINK42、 什么是數(shù)據(jù)庫中的存儲過程和觸發(fā)器?存儲過程的好處? PAGEREF_Toc\h17HYPERLINK\l"_Toc"43、 內(nèi)連接和外連接的區(qū)別? PAGEREF_Toc\h17HYPERLINK\l"_Toc"44、?請介紹一下數(shù)據(jù)庫連接池技術(shù)? PAGEREF_Toc\h17HYPERLINK\l"_Toc"45、?MySQL、Oracle、SQLServer各數(shù)據(jù)庫服務(wù)的端標語??PAGEREF_Toc\h17HYPERLINK\l"_Toc"46、 Oracle和SQLServer的分頁有什么區(qū)別? PAGEREF_Toc\h18HYPERLINK\l"_Toc"47、 如何對數(shù)據(jù)庫進行優(yōu)化??PAGEREF_Toc\h18HYPERLINK\l"_Toc"48、 JDBC連接數(shù)據(jù)庫的環(huán)節(jié)??PAGEREF_Toc\h18HYPERLINK49、?JDBC中的PreparedStatement相比Statement的好處?PAGEREF_Toc\h18HYPERLINK四.其他部分 PAGEREF_Toc\h18HYPERLINK50、 xml有哪些解析技術(shù)?區(qū)別是什么? PAGEREF_Toc\h18HYPERLINK\l"_Toc"51、 xml文檔在實際項目中有哪些應(yīng)用? PAGEREF_Toc\h19HYPERLINK\l"_Toc"五.流行框架與技術(shù)?PAGEREF_Toc\h19HYPERLINK52、 什么是MVC?常用的MVC框架有哪些??PAGEREF_Toc\h19HYPERLINK\l"_Toc"53、?談?wù)凷truts的工作流程(或運營原理)?PAGEREF_Toc\h19HYPERLINK\l"_Toc"54、 談?wù)凷truts2的工作流程(或運營原理) PAGEREF_Toc\h20HYPERLINK\l"_Toc"55、?說說struts1與struts2的區(qū)別?PAGEREF_Toc\h20HYPERLINK57、 什么是Hibernate,好處是什么? PAGEREF_Toc\h21HYPERLINK58、?hibernate中的update()和saveOrUpdate()的區(qū)別?PAGEREF_Toc\h21HYPERLINK\l"_Toc"59、?hibernate中持久化對象的三種狀態(tài)??PAGEREF_Toc\h21HYPERLINK\l"_Toc"60、 session的load()和get()的區(qū)別 PAGEREF_Toc\h22HYPERLINK\l"_Toc"61、 iBatis與Hibernate有什么不同? PAGEREF_Toc\h22HYPERLINK63、 什么是AOP?談?wù)勀銓λ睦斫狻?PAGEREF_Toc\h23HYPERLINK64、 什么是IOC和DI??PAGEREF_Toc\h23HYPERLINK65、?依賴注入的兩種方式? PAGEREF_Toc\h23HYPERLINK\l"_Toc"66、 SpringIOC容器中Bean默認的范圍(scope)? 23?項目介紹在進行技術(shù)面試前,提醒大家,必須要準備好項目介紹,即需要準備好你的簡歷中列的所有項目的項目介紹!面試時關(guān)于項目,面試官常見的問題及回答(以銀行柜臺系統(tǒng)為例):你給我簡要介紹一下銀行柜臺系統(tǒng)?1、簡易銀行柜臺系統(tǒng)是模擬銀行柜臺的基本功能而做的一個系統(tǒng)。2、系統(tǒng)分前臺和后臺部分,前臺部分是銀行柜臺人員操作的,涉及:注冊登錄模塊、開銷戶模塊、帳號管理模塊、存取錢轉(zhuǎn)賬模塊、柜臺人員信息管理;后臺部分是銀行管理者操作的,涉及查看日記模塊、管理柜臺人員信息模塊;3、我重要負責(zé)的是前臺的所有功能;你具體介紹一下你負責(zé)的模塊的功能?1、我負責(zé)的注冊登錄模塊和柜臺人員信息模塊事實上是管理柜臺人員信息的,內(nèi)容比較簡樸;2、開銷戶模塊、帳號管理模塊、存取錢轉(zhuǎn)賬模塊是為銀行儲戶服務(wù)的模塊。其中開銷戶就是為儲戶開戶、銷戶的功能,賬戶管理模塊就是幫儲戶凍結(jié)帳號、修改密碼等功能,存取錢轉(zhuǎn)賬模塊就是為儲戶存錢、取錢,幫儲戶轉(zhuǎn)賬的功能;這個項目幾個人做的?用了多長時間?這個項目比較小,由2個人合作完畢的,我負責(zé)的是前臺部分;項目大約用了4天左右的時間;這個項目使用了什么技術(shù)?這個項目使用Struts2、Hibernate3和MySQL你在做這個項目的時候,碰到了什么困難,怎么解決的?比如在Hiberante的使用,關(guān)于表之間關(guān)聯(lián)關(guān)系的配置,我開始操作的時候不太熟悉,后來通過查文檔、和其他同學(xué)溝通的方式,這個問題也得到了解決;備注:假如你在這里提到了表之間關(guān)聯(lián)關(guān)系的配置,那么這個問題面試官非常有也許接下去就問這個技術(shù)問題,所以務(wù)必認真準備這個技術(shù)問題。?前言這套面試題重要目的是幫助那些還沒有java軟件開發(fā)實際工作經(jīng)驗,而正在努力尋找java軟件開發(fā)工作的學(xué)生在筆試/面試時更好地贏得好的結(jié)果。由于這套試題涉及的范圍很泛,很廣,很雜,大家不也許一天兩天就看完和學(xué)完這套面試寶典,即使你已經(jīng)學(xué)過了有關(guān)的技術(shù),那么至少也需要半個月的時間才干消化和掌握這套面試寶典,所以,大家應(yīng)當早作準備,從拿到這套面試寶典之日起,就要堅持在天天閑暇之余學(xué)習(xí)其中幾道題目,日積月累,等到出去面試時,一切都水到渠成,面試時就自然會游刃有余了。答題時,先答是什么,再答有什么作用,要注意什么(這條可以沒有)比如說面試官問:給我介紹一下ORM?較好回答:ORM就是ObjectRelationalMapping,就是對象關(guān)系映射;作用:我們在寫程序的時候,用的是面向?qū)ο蟮姆椒?但是在關(guān)系型數(shù)據(jù)庫里,存的是一條條的記錄;為了用純面向?qū)ο蟮乃枷虢鉀Q問題,所以需要將程序中的對象和數(shù)據(jù)庫中的記錄建立起映射關(guān)系,ORM就是將對象和數(shù)據(jù)庫中的記錄建立起映射的技術(shù);答案要層次分明,條理清楚,從這些表面的東西也可以看出一個人的習(xí)慣、辦事風(fēng)格、條理等。答題不局限于什么格式和形式,就是要將自己的掌握的技術(shù)內(nèi)容展現(xiàn)出來,比如可以采用舉例的說法:需要特別注意的是,由于面試官自身水平層次不齊,不要由于人家題目問的模棱兩可(或者題目問的不準確),你就心里膽怯和沒底氣了,不敢回答了。你要大膽地提出對方題目中你不清楚的地方,希望對方能重新明確的提出問題?例如,你可以問:您提的問題,我剛才沒有完全聽明白,能不能再說一遍。

一.Java基礎(chǔ)部分請說一下break和continue的區(qū)別?1、這兩個語句都可以用于跳出循環(huán)的;2、break是中止循環(huán),執(zhí)行循環(huán)體以后的語句,而continue是跳出本次循環(huán),執(zhí)行下一次循環(huán);3、break還可以用在switch結(jié)構(gòu)中,用于跳出switch結(jié)構(gòu).4、break假如用于多重循環(huán)中,可以跳出內(nèi)部循環(huán),直接進入外部循環(huán).switch中用于判斷的表達式,可以用哪些數(shù)據(jù)類型?1、可以是char、byte、short、int,不可以是long、String等其他類型;2、從JDK1.7開始,支持String類型;char型變量中能不能存貯一個中文漢字?為什么?Java里采用了Unicode編碼格式,Unicode編碼中一個char型占用2個字節(jié),而一個漢字也是占用2個字節(jié),所以可以存儲中文漢字。備注:C語言里,char占用1個字節(jié),不用存漢字。靜態(tài)變量和實例變量的區(qū)別?在語法定義上的區(qū)別:靜態(tài)變量前要加static關(guān)鍵字,而實例變量前則不加。在程序運營時的區(qū)別:實例變量屬于某個對象的屬性,必須創(chuàng)建了實例對象,其中的實例變量才會被分派空間,才干使用這個實例變量。靜態(tài)變量不屬于某個實例對象,而是屬于類,所以也稱為類變量,不用創(chuàng)建任何實例對象,靜態(tài)變量就會被分派空間,靜態(tài)變量就可以被使用了??傊?實例變量必須創(chuàng)建對象后才可以通過這個對象來使用,靜態(tài)變量則可以直接使用類名來引用。注意:也許涉及局部變量的考核問題?是否可以從一個static方法內(nèi)部發(fā)出對非stat(yī)ic方法的調(diào)用?不可以。由于非stat(yī)ic方法是要與對象關(guān)聯(lián)在一起的,必須創(chuàng)建一個對象后,才可以在該對象上進行方法調(diào)用,而static方法調(diào)用時不需要創(chuàng)建對象,可以直接調(diào)用。也就是說,當一個static方法被調(diào)用時,也許還沒有創(chuàng)建任何實例對象,假如從一個static方法中發(fā)出對非static方法的調(diào)用,那個非static方法是關(guān)聯(lián)到哪個對象上的呢?這個邏輯無法成立,所以,一個static方法內(nèi)部發(fā)出對非static方法的調(diào)用。實例方法與靜態(tài)方法的區(qū)別?抽象方法?靜態(tài)方法:用static聲明的方法,不需要對象,就可以調(diào)用,在調(diào)用該方法時,不會將對象的引用傳遞給它。實例方法:就是沒有static前綴的一類的一般方法,被對象擁有。抽象方法:就是以abstract修飾的方法,這種方法只聲明返回的數(shù)據(jù)類型、方法名稱和所需要的參數(shù),沒有方法體,抽象方法只需要聲明,不需要實現(xiàn)。Integer與int的區(qū)別包裝類與基本類型的關(guān)系1、int是基本數(shù)據(jù)類型,Integer是包裝類;2、int的默認值是0,Interger的默認值是null;3、Boolean—booleanDouble—doubleCharacter-charFloatfloat:valueOf()4、包裝類和字符串之間的轉(zhuǎn)換:包裝類提供了parseXXX()方法Overload和Override的區(qū)別。參數(shù)列表相同,返回值不同的方法,是否是重載方法?Overload是重載的意思,Override是覆蓋的意思,也就是重寫。重載是指在一個類里,方法名相同,參數(shù)不同;重寫是指子類繼承父類,子類里重新編寫了父類中的同名(同參數(shù))方法,也就是覆蓋了父類的方法;不是!由于重載必須規(guī)定參數(shù)列表不同!在OOP中,什么是方法的重載,什么是方法的重寫?方法的重載:指的是一個類中可以定義相同的名字,但參數(shù)不同的多個方法,調(diào)用時會根據(jù)不同的參數(shù)表選擇相應(yīng)的方法,注意:只有返回值不同不構(gòu)成方法的重載、只有形參的名稱的不同不構(gòu)成方法的重載。方法的重寫:重寫方法必須和被重寫的方法具有相同的方法名稱、參數(shù)列表和返回類型。重寫方法不能使用比被重寫方法更嚴格的訪問權(quán)限。接口是否可繼承接口?抽象類是否可實現(xiàn)(implements)接口?抽象類是否可繼承具體類(concreteclass)?接口可以繼承接口。抽象類可以實現(xiàn)(implements)接口,抽象類是否可繼承具體類。備注:只要明白了接口和抽象類的本質(zhì)和作用,這些問題都很好回答。只有記住抽象類與普通類的唯一區(qū)別就是不能創(chuàng)建實例對象和允許有abstract方法。Servlet:接口HttpServlet(抽象類)GernericServlet面向?qū)ο笥心娜筇匦?1、面向?qū)ο笥腥筇匦?,分別是:封裝、繼承和多態(tài)。2、封裝:面向?qū)ο蟮姆庋b就是把描述一個對象的屬性和行為的代碼封裝在一個類中,有些屬性是不希望公開的,或者說被其他對象訪問的,所以我們使用private修飾該屬性,使其隱藏起來;類中提供了方法(用public修飾),常用的是get、set方法,可以操作這些被隱藏的屬性,其他類可以通過調(diào)用這些方法,改變隱藏屬性的值!下面的回答是更高規(guī)定,不需要學(xué)生必須掌握:封裝是保證軟件部件具有優(yōu)良的模塊性的基礎(chǔ),封裝的目的就是要實現(xiàn)軟件部件的“高內(nèi)聚、低耦合”,防止程序互相依賴性而帶來的變動影響。在面向?qū)ο蟮木幊陶Z言中,對象是封裝的最基本單位,面向?qū)ο蟮姆庋b比傳統(tǒng)語言的封裝更為清楚、更為有力。3、繼承:在定義和實現(xiàn)一個類的時候,可以在一個已經(jīng)存在的類的基礎(chǔ)之上來進行,使用extends關(guān)鍵字實現(xiàn)繼承;子類中可以加入若干新的內(nèi)容,或修改本來的方法使之更適合特殊的需要,這就是繼承。繼承是子類自動共享父類數(shù)據(jù)和方法的機制,這是類之間的一種關(guān)系,提高了軟件的可重用性和可擴展性。4、多態(tài):多態(tài)就是在聲明時使用父類,在實現(xiàn)或調(diào)用時使用品體的子類;即不修改程序代碼就可以改變程序運營時所綁定的具體代碼,讓程序可以選擇多個運營狀態(tài),這就是多態(tài)性,多態(tài)增強了軟件的靈活性和擴展性。這里可以舉個例子,比如聲明時使用的是動物類,調(diào)用時傳遞的是一個貓類(動物類的子類)的對象,具體執(zhí)行父類里動物——吃的方法時,實際執(zhí)行的是貓——吃的方法。abstractclass和interface有什么區(qū)別??1、抽象類里面可以用普通方法,而接口中的方法所有都是抽象的;2、在應(yīng)用范圍上來說,接口往往在程序設(shè)計的時候,用來定義程序模塊的功能,方便各模塊協(xié)同工作;抽象類是對相似類進行抽象,形成一個抽象的父類可供重用!有了抽象類為什么還需要接口?繼承的局限性:單根性Java編程思想所制:面向接口編程String是最基本的數(shù)據(jù)類型嗎?1、String是個類,不是基本數(shù)據(jù)類型;引用數(shù)據(jù)類型(array,String,類(自定義的類和系統(tǒng)提供的類),接口)2、基本數(shù)據(jù)類型涉及byte、int、char、long、float、double、boolean和short。String和StringBuffer的區(qū)別?3、StringBuffer與StringBuilder區(qū)別1、String是個不可變長度的字符串,而StringBuffer是個可變長度的字符串;2、在對String類進行操作的時候(例如增長字符),事實上是在內(nèi)存中產(chǎn)生了一個新的String對象;而StringBuffer是給原對象增長字符,不是新創(chuàng)建一個對象;3、StringBuilder:線程非安全的,可變字符序列,但是效率高?StringBuffer:"線程安全的,可變字符序列,但是效率低4、什么叫線程安全?

jvm有一個mainmemory(主存儲器),而每個線程有自己的workingmemory(工作的存儲器),一個線程對一個variable(變量)進行操作時,都要在自己的workingmemory里面建立一個copy,操作完之后再寫入main

memory。多個線程同時操作同一個variable,就也許會出現(xiàn)不可預(yù)知的結(jié)果,即線程不安全。加鎖來實現(xiàn)線程安全,每個線程在獲得這個鎖之后,要執(zhí)行完(load到workingmemory

->

use&assign

->

store到mainmemory)自己的一系列的過程,才會釋放它得到的鎖。這樣就實現(xiàn)了所謂的線程安全。數(shù)組有沒有length()這個方法?String有沒有l(wèi)ength()這個方法?數(shù)組沒有l(wèi)ength()這個方法,有l(wèi)ength的屬性。String有l(wèi)ength()這個方法。final,finally,finalize的區(qū)別。final用于聲明屬性,方法和類,分別表達屬性不可變,方法不可覆蓋,類不可繼承。finally是異常解決語句結(jié)構(gòu)的一部分,表達總是執(zhí)行。finalize是Object類的一個方法,在垃圾收集器執(zhí)行的時候會調(diào)用被回收對象的此方法,可以覆蓋此方法提供垃圾收集時的其他資源回收,例如關(guān)閉文獻等。JVM不保證此方法總被調(diào)用請說一下你常用的幾種異常?比如:空指針異常;數(shù)組下標越界;類型轉(zhuǎn)換異常;算數(shù)異常,例如除數(shù)為零;IO異常,比如說找不到文獻;找不到類異常;sql異常,例如sql語句不能正常運營;…線程的基本概念?線程的基本狀態(tài)以及狀態(tài)之間的關(guān)系1、是程序執(zhí)行流的最小HYPERLINK""\t"_blank"單元。在單個程序中同時運營多個線程完畢不同的工作,稱為HYPERLINK""\t"_blank"多線程。2、開始時:就緒狀態(tài),等待cpu調(diào)用后進入運營狀態(tài),運營過程中碰到阻塞事件,進入阻塞狀態(tài),等待阻塞事件結(jié)束后,重新進入就緒狀態(tài);假如沒有阻塞事件,運營結(jié)束后,則進入結(jié)束狀態(tài)。sleep()和wait()有什么區(qū)別?sleep就是暫停當前線程一段時間,把cpu讓給其他線程使用,屆時后會自動恢復(fù)。調(diào)用sleep不會釋放對象鎖。wait方法導(dǎo)致本線程放棄對象鎖,進入等待,只有等到本對象的notify方法(或notifyAll)后本線程才進入就緒狀態(tài),等待執(zhí)行。多線程有幾種實現(xiàn)方法?多線程有兩種實現(xiàn)方法,分別是繼承Thread類與實現(xiàn)Runnable接口啟動一個線程是用run()還是start()?.啟動一個線程是調(diào)用start()方法,使線程就緒狀態(tài),以后可以被調(diào)度為運營狀態(tài),一個線程必須關(guān)聯(lián)一些具體的執(zhí)行代碼,run()方法是該線程所關(guān)聯(lián)的執(zhí)行代碼。Set和List的區(qū)別,List和Map的區(qū)別1、Set是無序的,元素不可反復(fù);List是有序的,元素可以反復(fù);他倆同為Collection的子接口2、List存儲的是單個對象的集合(有序的),Map存儲的是鍵值對為對象的集合(無序的);HashMap和Hashtable的區(qū)別1、HashMap和Hashtable都完畢了Map接口;2、HashMap非線程安全的,而Hashtable是線程安全的,因素是Hashtable里面的方法使用Synchronize關(guān)鍵字修飾的;3、由于Hashtable使用了Synchronize關(guān)鍵字修飾,其性能比較差;(具體因素不做具體說明)說出ArrayList,LinkedList的區(qū)別1、ArrayList和LinkedList都完畢了List接口;2、ArrayList底層是用數(shù)組實現(xiàn)的,而LinkedList使用鏈表實現(xiàn)的;3、ArrayList在插入、刪除時,需要移動數(shù)組元素,故性能較差;但是在查詢時,由于是連續(xù)的數(shù)組,所以查詢速度快;LinkedList正好相反。請描述一下JDK1.5有哪些新特性?//不是很懂1、泛型2、For-Each循環(huán)3、自動裝包/拆包4、枚舉5、靜態(tài)導(dǎo)入6、Annotation為什么要使用單例模式(進行補充,使其成為典型)1、避免在開發(fā)程序的時候,創(chuàng)建出一個類的多個實例(占用空間,性能問題),所以使用單例模式,保證該類只創(chuàng)建一個對象;2、一般單例模式通常有兩種形式:它的構(gòu)造函數(shù)為private的,必須有一個靜態(tài)方法返回自己的實例;實行形式有兩種,懶漢式和餓漢式;所謂的餓漢式就是在聲明實例的時候直接初始化對象,而懶漢式是先聲明一個空對象,在靜態(tài)方法中實例化該對象并返回。二.Javaweb部分什么是B/S和C/S?1、B/S:瀏覽器服務(wù)器模式;2、C/S:客戶端服務(wù)器模式;如何設(shè)立servlet初始化參數(shù)?如何獲取servlet初始化的參數(shù)?1、在web.xml里為每一個Servlet配置初始化參數(shù);2、通過ServletConfig對象實現(xiàn)對Servlet初始化對象的獲取;Ajax是干么用的?有哪些常用的Ajax架?(重點應(yīng)用)1、Ajax是采用了異步請求的方式,解決了頁面無刷新式提交的問題,改善了頁面的用戶體驗效果;常用在google地圖,注冊時用戶名反復(fù)性校驗,百度搜索下拉列表框;2、常用的Ajax框架:底層框架:JQuery、HYPERLINK""\t"_blank"Prototype;高層框架:DWR、DOJO、EXTJS、YUI;HTTP請求的GET與POST方式的區(qū)別(描述的具體點)Get和Post都是提交表單的方式之一;1、get方式表單中的數(shù)據(jù)放到HTTP數(shù)據(jù)包的頭部,post方式放到body中;2、get方式提交后,數(shù)據(jù)會在地址欄中顯示出來,而post方式不會,所以post更安全;3、get方式在提交數(shù)據(jù)的時候,數(shù)據(jù)長度是有限制的;而post方式在理論上對提交數(shù)據(jù)的大小是無限制的;4、get提交表單永遠使用字符方式提交;而post方式提交表單可以是字節(jié)方式也可以是字符方式說一說Servlet的生命周期?Servlet里常用的方法有哪些?Servlet生命周期涉及加載和實例化、初始化、解決請求以及服務(wù)結(jié)束;Servlet生命周期是由容器進行管理的,不可以被程序員手工銷毀;”0Servlet被服務(wù)器實例化后(用戶第一次訪問該Servlet時),容器運營其init方法,請求到達時運營其service方法,service方法自動派遣運營與請求相應(yīng)的doXXX方法(doGet,doPost)等,當服務(wù)器決定將實例銷毀的時候調(diào)用其destroy方法。ServletAPI中forward()與redirect()的區(qū)別?(具體、聊、)1、forward是請求轉(zhuǎn)發(fā),而redirect是重定向;2、請求轉(zhuǎn)發(fā)是服務(wù)器將客戶端的請求轉(zhuǎn)發(fā)到另一個地址去解決,然后將響應(yīng)返回給客戶端;事實上是1次請求,1次響應(yīng),對客戶端而言是透明的;而重定向是服務(wù)器根據(jù)客戶端發(fā)來的請求,返回給一個客戶端一個新的地址,客戶端根據(jù)這個返回的地址再發(fā)送請求,得到響應(yīng);事實上是2次請求,2次響應(yīng),并且客戶端的地址是第二次訪問的地址;3、轉(zhuǎn)發(fā)只能轉(zhuǎn)發(fā)到自己的資源,重定向無限制。jsp有哪些內(nèi)置對象?(各自的作用)JSP共有以下9個內(nèi)置的對象:(JSP內(nèi)置對象即無需聲明就可以直接使用的對象實例)1、request用戶端請求客戶端的請求信息被封裝在request對象中,通過它才干了解到客戶的需求,從這個對象中可以取出客戶端用戶提交的數(shù)據(jù)或者是參數(shù)2、response網(wǎng)頁傳回用戶端的回應(yīng)服務(wù)器端向客戶端返回的數(shù)據(jù),從這個對象中可以取出部分與服務(wù)器互動的數(shù)據(jù)和信息,只有接受這個對象的頁面才可以訪問這個對象,服務(wù)器需要對客戶端進行某些操作的時候也需要response對象,例如服務(wù)器要在客戶端生成Cookies,那么這時候response對象就是一個很好的選擇3、pageContext網(wǎng)頁的屬性是在這里管理(1)只合用于當前頁面范圍,即超過這個頁面就不可以使用了4、session與請求有關(guān)的會話期(1)維護客戶端用戶和服務(wù)器端狀態(tài),從這個對象中可以去除用戶和服務(wù)器交互過程中的數(shù)據(jù)和信息。這個對象在用戶關(guān)閉瀏覽器離開Web應(yīng)用之前一直有效。保存的內(nèi)容是用戶與服務(wù)器整個交互過程中的信息,假如是想在整個交互的過程中都可以訪問到信息,就可以選擇存放在session對象中)(2)Session的生命周期:session存儲在服務(wù)器端,Sessinon在用戶訪問第一次訪問服務(wù)器時創(chuàng)建,需要注意只有訪問JSP、Servlet等程序時才會創(chuàng)建Session,只訪問HTML、IMAGE等靜態(tài)資源并不會創(chuàng)建Session,可調(diào)用request.getSession(true)強制生成Session。session什么時候失效?1.服務(wù)器會把長時間沒有活動的Session從服務(wù)器內(nèi)存中清除,此時Session便失效。Tomcat中Session的默認失效時間為20分鐘。2.調(diào)用Session的invalidate方法。5、applicat(yī)ion1、在服務(wù)器一開始執(zhí)行服務(wù),到服務(wù)器關(guān)閉為止。它的范圍最大,生存周期最長2、應(yīng)用:在線人員記錄、在線人員名單列表6、out用來傳送回應(yīng)的輸出7、config8、pageJSP網(wǎng)頁自身9、exception頁面中的異常和錯誤Session和Cookie的區(qū)別?(之間的關(guān)聯(lián))1、Session和Cookie都是會話跟蹤技術(shù);2、Session是保存在服務(wù)器端的技術(shù)(保持用戶登錄狀態(tài)的檢查常用Session),而Cookie是保存在客戶端的技術(shù);3、Cookie只能存字符串,Session可以存對象;解釋:session機制采用的是一種在客戶端與服務(wù)器之間保持狀態(tài)的解決方案。同時我們也看到,由于采用服務(wù)器端保持狀態(tài)的方案在客戶端也需要保存一個標識,所以session機制也許需要借助于cookie機制來達成保存標記的目的。當程序需要為某個客戶端的請求創(chuàng)建一個session時,服務(wù)器一方面檢查這個客戶端的請求里是否已包含了一個session標記(稱為sessionid),假如已包含則說明以前已經(jīng)為此客戶端創(chuàng)建過session,服務(wù)器就按照sessionid把這個session檢索出來使用(檢索不到,會HYPERLINK""\t""新建一個),假如客戶端請求不包含sessionid,則為此客戶端創(chuàng)建一個session并且生成一個與此session相關(guān)聯(lián)的sessionid,sessionid的值應(yīng)當是一個既不會反復(fù),又不容易被找到規(guī)律以仿造的字符串,這個sessionid將被在本次響應(yīng)中返回給客戶端保存。?保存這個sessionid的方式可以采用cookie,這樣在交互過程中瀏覽器可以自動的按照規(guī)則把這個標記發(fā)揮給服務(wù)器。一般這個cookie的名字都是類似于SEEESIONID。但cookie可以被人為的嚴禁,則必須有其他機制以便在cookie被嚴禁時仍然可以把sessionid傳遞回服務(wù)器。因素:http協(xié)議是無狀態(tài)協(xié)議,通俗點說就是當你發(fā)送一次請求道服務(wù)器端,然后再次發(fā)送請求到服務(wù)器端,服務(wù)器是不知道你的這一次請求和上一次請求是來源于同一個人發(fā)送的。session就能很好解決這個問題靜態(tài)include和動態(tài)include的區(qū)別?(不大懂)1、靜態(tài)包含屬于編譯期包含(包含頁面和被包含的頁面在編譯期形成一個jsp文獻),動態(tài)包含屬于運營期包含(包含頁面和被包含的頁面分別編譯成兩個文獻,然后運營時把兩個文獻組裝起來);2、動態(tài)包含可以帶參數(shù);1)補充:動態(tài)INCLUDE用jsp:include動作實現(xiàn)

<jsp:includepage="included.jsp"flush="true"/>?它總是會檢查所含文獻中的變化,適合用于包含動態(tài)頁面,并且可以帶參數(shù)?<%@includefile="included.htm"%>

靜態(tài)INCLUDE用include偽碼實現(xiàn),定不會檢查所含文獻的合用于包含靜態(tài)頁面變化,2)動態(tài)HYPERLINK""\t""INCLUDE在使用的時候,會先解析所要包含的頁面(你例子中的HYPERLINK""included.jsp),解析后在和主頁面放到一起顯示;

靜態(tài)HYPERLINK""INCLUDE在使用的時候,不會解析所要包含的頁面(你例子中的included.htm),也就是說,不管你的included.htm中有什么,我的任務(wù)就是把你包含并顯示,其他的一概不管三.數(shù)據(jù)庫部分重要備注:此數(shù)據(jù)庫部分面試題不含SQL語句(含各類函數(shù))面試具體的題目,關(guān)于SQL語句的使用,請學(xué)生自己準備!SQL語言涉及哪三種類型,每種類型又涉及哪些語句?數(shù)據(jù)定義:createTable,AlterTable,DropTable,Creat(yī)e/DropIndex等(學(xué)生需要了解)數(shù)據(jù)操縱:select,insert,updat(yī)e,delete(這個最重要,學(xué)生需要開展學(xué)習(xí)準備)數(shù)據(jù)控制:grant,revokeSQL語言包含4個部分:數(shù)據(jù)定義語言(DDL),例如:CREATE、DROP、ALTER等語句。數(shù)據(jù)操作語言(DML),例如:INSERT(插入)、UPDATE(修改)、DELETE(刪除)語句。數(shù)據(jù)查詢語言(DQL),例如:SELECT語句。數(shù)據(jù)控制語言(DCL),例如:GRANT、REVOKE、COMMIT、ROLLBACK等語句。SQL語言涉及三種重要程序設(shè)計語言類別的語句:數(shù)據(jù)定義語言(DDL),數(shù)據(jù)操作語言(DML)及數(shù)據(jù)控制語言(DCL)。Sql題表A(varchar(32)NAME,intGRADE)數(shù)據(jù):ZHANGSHAN80,LISI60,WANGWU84?表B(varchar(32)NAME,intAGE)

數(shù)據(jù):ZHANGSHAN26,LISI24,WANGWU26,WUTIAN26?1)寫SQL語句得到如下查詢結(jié)果:

NAME

GRADE

AGE

ZHANGSHAN

80

26

LISI

60

24?WANGWU

84

26?WUTIAN

NULL

26答:select*fromArightjoinBonA.NAME=B.NAMEHYPERLINK""\t""LEFTHYPERLINK""JOIN或HYPERLINK""LEFTOUTERHYPERLINK""\t""JOIN。?左向外聯(lián)接的結(jié)果集涉及HYPERLINK""\t""LEFTOUTER子句中指定的左表的所有行,而不僅僅是聯(lián)接列所匹配的行。假如左表的某行在右表中沒有匹配行,則在相關(guān)聯(lián)的結(jié)果集行中右表的所有選擇列表列均為空值。

HYPERLINK""RIGHTHYPERLINK""\t""JOIN或HYPERLINK""\t""RIGHTOUTERJOIN。

右向外聯(lián)接是左向外聯(lián)接的反向聯(lián)接。將返回右表的所有行。假如右表的某行在左表中沒有匹配行,則將為左表返回空值。2)寫SQl語句根據(jù)名字(NAME)相同按年齡(AGE)分組得到不同年齡的人的平均成績,并寫出結(jié)果。答:avg(grade)groupbyname,age在emp表中略掉名字中不具有‘LL’的雇員,然后按照部門進行分組,按部門平均薪水大于2023的組,按照平均薪資的倒序排列。答:Selectavg(sal)FromempWhereenamenotlike‘%LL’GroupbydeptnoHavingsag(sal)>2023Orderbyavg(sal)desc;平均薪資最高的部門的部門編號答:SelectdeptnoFromempGroupbydeptnoWhereavg(sal)=selectmax(avg(sal))fromempgroupbydeptno)求部門平均薪資的等級答:Selectdeptno,avg_sal,gradeFromselect(deptno,avg(sal)avg_salfromempgroupbydeptno)t,SalgradesWhereavg_salbetweens.losalands.hisal比普通用戶的最高薪資還要高的經(jīng)理人的名稱Selectename,salFromempWheresal>(max(sal)fromempwhereempnonotin(selectdistinctmgrfromempwheremgrisnotnull)Andempnoin(Selectdistinctmgrfromempwheremgridnotnull))求薪資最高的五名員工Selectename,salFrom(selectsalfromemporderbysaldesc)Whererownum<=5薪資最高的第六到第十位雇員Selectename,salFrom(selectename,sal,rownumrfrom(selectmax(sal)fromemporderbysaldescWhererownum<10)Wherer>5andr<10簡要介紹一下數(shù)據(jù)庫有哪些常用對象?常用的數(shù)據(jù)庫對象涉及:表、視圖、索引、函數(shù)、存儲過程、觸發(fā)器等。什么是數(shù)據(jù)庫中的視圖,其好處是什么?1、視圖是一個虛擬表,是由查詢語句產(chǎn)生的,不是真實存在的表;同真實的表同樣,視圖包含一系列帶有名稱的列和行數(shù)據(jù)。2、它重要出于兩種因素:安全因素,視圖可以隱藏一些數(shù)據(jù),如:員工信息表,可以用視圖只顯示姓名,HYPERLINK""\t"_blank"年齡、性別等通用信息,而隱藏工資等敏感信息,另一因素是多表連接,可使復(fù)雜的查詢易于理解和使用。數(shù)據(jù)庫中索引的好處是什么?一個數(shù)據(jù)庫表,經(jīng)常要進行添加和刪除記錄的操作,應(yīng)當為該表建多個索引嗎?1、索引是一種特殊的查詢表,簡樸的理解就是在數(shù)據(jù)庫中,將數(shù)據(jù)按一定的順序進行排列(分物理索引:只有1個和邏輯索引:可以有多個),用來快速訪問數(shù)據(jù)庫表格或者視圖里的數(shù)據(jù),查詢的時候,可以有效提高查詢速度。2、假如一個表要頻繁的進行添加和刪除記錄的操作(不是查詢),不建議建立多個索引,由于添加和刪除記錄,都需要調(diào)整索引,增長數(shù)據(jù)庫承擔(dān),影響性能。什么是數(shù)據(jù)庫游標?1、游標是對查詢出來的結(jié)果集進行解決的一個對象,游標可以定在該集合中的特定行,從而根據(jù)游標從結(jié)果集中檢索出一行或多行。什么是事務(wù)?1、事務(wù)是一系列的HYPERLINK""\t"_blank"數(shù)據(jù)庫操作,是數(shù)據(jù)庫應(yīng)用的基本邏輯單位,事務(wù)由事務(wù)開始(begintransaction)和事務(wù)結(jié)束(endtransaction)之間執(zhí)行的全體操作組成。2、事務(wù)具有如下特性:(其中原子性最為重要,必須掌握)原子性(atomicity)一個事務(wù)是一個不可分割的工作單位,事務(wù)中涉及的諸操作要么都做,要么都不做。一致性(consistency)事務(wù)必須是使HYPERLINK""\t"_blank"數(shù)據(jù)庫從一個一致性狀態(tài)變到另一個一致性狀態(tài)。隔離性(isolation)一個事務(wù)的執(zhí)行不能被其他事務(wù)干擾。即一個事務(wù)內(nèi)部的操作及使用的數(shù)據(jù)對并發(fā)的其他事務(wù)是隔離的,并發(fā)執(zhí)行的各個事務(wù)之間不能互相干擾。持久性(durability)連續(xù)性也稱永久性(permanence),指一個事務(wù)一旦提交,它對HYPERLINK""\t"_blank"數(shù)據(jù)庫中數(shù)據(jù)的改變就應(yīng)當是永久性的。接下來的其他操作或故障不應(yīng)當對其有任何影響。數(shù)據(jù)庫中日記的作用是什么?日記的作用是記錄所有對數(shù)據(jù)庫數(shù)據(jù)的修改,重要是保護數(shù)據(jù)庫以防止故障發(fā)生后,對數(shù)據(jù)庫進行恢復(fù);什么是主鍵和外鍵?1、主鍵和外鍵是用來建立數(shù)據(jù)庫表之間關(guān)聯(lián)關(guān)系的;2、舉例來說,有一個學(xué)生表(學(xué)生學(xué)號、姓名、班級編號等信息)和一個班級表(班級編號、班級名稱),通過編輯編號建立班級表和學(xué)生表之間一對多的關(guān)聯(lián),則班級表中班級編號是主鍵,學(xué)生表中的班級編號是外鍵。主鍵是表格里的(一個或多個)字段,只用來定義表格里的行;主鍵里的值總是唯一的。外鍵是一個用來建立兩個表格之間關(guān)系的約束。這種關(guān)系一般都涉及一個表格里的主鍵字段與此外一個表(也許是同一表)里的字段。那么這些相連的字段就是外鍵。什么是數(shù)據(jù)庫中的存儲過程和觸發(fā)器?存儲過程的好處?1、數(shù)據(jù)庫中的存儲過程是用于定義的一系列的sql語句的集合(含控制語句),涉及特定表和其他對象的任務(wù),用戶可以調(diào)用存儲過程(有些類似java里的方法);2、觸發(fā)器(trigger)是個特殊的HYPERLINK""\t"_blank"存儲過程,它的執(zhí)行不是由程序調(diào)用,也不是手工啟動,而是由事件來觸發(fā),HYPERLINK""\t"_blank"比如當對一個表進行操作(insert,delete,updat(yī)e)時就會激活它執(zhí)行。3、存儲過程的好處:SQL語句已經(jīng)預(yù)編繹過了,因此運營的速度比較快;常用功能的集合,提高了重用性;用戶只需要調(diào)用存儲過程,不需要逐個寫存儲過程中的語句,減少了數(shù)據(jù)傳輸量;內(nèi)連接和外連接的區(qū)別?1、內(nèi)連接是保證兩個表中所有的行都要滿足連接條件,而外連接則不然。2、在外連接中,某些不滿條件的列也會顯示出來,也就是說,只限制其中一個表的行,而不限制另一個表的行。分左連接、右連接、全連接(笛卡爾集)三種。請介紹一下數(shù)據(jù)庫連接池技術(shù)?1、數(shù)據(jù)庫連接池技術(shù),就是數(shù)據(jù)庫啟動時會建立一定數(shù)量的數(shù)據(jù)庫連接(也稱為池連接),并一直維持不少于此數(shù)目的池連接。2、客戶端程序需要連接數(shù)據(jù)庫時,數(shù)據(jù)庫連接池會返回一個未使用的池連接給數(shù)據(jù)庫使用。假如當前沒有空閑連接,數(shù)據(jù)庫連接池就新建一定數(shù)量的連接。當使用的池連接調(diào)用完畢后,連接池將此連接表記為空閑,其他調(diào)用就可以使用這個連接。這樣做的目的是提高了應(yīng)用程序訪問數(shù)據(jù)庫的性能。MySQL、Oracle、SQLServer各數(shù)據(jù)庫服務(wù)的端標語?1、MySQL:33062、Oracle:15213、SQLServer:1433Oracle和SQLServer的分頁有什么區(qū)別?在SQLServer中使用TO(shè)P分頁,在Oracle中用ROWNUM,或分析函數(shù)ROW_NUMBER,在MySQL中用Limit。mysql和oracle區(qū)別1.組函數(shù)用法規(guī)則mysql中組函數(shù)在select語句中可以隨意使用,但在oracle中假如查詢語句中有組函數(shù),那其他列名必須是組函數(shù)解決過的,或者是groupby子句中的列否則報錯2.自動增長的數(shù)據(jù)類型解決MYSQL有自動增長的數(shù)據(jù)類型,插入記錄時不用操作此字段,會自動獲得數(shù)據(jù)值。ORACLE沒有自動增長的數(shù)據(jù)類型,需要建立一個自動增長的序列號,插入記錄時要把序列號的下一個值賦于此字段。3.單引號的解決MYSQL里可以用雙引號包起字符串,ORACLE里只可以用單引號包起字符串。如何對數(shù)據(jù)庫進行優(yōu)化?1、先優(yōu)化SQL語句;2、表級別優(yōu)化:比如說建立索引;3、數(shù)據(jù)庫級別優(yōu)化:比如說數(shù)據(jù)庫參數(shù)設(shè)立,例如連接池數(shù)量;JDBC連接數(shù)據(jù)庫的環(huán)節(jié)?加載JDBC驅(qū)動程序在連接數(shù)據(jù)庫之前要把連接數(shù)據(jù)庫的驅(qū)動加載到JVM(Java虛擬機),?這通過java.lang.Class類的靜態(tài)方法forName(StringclassName)實現(xiàn)。創(chuàng)建數(shù)據(jù)庫的連接;要連接數(shù)據(jù)庫,需要向java.sql.DriverManager請求并獲得Connection對象,?該對象就代表一個數(shù)據(jù)庫的連接。?使用DriverManager的getConnectin(Stringurl,Stringusername,?Stringpassword)方法傳入指定的欲連接的數(shù)據(jù)庫的途徑、數(shù)據(jù)庫的用戶名和?密碼來獲得。創(chuàng)建一個Statement對象;要執(zhí)行SQL語句,必須獲得java.sql.Stat(yī)ement實例,Statement實例分為以下3

種類型:

1、執(zhí)行靜態(tài)SQL語句?通常通過Statement實例實現(xiàn)。

2、執(zhí)行動態(tài)SQL語句?通常通過PreparedStatement實例實現(xiàn)。?3、執(zhí)行數(shù)據(jù)庫存儲過程。通常通過CallableStat(yī)ement實例實現(xiàn)。執(zhí)行SQL語句;Statement接口提供了三種執(zhí)行SQL語句的方法:executeQuery、executeUpdate

和execute?1、ResultSetexecuteQuery(StringsqlString):執(zhí)行查詢數(shù)據(jù)庫的SQL語句?,返回一個結(jié)果集(ResultSet)對象。

2、intexecuteUpdat(yī)e(StringsqlString):用于執(zhí)行INSERT、UPDATE或

DELETE語句以及SQLDDL語句,如:CREATETABLE和DROPTABLE等?3、execute(sqlString):用于執(zhí)行返回多個結(jié)果集、多個更新計數(shù)或兩者組合的返回并解決結(jié)果;兩種情況:1、執(zhí)行更新返回的是本次操作影響到的記錄數(shù)。

2、執(zhí)行查詢返回的結(jié)果是一個ResultSet對象。?ResultSet包含符合SQL語句中條件的所有行,并且它通過一套get方法提供了對這些?行中數(shù)據(jù)的訪問。?使用結(jié)果集(ResultSet)對象的訪問方法獲取數(shù)據(jù):關(guān)閉連接;操作完畢以后要把所有使用的JDBC對象全都關(guān)閉,以釋放JDBC資源,關(guān)閉順序和聲

明順序相反:

1、關(guān)閉記錄集

2、關(guān)閉聲明

3、關(guān)閉連接對象JDBC中的PreparedStatement相比Statement的好處1、PreparedStat(yī)ement是Statement的子接口;2、PreparedStatement有綁定參數(shù)的功能,避免SQL注入,安全性更好;3、PreparedStat(yī)ement對SQL語句有預(yù)編譯的功能,所以性能更好;四.其他部分xml有哪些解析技術(shù)?區(qū)別是什么?XML的DOM其實就是映射在內(nèi)存中的數(shù)據(jù).XML是樹型結(jié)構(gòu),操作很麻煩.DOM的出現(xiàn)就是解決這個問題的.運用DOM,可以輕松地在節(jié)點間進行讀取,增長,刪除等一系列操作User.dir(用戶工作目錄)1、有DOM,SAX等2、DOM:解決大型文獻時性能比較差,因素是DOM需要把整個文檔裝入內(nèi)存,適合對XML的隨機訪問;DOM:將文檔一次性所有加載到內(nèi)存中然后構(gòu)建DOM樹,根據(jù)XML文檔的屬性文本建出相應(yīng)的結(jié)點。優(yōu)點:可以整體的把握文檔,對文檔結(jié)點進行增刪改。缺陷:文獻大時加載有延遲,內(nèi)存消耗嚴重SAX:是事件驅(qū)動型的XML解析方式,它順序讀取XML文獻,不需要一次所有裝載整個文獻,當碰到像文檔開頭、文檔結(jié)束或標簽開頭和結(jié)束時,會觸發(fā)一個事件,用戶可以進行解決;SAX:以事件流的方式解析文檔,不會創(chuàng)建文檔,只是給我們的代碼發(fā)送事件我們根據(jù)事件解決所需要的數(shù)據(jù)優(yōu)點:沒有延遲,內(nèi)存消耗少,隨時可以停止解析創(chuàng)建XML文獻環(huán)節(jié):創(chuàng)建節(jié)點(給結(jié)點添加屬性,文本)將節(jié)點進行有機的關(guān)聯(lián)創(chuàng)建XML文檔(Documentdocument=newDocument(usersElement);)將文檔寫到硬盤XMLOutputterxmlOutputter=newXMLOutputter(format);xmlOutputter.output(document,newFileOutputStream(path));解析XML文檔環(huán)節(jié):獲得解析器講XML文獻以流的方式讀取到內(nèi)存中解析器開始解析輸入流獲取文檔的根節(jié)點然后對文獻進行修改將文檔寫到硬盤xml文檔在實際項目中有哪些應(yīng)用?1、配置文獻中使用XML文檔;2、XML是標準的文獻傳輸格式,異構(gòu)系統(tǒng)數(shù)據(jù)互換常采用XML;五.流行框架與技術(shù)什么是MVC?常用的MVC框架有哪些?M:Model模型層重要用來解決業(yè)務(wù)邏輯,承載數(shù)據(jù);Model又叫實體類,這樣,Model在三層架構(gòu)中的位置,和int,string等變量的地位就同樣了,沒有其它的目的,僅用于數(shù)據(jù)的存儲而已,只但是它存儲的是復(fù)雜的數(shù)據(jù)2、V:View視圖層重要用來做頁面顯示的3、C:Control控制層重要用來進行業(yè)務(wù)流程控制;4、常用的MVC框架涉及:Struts、Struts2、SpringMVC;談?wù)凷truts的工作流程(或運營原理)備注:下面的描述必須轉(zhuǎn)換成自己的語言進行表述?。?這道題非常重要,面試官關(guān)于Struts的很多問題都可以從本題中找到答案。1、Struts是一個應(yīng)用于Web層的MVC框架;2、以ActionServlet作為核心控制器,接受用戶所有請求,并將請求分發(fā)到不同的Action中進行解決,并將響應(yīng)結(jié)果返回給客戶端;3、我們可以在web.xml文獻中將符合某種特性的所有請求交給這個核心控制器進行解決,這核心控制器再參照一個配置文獻(通常為/WEB-INF/struts-config.xml)將各個請求分別分派給不同的Action去解決。4、ActionServlet把請求交給Action去解決之前,會將請求參數(shù)封裝成一個formbean對象。備注:假如面試官需要解釋一下formbean,則按如下思緒回答:ActionServlet把formbean對象傳遞給action的execute方法之前,也許會調(diào)用formbean的validate方法進行校驗,只有校驗通過后才將這個formbean對象傳遞給action的execute方法,否則,它將返回一個錯誤頁面,這個錯誤頁面由input屬性指定,(看配置文獻)作者為什么將這里命名為input屬性,而不是error屬性,我們后面結(jié)合實際的運營效果進行分析。5、Action執(zhí)行完后要返回顯示的結(jié)果視圖,這個結(jié)果視圖是用一個ActionForward對象來表達的,actionforward對象通過struts-config.xml配置文獻中的配置關(guān)聯(lián)到某個jsp頁面,由于程序中使用的是在struts-config.xml配置文獻為jsp頁面設(shè)立的邏輯名,這樣可以實現(xiàn)action程序代碼與返回的jsp頁面名稱的解耦。談?wù)凷truts2的工作流程(或運營原理)備注:下面的描述必須轉(zhuǎn)換成自己的語言進行表述!?。∵@道題非常重要,面試官關(guān)于Struts2的很多問題都可以從本題中找到答案。1、客戶端發(fā)送一個指向Servlet容器(例如Tomcat(yī))的請求,服務(wù)器接受請求,將HttpServletRequest傳進來。2、這個請求通過一系列的過濾器(Filter)3、接著FilterDispatcher(核心控制器)被調(diào)用,將request中所攜帶的數(shù)據(jù)放入值棧(ValueStack);4、FilterDispat(yī)cher(核心控制器)詢問ActionMapper來決定這個請求是否需要調(diào)用某個Action,把請求的解決交給ActionProxy;5、ActionProxy通過ConfigurationManager詢問框架的配置文獻(struts.xml),找到調(diào)用的Action類;6、ActionProxy創(chuàng)建一個ActionInvocation對象,執(zhí)行其execute方法;?7、在調(diào)用Action的過程前后,涉及到相關(guān)攔截器(Intercepter)的調(diào)用;8、一旦Action執(zhí)行完畢,根據(jù)struts.xml中的配置找到相應(yīng)的返回結(jié)果(JSP顯示結(jié)果)。說說struts1與struts2的區(qū)別備注:下面的描述必須轉(zhuǎn)換成自己的語言進行表述!!!1、都是MVC的WEB框架;2、struts1的前端控制器是一個Servlet,名稱為ActionServlet,struts2的前端控制器是一個filter,在struts2.0中叫FilterDispatcher,在struts2.1中叫StrutsPrepareAndExecuteFilter;3、struts1的action需要繼承Action類,struts2的action可以不繼承任何類;struts1對同一個途徑的所有請求共享一個Action實例(單例模式),struts2對同一個途徑的每個請求分別使用一個獨立Action實例對象(多例模式),所有對于struts2的Action不用考慮線程安全問題。4、在struts1中使用formbean封裝請求參數(shù),在struts2中直接使用action的屬性來封裝請求參數(shù)。(不懂)5、struts1中的多個業(yè)務(wù)方法放在一個Action中時(即繼承Dispat(yī)chAction時),要么都校驗,要么都不校驗;對于struts2,可以指定只對某個方法進行校驗,當一個Action繼承了ActionSupport且在這個類中只編寫了validateXxx()方法,那么則只對Xxx()方法進行校驗。Struts優(yōu)缺陷優(yōu)點:1、實現(xiàn)MVC模式,結(jié)構(gòu)清楚,使開發(fā)者只關(guān)注業(yè)務(wù)邏輯的實現(xiàn);2、有豐富的tag可以用,Struts的標記庫(Taglib),如能靈活動用,則能大大提高開發(fā)效率;3、通過配置文獻,使系統(tǒng)的脈絡(luò)更加清楚。一個配置文獻,即可把握整個系統(tǒng)各部分之間的聯(lián)系,這對于后期的維護有著很大的好處。4、Struts提供了兩周異常解決方式,聲明式異常解決和編程式異常解決——此處學(xué)生需要自己多看看相關(guān)資料,可以進一步回答面試官問題;5、對國際化進行支持,支持I18N;缺陷:1、實現(xiàn)MVC模式,代碼復(fù)雜度提高;2、需要維護配置文獻,比較麻煩;什么是Hibernate,好處是什么?1、Hibernate是一個操作數(shù)據(jù)庫的框架,實現(xiàn)了對JDBC的封裝;2、Hibernat(yī)e是一個ORM(對象關(guān)系映射)框架,我們在寫程序的時候,用的是面向?qū)ο蟮姆椒ǎ窃陉P(guān)系型數(shù)據(jù)庫里,存的是一條條的記錄;為了用純面向?qū)ο蟮乃枷虢鉀Q問題,所以需要將程序中的對象和數(shù)據(jù)庫中的記錄建立起映射關(guān)系,ORM就是將對象和數(shù)據(jù)庫中的記錄建立起映射的技術(shù),而Hibernate就是這樣一個ORM框架;3、Hibernate簡化了代碼編寫,本來JDBC需要寫一堆代碼完畢的功能,Hibernate需要少量的代碼即可以實現(xiàn);4、Hibernate屏蔽了數(shù)據(jù)庫的差異,增長了對不同數(shù)據(jù)庫的可移植性(通過方言);5、使用Hibernate的基本流程是:配置Configuration對象、產(chǎn)生SessionFactory、創(chuàng)建session對象,啟動事務(wù),完畢CRUD操作,提交事務(wù),關(guān)閉session;6、使用Hibernate時,先要配置hibernate.cfg.xml文獻,其中配置數(shù)據(jù)庫連接信息和方言等,還要為每個實體配置相應(yīng)的hbm.xml文獻,hibernate.cfg.xml文獻中需要登記每個hbm.xml文獻。hibernate中的update()和saveOrUpdat(yī)e()的區(qū)別1、update針對

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論