- 相關(guān)推薦
java面試問題及答案
Java面試問題對(duì)于Java程序員來說很重要,想要取得面試成功,提前了解面試題目很重要,以下是陽光網(wǎng)小編幫你們整理的java面試問題及答案,一起來學(xué)習(xí)啦。
java面試問題及答案(一)
1.Java語言中public、private、protected三個(gè)關(guān)鍵字的用法,重載和重寫的區(qū)別。
作用域 當(dāng)前類 同包 子類 其他
Public √ √ √ √
Protected √ √ √ ×
Private √ × × ×
Friendlly √ √ × ×
重寫:發(fā)生在父子類之間,方法名相同,參數(shù)的類型、個(gè)數(shù)、順序相同,返回值相同,訪問權(quán)限不能更封閉,拋出異常不能寬泛;
重寫:發(fā)生在同一個(gè)類中,方法名相同,單參數(shù)不同(類型不同或個(gè)數(shù)不同或參數(shù)的順序不同),返回值可以不相同。
2.JSP頁面之間傳遞參數(shù)的方法有哪些?
1)Request
2)Session
3)Application
4)提交表單
5)超鏈接
3.Forward和redirect的區(qū)別?
Forword是容器中控制權(quán)的轉(zhuǎn)向,是服務(wù)器請(qǐng)求資源,服務(wù)器直接訪問目標(biāo)地址的URL。把那個(gè)URL的響應(yīng)內(nèi)容讀取過來,然后吧這些內(nèi)容在轉(zhuǎn)發(fā)給瀏覽器,瀏覽器根本不知道服務(wù)器發(fā)送的內(nèi)容是從哪里來的,所以它的地址欄中還是原來的地址。
Redirect就是服務(wù)器端根據(jù)邏輯,發(fā)送一個(gè)狀態(tài)碼,告訴瀏覽器重新去請(qǐng)求那個(gè)地址,一般來說瀏覽器會(huì)用剛才請(qǐng)求的所有參數(shù)重新請(qǐng)求,并且從瀏覽器的地址欄中可以看到跳轉(zhuǎn)后的'鏈接地址。前者更加高效,在前者可以滿足需要時(shí),盡量使用forword()方法,并且這樣也有助于隱藏實(shí)際的連接;在有些情況下,比如,需要跳轉(zhuǎn)到一個(gè)其他服務(wù)器上的資源,則必須使用sendRedirect()方法。
4.Java反射機(jī)制的作用?
1)在運(yùn)行時(shí)判斷任意一個(gè)對(duì)象所屬的類
2)在運(yùn)行時(shí)構(gòu)造任意一個(gè)類的對(duì)象
3)在運(yùn)行時(shí)判斷任意一個(gè)類所具有的成員變量的方法
4)在運(yùn)行時(shí)調(diào)用任意一個(gè)對(duì)象的方法
5.你是怎樣理解java的泛型的?
在JavaSE1.5之前,沒有反省的情況下,通過對(duì)類型Object的應(yīng)用來實(shí)現(xiàn)參數(shù)的“任意化”,“任意化”帶來的缺點(diǎn)是要做現(xiàn)實(shí)的強(qiáng)制類型的轉(zhuǎn)換,而這種轉(zhuǎn)換是要求開發(fā)者對(duì)實(shí)際參數(shù)類型可以預(yù)知的情況下進(jìn)行的。對(duì)于強(qiáng)制類型轉(zhuǎn)換錯(cuò)誤的情況,編譯器可能不提示錯(cuò)誤,在運(yùn)行的時(shí)候才出現(xiàn)的異常,這是一個(gè)安全隱患。
泛型是JaveSE1.5的特性,泛型的本質(zhì)是參數(shù)化類型,也就是說所操作的數(shù)據(jù)類型被指定一個(gè)參數(shù)。這種參數(shù)類型可以用在類、接口和方法的創(chuàng)建中,分別稱之為泛型類、泛型接口、泛型方法。
反省的好處是編譯的時(shí)候檢查類型安全,并且所有的強(qiáng)制轉(zhuǎn)換都是自動(dòng)和隱式的,提高代碼的重用率。
6.Java源文件中是否可以包含多個(gè)類,有什么限制?
一個(gè)java源文件可以包含多個(gè)類,每個(gè)源文件之多有一個(gè)public類。如果有的話,那么源文件的名字必須與之相同。如果源文件中沒有public類,則源文件用什么名字都可以,但是最好還是具有特定的意義,免得自己都不記得里面寫的是什么了。
java面試問題及答案(二)
1.在Java中,List是一個(gè)借口,那實(shí)現(xiàn)List接口的'類有哪些,有什么區(qū)別?
ArrayList是使用數(shù)組方式存儲(chǔ)數(shù)據(jù),此數(shù)組元素大于實(shí)際存儲(chǔ)的數(shù)據(jù)以便增加和插入元素,它們都允許直接按序號(hào)索引元素,但是插入元素要涉及數(shù)組元素移動(dòng)等內(nèi)存操作,所以索引數(shù)據(jù)快而插入數(shù)據(jù)慢。
LinkedList使用雙向鏈表實(shí)現(xiàn)存儲(chǔ),按序號(hào)索引數(shù)據(jù)需要進(jìn)行前向或者后向遍歷,但是插入數(shù)據(jù)時(shí)只需要記錄本項(xiàng)的前后項(xiàng)即可,所以插入速度較快。
2.Char類型能否存儲(chǔ)一個(gè)中文字符?為什么?
可以。一個(gè)char是兩個(gè)字節(jié),而一個(gè)中文也是兩個(gè)字節(jié)。
3.Switch選擇語句能否作用在String[字符串]上,也就是能否這么寫:switch(一個(gè)字符串變量)?
不可以,只能處理 int、byte、short、char(其實(shí)是只能處理int,其他三種是可以promotion到int類型),不能處理String.
4.關(guān)鍵字final分別修飾一個(gè)類,一個(gè)方法,一個(gè)變量,各起什么作用?
Final修飾類是不能被繼承,final修飾方法不能在子類中被覆蓋,final修飾變量,稱之為常量,初始化以后不能改變值。
5.啟動(dòng)一個(gè)縣城是用run()還是start();
Start();
6.是否可以繼承String類?
不可以。因?yàn)镾tring類有final修飾
7.Java異常處理中,try{}里有一個(gè)return語句那么緊跟在這個(gè)try后的finally{}里面的code會(huì)不會(huì)被執(zhí)行,什么時(shí)候被執(zhí)行,在return前還是后?
會(huì)執(zhí)行,在return之前
8.EJB包含哪3中bean?
Session bean(會(huì)話bean),entity bean(實(shí)體bean),message bean(消息bean)
java面試問題及答案(三)
1.Class.forName(String className)這個(gè)方法的作用?
通過類的全名獲得該類的類對(duì)象
2.你認(rèn)為在表上建立索引可以提高數(shù)據(jù)庫系統(tǒng)的效率嗎?為什么?
不一定。建立太多的索引將會(huì)影響更新和插入的速度,因?yàn)樗枰瑯痈旅總(gè)索引文件。對(duì)于一個(gè)經(jīng)常需要更新和插入的表格,就沒有必要為一個(gè)甚少使用的where字句單獨(dú)建立索引,對(duì)于比較小的表,排序的開銷不會(huì)很大,也沒有必要建立另外的索引。
3.Hibernate中的java對(duì)象有幾種狀態(tài),其相互關(guān)系如何(區(qū)別和相互轉(zhuǎn)換)。
在hibernate中,對(duì)象有三種狀態(tài):臨時(shí)狀態(tài)、持久狀態(tài)和游離狀態(tài)。
臨時(shí)狀態(tài):當(dāng)new一個(gè)實(shí)體對(duì)象后,這個(gè)對(duì)象處于臨時(shí)狀態(tài),即這個(gè)對(duì)象只是一個(gè)保存臨時(shí)數(shù)據(jù)的內(nèi)存區(qū)域,,如果沒有變量引用這個(gè)對(duì)象,則會(huì)被jre垃圾回收機(jī)制回收掉。這個(gè)對(duì)象所保存的數(shù)據(jù)與數(shù)據(jù)庫沒有任何關(guān)系,除非通過session的sava或是savaorupdate把臨時(shí)對(duì)象與數(shù)據(jù)庫關(guān)聯(lián),并把數(shù)據(jù)插入或者更新到數(shù)據(jù)庫,這個(gè)對(duì)象才轉(zhuǎn)換為持久對(duì)象。 持久狀態(tài):持久化對(duì)象的實(shí)例在數(shù)據(jù)庫中有對(duì)應(yīng)的記錄,并擁有一個(gè)持久化表示(ID)。對(duì)持久化現(xiàn)象進(jìn)行delete操作,數(shù)據(jù)庫中對(duì)應(yīng)的記錄將被刪除,那么持久化對(duì)象與數(shù)據(jù)庫記錄不再存在對(duì)應(yīng)關(guān)系,持久化對(duì)象變成臨時(shí)狀態(tài)。持久化對(duì)象被修改變更后,不會(huì)馬上同步到數(shù)據(jù)庫,直到數(shù)據(jù)庫事務(wù)提交。在同步之前,持久化對(duì)象是臟的(Dirty)。
游離狀態(tài):當(dāng)session進(jìn)行了close,clear或者evict后,持久化對(duì)象雖然用于持久化標(biāo)識(shí)符和數(shù)據(jù)庫對(duì)應(yīng)記錄一致的值,但是因?yàn)闀?huì)話已經(jīng)失效,對(duì)象不再持久化管理之內(nèi),所有處于游離狀態(tài)。(也叫托管狀態(tài))。游離狀態(tài)的對(duì)象與臨時(shí)狀態(tài)對(duì)象是十分相似的,只是他還含有持久化標(biāo)識(shí)。
4.對(duì)hibernate的延遲加載如何理解,在實(shí)際應(yīng)用中,延遲加載與session關(guān)閉的矛盾是如何處理的?
延遲加載就是并不是在讀取的時(shí)候把數(shù)據(jù)加載進(jìn)來,而是等到使用時(shí)再加載。那么Hibernate是怎么知道用戶在什么時(shí)候使用數(shù)據(jù)了呢?又是如何加載數(shù)據(jù)呢?其實(shí)很簡單,他使用了代理機(jī)制。返回給用戶的并不是實(shí)體本身,而是實(shí)體對(duì)象的代理。代理對(duì)象在用戶調(diào)用getter方法時(shí)就會(huì)去數(shù)據(jù)庫加載數(shù)據(jù)。但加載數(shù)據(jù)就需要數(shù)據(jù)庫連接。而當(dāng)我們把會(huì)話關(guān)閉時(shí),數(shù)據(jù)庫連接就同時(shí)釋放了。這種情況就叫做未初始化的關(guān)系。
延遲加載與session關(guān)閉的矛盾一般可以這樣處理:
1)關(guān)閉延遲加載特性
操作起來比較簡單,因?yàn)閔ibernate的延遲加載特性實(shí)在hbm配置里面可控制的。默認(rèn)lazy=”true”,集體配置可以查看一下相關(guān)文檔,就不詳細(xì)敘述了。
但是用這個(gè)解決辦法方帶來的隱患是十分大的。
首先,出現(xiàn)no session or session was closed就證明了你已經(jīng)存在外檢關(guān)聯(lián)表,如果去掉延遲加載的話,則表示每次查詢的開銷會(huì)變得非常大,如果關(guān)聯(lián)表越多,后果也可以現(xiàn)象得到。所有不建議使用這個(gè)方法解決。
2)在session關(guān)閉之前把我們想要查詢的數(shù)據(jù)先獲取了。
首先需要了解一下session什么時(shí)候關(guān)閉,也就是他的生命周期。通常情況下hibernate會(huì)在查詢數(shù)據(jù)關(guān)閉session,而使用getHibernateTemplate().get方法查詢后會(huì)延遲關(guān)閉的事件。會(huì)在事務(wù)結(jié)束后才關(guān)閉。
使用攔截器(interceptor)或者過濾器(Filter)控制session。
Spring為解決hibernate這一特性提供的解決方案可以有效的控制session的生命周期。
5.什么是AOP和OOP,IOC和DI由有什么不同?
1)面向?qū)ο缶幊?Object Oriented Programming,OOP,面向?qū)ο笤O(shè)計(jì)程序)是一種計(jì)算機(jī)編程架構(gòu)。AOP是OOP的`延續(xù),是Aspect Oriented Programming的縮寫,意思是面向方面編程。將通用需求功能從不相關(guān)類之中分離出來;同時(shí),能夠使得很多類共享一個(gè)行為,一單行為發(fā)生變化,不必修改很多類,止血藥修改這個(gè)行為就可以了。AOP就是這種實(shí)現(xiàn)分散關(guān)注的編程方法,他將“關(guān)注”封裝在“方面”中
2)控制反轉(zhuǎn)IOC(Inversion of Control)控制指的就是程序相關(guān)類之間的依賴關(guān)系,傳統(tǒng)觀念設(shè)置中,通常由調(diào)用者來創(chuàng)建被調(diào)用者的實(shí)例,在Spring里,創(chuàng)建被調(diào)用者的工作不在由調(diào)用者來完成,而是由Spring容器完成,依賴關(guān)系被反轉(zhuǎn)了,稱之為控制反轉(zhuǎn),目的是為了獲得更好的擴(kuò)展性和良好的可維護(hù)性。依賴注入(Dependency injection)創(chuàng)建被調(diào)用者的工作由Spring容器完成,然后注入調(diào)用者,因此也被稱之為依賴注入?刂品崔D(zhuǎn)和依賴注入是同一個(gè)概念。
【java面試問題及答案】相關(guān)文章:
java面試基礎(chǔ)問題04-03
java面試基本問題04-05
Java面試問題201704-05
java面試問題及回答11-26
java面試基礎(chǔ)題及答案04-02
java面試題目及答案04-05
java基礎(chǔ)面試題及答案04-05
高級(jí)java面試題及答案04-04
java高級(jí)面試題及答案04-06