面試參考題部分答案_第1頁
面試參考題部分答案_第2頁
面試參考題部分答案_第3頁
面試參考題部分答案_第4頁
面試參考題部分答案_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、面試參考題: JAVA:1) 靜態(tài)塊、動態(tài)塊、構(gòu)造函數(shù)、繼承函數(shù)等的執(zhí)行順序靜態(tài)塊動態(tài)塊構(gòu)造函數(shù)繼承函數(shù)2) 重載和重寫的區(qū)別重載是讓類以統(tǒng)一的方式處理不同類型數(shù)據(jù)的一種手段。多個同名函數(shù)同時存在,具有不同的參數(shù)個數(shù)/類型。重寫是父類與子類之間的多態(tài)性,對父類的函數(shù)進行重新定義。如果在子類中定義某方法與其父類有相同的名稱和參數(shù)。3) 單例模式、工廠模式的理解工廠模式主要是為創(chuàng)建對象提供過渡接口,以便將創(chuàng)建對象的具體過程屏蔽隔離起來,達到提高靈活性的目的。單例模式確保某個類只有一個實例,而且自行實例化并向整個系統(tǒng)提供這個實例。4) 使用的三大框架Spring、Struts、Hibernate 數(shù)

2、據(jù)庫問一些查詢,用哪些數(shù)據(jù)庫語句關(guān)鍵字,所以要掌握數(shù)據(jù)庫常用操作。增刪改查是必須要掌握的,其他像order by、group by、排序、內(nèi)外連接等,了解存儲過程的寫法更好?;镜膯栴}:1、 HashMap存儲機制當程序試圖將一個 key-value 對放入 HashMap 中時,程序首先根據(jù)該 key 的hashCode() 返回值決定該 Entry 的存儲位置:如果兩個 Entry 的 key 的 hashCode() 返回值相同,那它們的存儲位置相同。如果這兩個 Entry 的 key 通過 equals 比較返回 true,新添加 Entry 的 value 將覆蓋集合中原有 Entr

3、y 的 value,但 key 不會覆蓋。如果這兩個 Entry 的 key 通過 equals 比較返回 false,新添加的 Entry 將與集合中原有 Entry 形成 Entry 鏈,而且新添加的 Entry 位于 Entry 鏈的頭部2、 hashCode與equals的區(qū)別與聯(lián)系1、 如果兩個對象equals,Java運行時環(huán)境會認為他們的hashcode一定相等。 2、 如果兩個對象不equals,他們的hashcode有可能相等。 3、 如果兩個對象hashcode相等,他們不一定equals。 4、如果兩個對象hashcode不相等,他們一定不equals。3、 Spring

4、的核心機制Spring容器作為超級大工廠,負責創(chuàng)建、管理所有的Java對象,這些Java對象被稱為Bean。Spring容器管理容器中Bean之間的依賴關(guān)系,Spring使用一種被稱為“依賴注入”的方式來管理Bean之間的依賴關(guān)系。4、 Spring IOC和AOP的理解IoC:當某個角色需要另外一個角色協(xié)助的時候,在傳統(tǒng)的程序設(shè)計過程中,通常由調(diào)用者來創(chuàng)建被調(diào)用者的實例。但在spring中創(chuàng)建被調(diào)用者的工作不再由調(diào)用者來完成,因此稱為控制反轉(zhuǎn)。創(chuàng)建被調(diào)用者的工作由spring來完成,然后注入調(diào)用者因此也稱為依賴注入。AOP:面向切面編程(AOP)完善spring的依賴注入(DI),面向切面編

5、程在spring中主要表現(xiàn)為兩個方面1.面向切面編程提供聲明式事務(wù)管理2.spring支持用戶自定義的切面5、 springmvc的工作流程1、 首先用戶發(fā)送請求-前端控制器(DispatcherServlet),前端控制器根據(jù)請求信息(如URL)來決定選擇哪一個頁面控制器(Controller)進行處理并把請求委托給它2、 頁面控制器接收到請求后,進行功能處理,首先需要收集和綁定請求參數(shù)到一個對象,這個對象在Spring Web MVC中叫命令對象,并進行驗證,然后將命令對象委托給業(yè)務(wù)對象進行處理;處理完畢后返回一個ModelAndView(模型數(shù)據(jù)和邏輯視圖名)3、前端控制器收回控制權(quán),然

