應屆生java軟件工程師面試題
應屆生面試Java工程師崗位時,做好準備很有必要,你了解Java面試題目了嗎?以下是小編幫你們整理的應屆生java軟件工程師面試題,一起來學習啦。
應屆生java軟件工程師面試題(一)
1、簡述你所知道的JAVA修飾符及各自的使用機制?(public、abstract、final、synchronized、super…)
public :允許所有客戶訪問
protected:只能在本包內被該類的子類所使用
private:只允許在本類內使用
abstract:沒有提供實現,需要子類提供
static:與整個類相關,與單個對象無關
final:你只能定義一個實體一次,以后不能改變它或繼承它。一個final修飾的類不能被子類化,一個final修飾的方法不能被重寫,一個final修飾的變量不能改變其初始值
synchronized:方法獲得對對象監控的訪問權;如果該方法是static類型的,獲得是對類本身的訪問權。 super:構造器和方法,都用關鍵字super指向超類,但是用的方法不一樣。方法用這個關鍵字去執行被重載的超類中的方法。
2. String、StringBuffer與StringBuilder之間區別?別簡述各自的執行效率?
區別:String 類型和 StringBuffer 類型的主要性能區別其實在于 String 是不可變的對象, 因此在每次對 String 類型進行改變的時候其實都等同于生成了一個新的 String 對象,然后將指針指向新的 String 對象,所以經常改變內容的字符串最好不要用 String ,因為每次生成對象都會對系統性能產生影響,特別當內存中無引用對象多了以后, JVM 的 GC 就會開始工作,那速度是一定會相當慢的, 執行速度:三者在執行速度方面的比較:StringBuilder > StringBuffer > String 使用場景:1.如果要操作少量的數據用 = String
3、靜態變量和實例變量的區別?能在靜態方法中調用非靜態變量嗎?
靜態變量屬于類,該類不生產對象,通過類名就可以調用靜態變量。實例變量屬于該類的對象,必須產生該類對象,才能調用實例變量
靜態方法及變量屬于整個類,數據將會被存儲在公共區域,非靜態方法及變量屬于對象 靜態方法中無法調用實例變量,而實例方法卻可以調用靜態變量
應屆生java軟件工程師面試題(二)
1、繼承和接口是什么?以及他們的區別?
1) 接口定義一個類需要實現的方法 屬性 索引 事件和可能的參數 返回值類型,具體的實現交由相應的類或結構,從而實現多態;而繼承用于在一個現有父類基礎上的功能擴展,把幾個類中相同的成員提取出來 放在一個父類中,在子類中添加獨特的方法 即繼承擴展
2) 接口能夠實現多接口繼承,而繼承只能實現單繼承
3) 繼承能夠獲得父類方法的實現,而接口只能獲得方法的定義,所以必須獲得所有的方法
4) 在繼承中 為父類添加方法不影響子類的繼承,但在接口中 為父類添加一個方法定義 必須在子類中添加此方法的實現
2、HashMap和Hashtable的區別?
1),Hashtable是基于陳舊的Dictionary類的,HashMap是Map接口的一個實現。
2),Hashtable的方法是同步的,而HashMap的方法不是
3),只有HashMap可以讓你將空值作為一個表的條目的key或value
3、抽象類(abstract class)和接口(interface)有什么區別?
聲明方法的存在而不去實現它的類被叫做抽象類(abstract class),它用于要創建一個體現某些基本行為的類,并為該類聲明方法,但不能在該類中實現該類的情況。不能創建abstract 類的實例。然而可以創建一個變量,其類型是一個抽象類,并讓它指向具體子類的一個實例。不能有抽象構造函數或抽象靜態方法。Abstract 類的子類為它們父類中的所有抽象方法提供實現,否則它們也是抽象類為。取而代之,在子類中實現該方法。知道其行為的其它類可以在類中實現這些方法。
接口(interface)是抽象類的變體。在接口中,所有方法都是抽象的。多繼承性可通過實現這樣的接口而獲得。接口中的所有方法都是抽象的,沒有一個有程序體。接口只可以定義static final成員變量。接口的實現與子類相似,除了該實現類不能從接口定義中繼承行為。當類實現特殊接口時,它定義(即將程序體給予)所有這種接口的方法。然后,它可以在實現了該接口的類的任何對象上調用接口的方法。由于有抽象類,它允許使用接口名作為引用變量的類型。通常的動態聯編將生效。引用可以轉換到接口類型或從接口類型轉換,instanceof 運算符可以用來決定某對象的類是否實現了接口
應屆生java軟件工程師面試題(三)
1、重載(Overload)和重寫(Override)的區別。Overloaded的方法是否可以改變返回值的類型?
Overload是重載,是有相同的方法名,但參數類型或個數彼此不同
Override是重寫,是在子類與父類中,子類中的方法的方法名,參數個數、類型都與父類中的完全一樣,在子類中覆蓋掉了父類的改方法。
2、你所知道的集合類都有哪幾類?主要區別有哪些并簡單描述?
集合類型主要有3種:set(集)、list(列表)和map(映射)
集 Set
它的對象不按特定方式排序,只是簡單的把對象加入集合中。
對集中成員的訪問和操作是通過集中對象的引用進行的,所以集中不能有重復對象。
列表 List
List接口與其實現類是容量可變的列表,可以按照索引訪問集合中的元素,是有序的集合。
列表在數據結構中分別表現為:數組和向量、鏈表、堆棧、隊列。常用的有ArrayList vector
映射 Map
映射中每個項都是成對的,Map是把鍵對象和值對象進行關聯的容器。
映射中存儲的每個對象都有一個相關的關鍵字(Key)對象,關鍵字決定了對象在映射中的存儲位置,關鍵字應該是唯一的,常用的有HashMap,HashTable。
3、JAVA SERVLET API中forward() 與redirect()的區別?
使用forward的時候瀏覽器不知道它所請求的具體資源來源,所以地址欄不會變;
使用redirect,服務端根據邏輯,發送一個狀態碼,告訴瀏覽器重新去請求那個地址.所以地址欄顯示的是新的URL。
forward,轉發頁面和轉發到的頁面可以共享request里面的數據.redirect,不能共享數據.
4、寫出JSP的常用內置對象?以及每個內置對象的簡單介紹?
request對象
客戶端的請求信息被封裝在request對象中,通過它才能了解到客戶的需求,然后做出響應。它是HttpServletRequest類的實例。
response對象
response對象包含了響應客戶請求的有關信息,但在JSP中很少直接用到它。它是HttpServletResponse類的實例。
session對象
session對象指的是客戶端與服務器的一次會話,從客戶連到服務器的一個WebApplication開始,直到客戶端與服務器斷開連接為止。它是HttpSession類的實例。
out對象
out對象是JspWriter類的實例,是向客戶端輸出內容常用的對象
page對象
page對象就是指向當前JSP頁面本身,有點象類中的this指針,它是java.lang.Object類的實例 。
application對象
application對象實現了用戶間數據的共享,可存放全局變量。它開始于服務器的啟動,直到服務器的關閉,在此期間,此對象將一直存在;這樣在用戶的前后連接或不同用戶之間的連接中,可以對此對象的同一屬性進行操作;在任何地方對此對象屬性的操作,都將影響到其他用戶對此的訪問。服務器的啟動和關閉決定了application對象的生命。它是ServletContext類的實例。
exception對象
exception對象是一個例外對象,當一個頁面在運行過程中發生了例外,就產生這個對象。如果一個JSP頁面要應用此對象,就必須把isErrorPage設為true,否則無法編譯。他實際上是java.lang.Throwable的對象。
pageContext對象
pageContext對象提供了對JSP頁面內所有的對象及名字空間的訪問,也就是說他可以訪問到本頁所在的SESSION,也可以取本頁面所在的application的某一屬性值,他相當于頁面中所有功能的集大成者,它的本類名也叫pageContext。
config對象
config對象是在一個Servlet初始化時,JSP引擎向它傳遞信息用的,此信息包括Servlet初始化時所要用到的參數(通過屬性名和屬性值構成)以及服務器的有關信息(通過傳遞一ServletContext對象) 。
看了“應屆生java軟件工程師面試題”