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

下載本文檔

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

文檔簡(jiǎn)介

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

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

jvm有一個(gè)mainmemory(主存儲(chǔ)器),而每個(gè)線程有自己的workingmemory(工作的存儲(chǔ)器),一個(gè)線程對(duì)一個(gè)variable(變量)進(jìn)行操作時(shí),都要在自己的workingmemory里面建立一個(gè)copy,操作完之后再寫(xiě)入main

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

->

use&assign

->

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

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

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

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

數(shù)據(jù):ZHANGSHAN26,LISI24,WANGWU26,WUTIAN26?1)寫(xiě)SQL語(yǔ)句得到如下查詢結(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)接列所匹配的行。假如左表的某行在右表中沒(méi)有匹配行,則在相關(guān)聯(lián)的結(jié)果集行中右表的所有選擇列表列均為空值。

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

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

種類型:

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

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

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

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

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

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

明順序相反:

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

2、關(guān)閉聲明

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論