6、后根據(jù)返回的邏輯視圖名,選擇相應(yīng)的視圖進行渲染,并把模型數(shù)據(jù)傳入以便視圖渲染4、前端控制器再次收回控制權(quán),將響應(yīng)返回給用戶,至此整個結(jié)束。6、 重載和重寫的區(qū)別7、 使用過哪些ORM框架,Hibernit與MyBatis、iBaits的區(qū)別聯(lián)系或者原理Hibernate、MyBatis、iBatis1、Mybatis實現(xiàn)了接口綁定,使用更加方便 2、對象關(guān)系映射的改進,效率更高 3、MyBatis采用功能強大的基于OGNL的表達式來消除其他元素 8、 依賴注入的方式接口注入Set注入構(gòu)造注入9、 Strings=newStirng(xyx),創(chuàng)建了幾個對象兩個10、 Struts1和Strut

7、s2的action的區(qū)別Stuts1有個核心控制器,但是只提供了一個接口,也就是execute,還要配置actionform之類的,很麻煩,所以依賴性比較強;而Stuts2是針對攔截器開發(fā)的,也就是所謂的AOP思想,可以配置多個action,用起來比較方便,但是因為請求之前的攔截器有一些注入的操作,速度相對Stuts1來說慢一點。11、 多線程的問題,怎么樣創(chuàng)新線程?線程安全怎么理解?怎么避免死鎖?如何創(chuàng)建新線程:繼承Thread類創(chuàng)建線程類通過Runnable接口創(chuàng)建線程類通過Callable和Future創(chuàng)建線程線程安全:線程安全就是多線程訪問時,采用了加鎖機制,當一個線程訪問該類的某個數(shù)

8、據(jù)時,進行保護,其他線程不能進行訪問直到該線程讀取完,其他線程才可使用。不會出現(xiàn)數(shù)據(jù)不一致或者數(shù)據(jù)污染。常用的避免死鎖的方法:1、有序資源分配法2、銀行家算法12、 多態(tài)的具體表現(xiàn)多態(tài)就是允許方法重名 參數(shù)或返回值可以是父類型傳入或返回。13、 JAVA常用設(shè)計模式單例設(shè)計模式工廠設(shè)計模式代理設(shè)計模式觀察者設(shè)計模式適配器模式14、 servlet的生命周期,Cookie等Servlet:初始化階段運行階段銷毀階段Cookie:Cookie c = new Cookie(username,john);c.setMaxAge(60);/60秒的意思c.setMaxAge(60*60);/一小時c.

9、setMaxAge(365*24*60*60);/一年如果不設(shè)置過期時間,則表示這個cookie生命周期為瀏覽器會話期間,只要關(guān)閉瀏覽器窗口,cookie就消失了。15、 前端的一些問題,如EasyUI的控件用過多少?重寫過沒有Css類定義:diveasyui-window window窗口樣式diveasyui-panel 面板aeasyui-linkbutton 鏈接類型的按鈕input/textareaeasyui-validatebox 字段驗證uleasyui-tree 樹形結(jié)構(gòu)tableeasyui-datagrid 表格diveasyui-tabs tab容器div menu-s

10、ep 菜單分隔線aeasyui-splitbutton 菜單列diveasyui-accordion手風琴式下拉框selecteasyui-combobox 組合下拉框selecteasyui-combotree 組合樹形框bodydiveasyui-layout 布局diveasyui-menu菜單aeasyui-menubutton菜單按鈕inputeasyui-numberbox 數(shù)字輸入框Js定義:Window window窗口.tree 樹形結(jié)構(gòu).datagrid 表格.combobox 組合下拉框.combotree 組合樹形框.dialog對話框.draggable 可自由拖動的

11、塊.linkbutton鏈式按鈕.messager消息框.pagination頁碼工具條16、 JAVA 3大框架用過哪些,對那個比較熟,會對候選人比較熟的框架進行進一步面試,如struct2流程17、 Java是單繼承還是多繼承?使用接口的目的在哪里?單繼承接口的作用就是把使用接口的人和實現(xiàn)接口的人分開,實現(xiàn)接口的人不必要關(guān)心誰去使用,而使用接口的人也不用關(guān)心誰實現(xiàn)的接口,由接口將他們聯(lián)系在一起。18、 全局變量和局部變量的生命周期是怎么樣的?作用域是什么?全局變量:服務(wù)停的時候銷毀局部變量,在方法調(diào)用完就銷毀全局變量就是在類的整個范圍之內(nèi),都有效的變量局部變量就是在類中某個方法函數(shù)內(nèi)或某個

