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