12、子類內(nèi),有效的變量19、 同步異步的區(qū)別,怎么實現(xiàn)?同步:提交請求-等待服務(wù)器處理-處理完畢返回 這個期間客戶端瀏覽器不能干任何事異步: 請求通過事件觸發(fā)-服務(wù)器處理(這是瀏覽器仍然可以作其他事情)-處理完畢同步實現(xiàn):ThreadLocal synchronized( ) wait() 與 notify() volatile異步實現(xiàn):AsyncTaskHandler20、 面試官比較喜歡主動挖掘、主動思考的人,比如像用的框架,能夠主動去了解過框架的原理,這樣更好。21、 面試時要表達思路清晰、吐詞清楚,不能聲音太小,否則面試官聽不到,影響面試結(jié)果。面試不用緊張。21.一個.java源文件中是否

13、可以包括多個類(不是內(nèi)部類)?有什么限制?可以限制:一個文件中只能有一個public類并且此public類必須與文件名相同22、 .Java有沒有g(shù)oto? 1、java有g(shù)oto2、但是java的goto是保留字3、保留字的意思就是不排除以后會啟用,變成關(guān)鍵字。java有如下保留字:byValue, cast, future, generic, inner, operator, outer, rest, var , goto ,const23.說說&和&的區(qū)別。電路問題:對于:& - 不管怎樣,都會執(zhí)行&符號左右兩邊的程序?qū)τ冢? - 只有當符號&左邊程序為真(true)后,才會執(zhí)行符號&右

14、邊的程序。運算規(guī)則:對于:& - 只要左右兩邊有一個為false,則為false;只有全部都為true的時候,結(jié)果為true對于:& - 只要符號左邊為false,則結(jié)果為false;當左邊為true,同時右邊也為true,則結(jié)果為true24. 在JAVA中如何跳出當前的多重嵌套循環(huán)? 可以在外面的循環(huán)語句前定義一個標號,然后在里層循環(huán)體的代碼中使用帶有標號的的break語句,即可跳出25. switch語句能否作用在byte上,能否作用在long上,能否作用在String上? switch可作用于char byte short intswitch可作用于char byte short in

15、t對應(yīng)的包裝類switch不可作用于long double float boolean,包括他們的包裝類switch中可以是字符串類型,String(jdk1.7之后才可以作用在string上)switch中可以是枚舉類型26. char型變量中能不能存貯一個中文漢字?為什么? 在Java中,char類型占2個字節(jié),而且Java默認采用Unicode編碼,以個Unicode碼是16位,所以一個Unicode碼占兩個字節(jié),Java中無論漢子還是英文字母都是用Unicode編碼來表示的。所以,在Java中,char類型變量可以存儲一個中文漢字。27. 使用final關(guān)鍵字修飾一個變量時,是引用不能

16、變,還是引用的對象不能變? 使用 final 關(guān)鍵字修飾一個變量時,是指引用變量不能變,引用變量所指向的對象中的內(nèi)容還是可以改變的。28. =和equals方法究竟有什么區(qū)別?=操作符專門用來比較兩個變量的值是否相等,也就是用于比較變量所對應(yīng)的內(nèi)存中所存儲的數(shù)值是否相同equals方法是用于比較兩個獨立對象的內(nèi)容是否相同,就好比去比較兩個人的長相是否相同,它比較的兩個對象是獨立的。29. 靜態(tài)變量和實例變量的區(qū)別? 在語法定義上的區(qū)別:靜態(tài)變量前要加static關(guān)鍵字,而實例變量前不加。在程序運行時的區(qū)別:實例變量屬于某個對象的屬性,必須創(chuàng)建了實例對象,其中的實例變量才會被分配空間,才能使用這

17、個實例變量。靜態(tài)變量不屬于某個實例對象,而是屬于類,所以也稱為類變量,只要程序加載了類的字節(jié)碼文件,不用創(chuàng)建任何實例象,靜態(tài)變量就會被分配空間,靜態(tài)變量就可以被使用了。 總之,實例變量必須創(chuàng)建對象后才可以通過這個對象來使用,靜態(tài)變量則可以直接使用類名來引用。30. 是否可以從一個static方法內(nèi)部發(fā)出對非static方法的調(diào)用? 不可以。因為非static方法要與對象關(guān)聯(lián)在一起,必須創(chuàng)建一個對象后,才可以在該對象上進行方法的調(diào)用,而static方法調(diào)用時不需要創(chuàng)建對象,可以直接調(diào)用。也就是說,一個static方法被調(diào)用時,可能還沒有創(chuàng)建任何實例對象,所以,一個static方法內(nèi)部不可以發(fā)出對

18、非static方法的調(diào)用。31. Integer與int的區(qū)別int是java提供的8種基本數(shù)據(jù)類型之一。Java為每個原始類型提供了封裝類,Integer是Java為int提供的包裝類。int的默認值是0,而Integer的默認值是null,即Integer可以區(qū)分出來未賦值和值為0的區(qū)別,int則無法表達出來未賦值的情況,例如想要表達出沒有參加考試和考試成績?yōu)?的區(qū)別,則只能用Integer。32. 請說出作用域public,private,protected,以及不寫時的區(qū)別作用域同一類同一包子類中不同包publicprotecteddefualt(friendly)privatepub

19、lic:接口訪問權(quán)限protected:繼承訪問權(quán)限default:包訪問權(quán)限private:你無法訪問(除了包含該成員的類以外,其他任何類都無法訪問這個成員)33. Overload和Override的區(qū)別。Overloaded的方法是否可以改變返回值的類型? Overload:重載Override:重寫重載:同一個類中,方法名相同,參數(shù)列表不同。與返回值類型無關(guān)。重寫:存在于子父類,或者子父接口中,方法聲明相同。Overload的方法可以改變返回值的類型,因為它與返回值類型無關(guān)。34. 構(gòu)造器Constructor是否可被override? 構(gòu)造器Constructor不能被繼承,因此不能

20、重寫Overriding,但可以被重載Overloading。35. 接口是否可繼承接口? 抽象類是否可實現(xiàn)(implements)接口? 抽象類是否可繼承具體類(concrete class)? 抽象類中是否可以有靜態(tài)的main方法?接口可以繼承接口抽象類可以實現(xiàn)(implements)接口抽象類是可以繼承具體類抽象類中可以有靜態(tài)的main方法36. 寫clone()方法時,通常都有一行代碼,是什么?Clone 有缺省行為,super.clone();他負責產(chǎn)生正確大小的空間,并逐位復制。37. 面向?qū)ο蟮奶卣饔心男┓矫娉橄?、繼承、封裝、多態(tài)性38. java中實現(xiàn)多態(tài)的機制是什么? 方法的

21、重寫Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn).重寫Overriding是父類與子類之間多態(tài)性的一種表現(xiàn)重載Overloading是一個類中多態(tài)性的一種表現(xiàn).39. abstract class和interface有什么區(qū)別? 含有abstract修飾符的class即為抽象類,abstract 類不能創(chuàng)建的實例對象。含有abstract方法的類必須定義為abstract class,abstract class類中的方法不必是抽象的。abstract class類中定義抽象方法必須在具體(Concrete)子類中實現(xiàn),所以,不能有抽象構(gòu)造方法或抽象靜態(tài)方法。如果

22、的子類沒有實現(xiàn)抽象父類中的所有抽 象方法,那么子類也必須定義為abstract類型。接口(interface)可以說成是抽象類的一種特例,接口中的所有方法都必須是抽象的。接口中的方法定義默認為public abstract類型,接口中的成員變量類型默認為public static fina40. abstract的method是否可同時是static,是否可同時是native,是否可同時是synchronized? abstract的method 不可以是static的,因為抽象的方法是要被子類實現(xiàn)的,而static與子類扯不上關(guān)系native方法表示該方法要用另外一種依賴平臺的編程語言實現(xiàn)的

23、,不存在著被子類實現(xiàn)的問題,所以,它也不能是抽象的,不能與abstract混用關(guān)于synchronized與abstract合用的問題,我覺得也不行,因為在我?guī)啄甑膶W習和開發(fā)中,從來沒見到過這種情況,并且我覺得 synchronized應(yīng)該是作用在一個具體的方法上才有意義。而且,方法上的synchronized同步所使用的同步鎖對象是this,而抽象方法 上無法確定this是什么41. 什么是內(nèi)部類?Static Nested Class 和 Inner Class的不同內(nèi)部類就是在一個類的內(nèi)部定義的類,內(nèi)部類中不能定義靜態(tài)成員,內(nèi)部類可以直接訪問外部類中的成員變量,內(nèi)部類可以定義在外部類的方

24、法外面,也可以定義在外部類的方法體中在方法外部定義的內(nèi)部類前面可以加上static關(guān)鍵字,從而成為Static Nested Class,它不再具有內(nèi)部類的特性,所有,從狹義上講,它不是內(nèi)部類。Static Nested Class與普通類在運行時的行為和功能上沒有什么區(qū)別,只是在編程引用時的語法上有一些差別,它可以定義成public、protected、默認的、private等多種類型,而普通類只能定義成public和默認的這兩種類型。在外面引用Static Nested Class類的名稱為“外部類名.內(nèi)部類名”。在外面不需要創(chuàng)建外部類的實例對象,就可以直接創(chuàng)建Static Nested

25、Class42. 內(nèi)部類可以引用它的包含類的成員嗎?有沒有什么限制? 完全可以。如果不是靜態(tài)內(nèi)部類,那沒有什么限制如果你把靜態(tài)嵌套類當作內(nèi)部類的一種特例,那在這種情況下不可以訪問外部類的普通成員變量,而只能訪問外部類中的靜態(tài)成員43. jdk中哪些類是不能繼承的?不能繼承的是類是那些用final關(guān)鍵字修飾的類。一般比較基本的類型或防止擴展類無意間破壞原來方法的實現(xiàn)的類型都應(yīng)該是final的,在jdk中System,String,StringBuffer等都是基本類型44. 是否可以繼承String類?因為Sting是這樣定義的:public final class String extends

26、 Object,里邊有final關(guān)鍵字,所以不能被繼承。45. String 和StringBuffer的區(qū)別String和StringBuffer,它們可以儲存和操作字符串,即包含多個字符的字符數(shù)據(jù)。這個String類提供了數(shù)值不可改變的字符串。而這個StringBuffer類提供的字符串進行修改。當你知道字符數(shù)據(jù)要改變的時候你就可以使用StringBuffer。典型地,你可以使用StringBuffers來動態(tài)構(gòu)造字符數(shù)據(jù)。String:是對象不是原始類型.為不可變對象,一旦被創(chuàng)建,就不能修改它的值.對于已經(jīng)存在的String對象的修改都是重新創(chuàng)建一個新的對象,然后把新的值保存進去.Str

27、ing 是final類,即不能被繼承.StringBuffer:是一個可變對象,當對他進行修改的時候不會像String那樣重新建立對象它只能通過構(gòu)造函數(shù)來建立。46. StringBuffer與StringBuilder的區(qū)別1.在執(zhí)行速度方面的比較:StringBuilder StringBuffer2.StringBuffer與StringBuilder,他們是字符串變量,是可改變的對象,每當我們用它們對字符串做操作時,實際上是在一個對象上操作的,不像String一樣創(chuàng)建一些對象進行操作,所以速度就快了。3.StringBuilder:線程非安全的 StringBuffer:線程安全的47

28、. 運行時異常與一般異常有何異同? 異常表示程序運行過程中可能出現(xiàn)的非正常狀態(tài),運行時異常表示虛擬機的通常操作中可能遇到的異常,是一種常見運行錯誤。Java編譯器要求方法必須聲明拋出可能發(fā)生的非運行時異常,但是并不要求必須聲明拋出未被捕獲的運行時異常。48. sleep() 和 wait() 有什么區(qū)別? sleep()方法是屬于Thread類中的。而wait()方法,則是屬于Object類中的。sleep()方法導致了程序暫停執(zhí)行指定的時間,讓出cpu該其他線程,但是他的監(jiān)控狀態(tài)依然保持者,當指定的時間到了又會自動恢復運行狀態(tài)。在調(diào)用sleep()方法的過程中,線程不會釋放對象鎖。而當調(diào)用w

29、ait()方法的時候,線程會放棄對象鎖,進入等待此對象的等待鎖定池,只有針對此對象調(diào)用notify()方法后本線程才進入對象鎖定池準備獲取對象鎖進入運行狀態(tài)。49. 同步和異步有何異同,在什么情況下分別使用他們?舉例說明。如果數(shù)據(jù)將在線程間共享。例如正在寫的數(shù)據(jù)以后可能被另一個線程讀到,或者正在讀的數(shù)據(jù)可能已經(jīng)被另一個線程寫過了,那么這些數(shù)據(jù)就是共享數(shù)據(jù),必須進行同步存取。當應(yīng)用程序在對象上調(diào)用了一個需要花費很長時間來執(zhí)行的方法,并且不希望讓程序等待方法的返回時,就應(yīng)該使用異步編程,在很多情況下采用異步途徑往往更有效率。50. 啟動一個線程是用run()還是start()? . 1、啟動一個線

30、程是start()方法。2、啟動線程之后start()方法會去調(diào)用run方法內(nèi)容。區(qū)別:start是創(chuàng)建并啟動一個線程,而run是要運行線程中的代碼。51. 線程的基本概念、線程的基本狀態(tài)以及狀態(tài)之間的關(guān)系 線程是進程內(nèi)的并發(fā),沒有自已內(nèi)存空間,共享進程的,線程間的通信成本較低。Java中的線程有四種狀態(tài)分別是:運行、就緒、掛起、結(jié)束。52. 說出一些常用的類,包,接口,請各舉5個 常用的類:BufferedReader BufferedWriterFileReader FileWirterString IntegerJava.util.Date,Class,HashMap常用的接口:List

31、MapDocumentNodeListServlet, HttpServletResponse,Transaction(hibernate)、Session(Hibernate),HttpSession常用的包:java.langjava.iojava.utiljava.sqljavax.servletorg.hibernate53. java中有幾種類型的流?JDK為每種類型的流提供了一些抽象類以供繼承,請說出他們分別是哪些類? 字節(jié)流,字符流。字節(jié)流繼承于InputStream OutputStream,字符流繼承于InputStreamReader OutputStreamWriter。

32、在java.io包中還有許多其他的流,主要是為了提高性能和使用方便。54. 字節(jié)流與字符流的區(qū)別字符流使用了緩沖區(qū),而字節(jié)流沒有使用緩沖區(qū)。55. 什么是java序列化,如何實現(xiàn)java序列化?或者請解釋Serializable接口的作用。無論何種類型的數(shù)據(jù),都是以二進制的形式在網(wǎng)絡(luò)上傳送,為了由一個進程把Java對象發(fā)送給另一個進程,需要把其轉(zhuǎn)換為字節(jié)序列才能在網(wǎng)絡(luò)上傳送,把JAVA對象轉(zhuǎn)換為字節(jié)序列的過程就稱為對象的序列化,將字節(jié)序列恢復成Java對象的過程稱為對象的反序列化只有實現(xiàn)了 serializable和Externalizable接口的類的對象才能被序列化后者是前者的子類實現(xiàn)這個

33、借口的類完全由自身來控制序列化的行為,而僅僅實現(xiàn)前者的類可以采用默認的序列化方式。實現(xiàn)這兩個接口 標志著對象可以被序列化了所謂的Serializable,就是java提供的通用數(shù)據(jù)保存和讀取的接口。至于從什么地方讀出來和保存到哪里去都被隱藏在函數(shù)參數(shù)的背后了。這樣子,任何類型只要實現(xiàn)了Serializable接口,就可以被保存到文件中,或者作為數(shù)據(jù)流通過網(wǎng)絡(luò)發(fā)送到別的地方。也可以用管道來傳輸?shù)较到y(tǒng)的其他程序中。這樣子極大的簡化了類的設(shè)計。只要設(shè)計一個保存一個讀取功能就能解決上面說得所有問題。56. 描述一下JVM加載class文件的原理機制? JVM中類的裝載是由ClassLoader和它的子

34、類來實現(xiàn)的,Java ClassLoader 是一個重要的Java運行時系統(tǒng)組件。它負責在運行時查找和裝入類文件的類。57. heap和stack有什么區(qū)別。1.heap是堆,stack是棧。2.stack的空間由操作系統(tǒng)自動分配和釋放,heap的空間是手動申請和釋放的,heap常用new關(guān)鍵字來分配。3.stack空間有限,heap的空間是很大的自由區(qū)。58. 垃圾回收的優(yōu)點和原理。并考慮2種回收機制。 垃圾回收可以有效的防止內(nèi)存泄露,有效的使用可以使用的內(nèi)存。垃圾回收器通常是作為一個單獨的低級別的線程運行,不可預知的情況下對內(nèi)存堆中已經(jīng)死亡的或者長時間沒有使用的對象進行清除和回收,程序員不

35、能實時的調(diào)用垃圾回收器對某個對象或所有對象進行垃圾回收?;厥諜C制有分代復制垃圾回收和標記垃圾回收,增量垃圾回收。59. 垃圾回收器的基本原理是什么?垃圾回收器可以馬上回收內(nèi)存嗎?有什么辦法主動通知虛擬機進行垃圾回收? 對于GC來說,當程序員創(chuàng)建對象時,GC就開始監(jiān)控這個對象的地址、大小以及使用情況。通常,GC采用有向圖的方式記錄和管理堆(heap)中的所有對象。通過這種方式確定哪些對象是”可達的”,哪些對象是”不可達的”。當GC確定一些對象為”不可達”時,GC就有責任回收這些內(nèi)存空間??梢浴3绦騿T可以手動執(zhí)行System.gc(),通知GC運行,但是Java語言規(guī)范并不保證GC一定會執(zhí)行。60

36、. 什么時候用assert。斷言是一個包含布爾表達式的語句,在執(zhí)行這個語句時假定該表達式為 true。如果表達式計算為 false,那么系統(tǒng)會報告一個 Assertionerror。61. java中會存在內(nèi)存泄漏嗎,請簡單描述。 會。如:int i,i2; return (i-i2); /when i為足夠大的正數(shù),i2為足夠大的負數(shù)。結(jié)果會造成溢位,導致錯誤62. 能不能自己寫個類,也叫?可以,但在應(yīng)用的時候,需要用自己的類加載器去加載,否則,系統(tǒng)的類加載器永遠只是去加載jre.jar包中的那個。63. 、存儲過程與觸發(fā)器觸發(fā)器與存儲過程的主要區(qū)別在于觸發(fā)器的運行方式。存儲過程必須有用戶、

37、應(yīng)用程序或者觸發(fā)器來顯示的調(diào)用并執(zhí)行,而觸發(fā)器是當特定時間出現(xiàn)的時候,自動執(zhí)行或者激活的,與連接用數(shù)據(jù)庫中的用戶、或者應(yīng)用程序無關(guān)。當一行被插入、更新或者刪除時觸發(fā)器才執(zhí)行,同時還取決于觸發(fā)器是怎樣創(chuàng)建的,當UPDATE發(fā)生時使用一個更新觸發(fā)器,當INSERT發(fā)生時使用一個插入觸發(fā)器,當DELETE發(fā)生時使用一個刪除觸發(fā)器。64. 數(shù)據(jù)庫三范式是什么?第一范式(1NF):屬性不可拆分 或 無重復的列第二范式(2NF):完全函數(shù)依賴3.第三范式(3NF):消除傳遞依賴65. 說出一些數(shù)據(jù)庫優(yōu)化方面的經(jīng)驗?用PreparedStatement 一般來說比Statement性能高:一個sql 發(fā)給服

38、務(wù)器去執(zhí)行,涉及步驟:語法檢查、語義分析, 編譯,緩存有外鍵約束會影響插入和刪除性能,如果程序能夠保證數(shù)據(jù)的完整性,那在設(shè)計數(shù)據(jù)庫時就去掉外鍵。66. union和union all有什么不同?Union,對兩個結(jié)果集進行并集操作,不包括重復行,同時進行默認規(guī)則的排序;Union All,對兩個結(jié)果集進行并集操作,包括重復行,不進行排序;67. 注冊Jdbc驅(qū)動程序的三種方式DriverManager.registerDriver(new();System.setProperty(jdbc.drivers,);Class.forName();68. 用JDBC如何調(diào)用存儲過程使用 JDBC 驅(qū)

39、動程序調(diào)用不帶參數(shù)的存儲過程時,必須使用 call SQL 轉(zhuǎn)義序列ResultSetrs=stmt.executeQuery(calldbo.ProcedureName);調(diào)用帶參數(shù)的存儲過程時,必須結(jié)合SQLServerConnection類的prepareCall方法使用callSQL轉(zhuǎn)義序列69. JDBC中的PreparedStatement相比Statement的好處1、相對比較安全,可以防止sql注入2、有預編譯功能,相同操作批量數(shù)據(jù)效率較高70. Class.forName的作用?為什么要用? JDO是Java對象持久化的新的規(guī)范,為javadataobject的簡稱,也是一個

40、用于存取某種數(shù)據(jù)倉庫中的對象的標準化API。JDO提供了透明的對象存儲,因此對開發(fā)人員來說,存儲數(shù)據(jù)對象完全不需要額外的代碼(如JDBCAPI的使用)。這些繁瑣的例行工作已經(jīng)轉(zhuǎn)移到JDO產(chǎn)品提供商身上,使開發(fā)人員解脫出來,從而集中時間和精力在業(yè)務(wù)邏輯上。另外,JDO很靈活,因為它可以在任何數(shù)據(jù)底層上運行。JDBC只是面向關(guān)系數(shù)據(jù)庫(RDBMS)JDO更通用,提供到任何數(shù)據(jù)底層的存儲功能,比如關(guān)系數(shù)據(jù)庫、文件、XML以及對象數(shù)據(jù)庫(ODBMS)等等,使得應(yīng)用可移植性更強。71. 大數(shù)據(jù)量下的分頁解決方法。sql server:String sql =select top + pageSize +

41、 * from students where id not in +(select top + pageSize * (pageNumber-1) + id from students order by id) +order by id;mysql:String sql =select * from students order by id limit + pageSize*(pageNumber-1) + , + pageSize;oracle:String sql =select * from + (select *,rownum rid from (select * from stude

42、nts order by postime desc) where rid + pageSize*(pageNumber-1);72. 說出數(shù)據(jù)連接池的工作機制是什么? J2EE服務(wù)器啟動時會建立一定數(shù)量的池連接,并一直維持不少于此數(shù)目的池連接??蛻舳顺绦蛐枰B接時,池驅(qū)動程序會返回一個未使用的池連接并將其表記為忙。如果當前沒有空閑連接,池驅(qū)動程序就新建一定數(shù)量的連接,新建連接的數(shù)量有配置參數(shù)決定。當使用的池連接調(diào)用完成后,池驅(qū)動程序?qū)⒋诉B接表記為空閑,其他調(diào)用就可以使用這個連接。73. 流行的框架與新技術(shù)74. AOP的作用。Aop:oop的一個橫向服務(wù),是對oop進一步補充,提高安全、事務(wù)、

43、日志等的集中式處理.x0d相關(guān)的裝備 before、around、after75. hibernate中的update()和saveOrUpdate()的區(qū)別,session的load()和get()的區(qū)別。saveOrUpdate()方法可以實現(xiàn)update()的功能,但是會多些步驟,具體如下:如果對象在該session種已經(jīng)持久化,不進行操作;對象的標識符屬性(identifierproperty)在數(shù)據(jù)庫中不存在或者是個暫時的值,調(diào)用save()方法保存它;如果session中的另一個對象有相同的標識符拋出一個異常;以上皆不符合則調(diào)用update()更新之。session.load/ge

44、t方法均可以根據(jù)指定的實體類和id從數(shù)據(jù)庫讀取記錄,get方法返回null,而load方法會拋出一個ObjectNotFoundException;load方法可返回實體的代理類實例,而get方法永遠直接返回實體類;load方法可以充分利用內(nèi)部緩存和二級緩存中的現(xiàn)有數(shù)據(jù)而get方法則僅僅在內(nèi)部緩存中進行數(shù)據(jù)查找,如果沒有發(fā)現(xiàn)對應(yīng)的數(shù)據(jù),將越過二級緩存,直接調(diào)用sql完成數(shù)據(jù)讀取。76. 簡述 Hibernate 和 JDBC 的優(yōu)缺點? 如何書寫一個 one to many 配置文件Hibernate就是封裝了JDBC,他可以寫一條hql語句,可以再不同數(shù)據(jù)庫中使用,不用修改hql語句,但是關(guān)

45、聯(lián)查詢效率低。JDBC是基礎(chǔ)的鏈接數(shù)據(jù)庫的框架,效率高,但是mysql、oracle、sql service等不同的數(shù)據(jù)庫要寫不同的sql語句。77. j2ee常用的設(shè)計模式?說明工廠模式Factory(工廠模式),Builder(建造模式), Factory Method(工廠方法模式),Prototype(原始模型模式),Singleton(單例模式), Facade(門面模式),Adapter(適配器模式), Bridge(橋梁模式),Composite(合成模式),Decorator(裝飾模式), Flyweight(享元模式), Proxy(代理模式),Command(命令模式),

46、Interpreter(解釋器模式), Visitor(訪問者模式),Iterator(迭代子模式), Mediator(調(diào)停者模式), Memento(備忘錄模式),Observer(觀察者模式), State(狀態(tài)模式), Strategy(策略模式),Template Method(模板方法模式), Chain Of Responsibleity(責任鏈模式)工廠模式:工廠模式是一種經(jīng)常被使用到的模式,根據(jù)工廠模式實現(xiàn)的類可以根據(jù)提供的數(shù)據(jù)生成一組類中某一個類的實例,通常這一組類有一個公共的抽象父類并且實現(xiàn)了相同的方法,但是這些方法針對不同的數(shù)據(jù)進行了不同的操作。首先需要定義一個基類,該類的子類通過不同的方法實現(xiàn)了基類中的方法。然后需要定義一個工廠類,工廠類可以根據(jù)條件生成不同的子類實例。當?shù)玫阶宇惖膶嵗?,開發(fā)人員可以調(diào)用基類中的方法而不必考慮到底返回的是哪一個子類的實例。78. 應(yīng)用服務(wù)

溫馨提示

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

評論

0/150

提交評論