java人員如何面試招聘

java面試經典問題

java語言的開發環境

jdk是什麼?

jdk(java development kit)java開發工具包。包括了jre,是開發java的人員必備的開發運行java程式的工具。

jre是什麼?

jre(java runtime environment)java運行環境,運行java程式所必須的環境的集合,包含jvm標準實現及java核心類庫。

jvm是什麼?

jvm (java virtual machine) java虛擬機,它是一個虛構出來的計算機,是通過在實際的計算機上仿真模擬各種計算機功能來實現的。

安裝jdk的作業系統問題?

必須針對於不同的作業系統下載安裝不同的jdk,例如windows下安裝針對於windows的jdk,linux下安裝針對於linux的jdk。

需要配置的相關環境變數?

path:用於搜尋外部命令,例如編譯程式的javac命令,執行程式的java命令

classpath:用於搜尋類,即class檔案,例如可以在不同的位置執行類檔案

java程式設計概述

開發java語言的公司?

sun (sun microsystems)太陽微電子公司開發, 後被oracle公司收購

java的3個版本?

j2se(java2 standard edition) 標準版

j2ee(java 2 platform,enterprise edition) 企業版

j2me(java 2 micro edition) 微小版

在5.0以後新版本中稱作:javase javaee javame

java語言的幾個主要特點?

平台無關性:能運行於不同的平台上

安全性:去掉了指針操作,記憶體由作業系統分配

面向對象:利用類使程式更加利於維護

分散式:可以使用網路檔案和使用本機檔案一樣容易

健壯性:檢查程式編譯和運行的錯誤

java的三大核心機制

虛擬機機制:利用虛擬機解釋位元組碼執行java程式實現跨平台

垃圾收集機制:自動記憶體回收

代碼安全性機制:載入代碼後校驗代碼後再執行代碼

java面試問題分享

第一,談談final, finally, finalize的區別。

final 用於聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。finally 是異常處理語句結構的一部分,表示總是執行。

finalize 是object類的一個方法,在垃圾收集器執行的時候會調用被回收對象的此方法,可以覆蓋此方法提供垃圾收集時的其他資源回收,例如關閉檔案等。

第二,anonymous inner class (匿名內部類) 是否可以extends(繼承)其它類,是否可以implements(實現)interface(接口)

可以繼承其他類或完成其他接口,在swing編程中常用此方式。

第三,static nested class 和 inner class的不同,說得越多越好(面試題有的很籠統)。

static nested class是被聲明為靜態(static)的內部類,它可以不依賴於外部類實例被實例化。而通常的內部類需要在外部類實例化後才能實例化。

第四,&和&&的區別。

&是位運算符,表示按位與運算,&&是邏輯運算符,表示邏輯與(and)。

第五,hashmap和hashtable的區別。

hashmap是hashtable的輕量級實現(非執行緒安全的實現),他們都完成了map接口,主要區別在於hashmap允許空(null)鍵值(key),由於非執行緒安全,效率上可能高於hashtable。

第六,collection 和 collections的區別。

collection是集合類的上級接口,繼承與他的接口主要有set 和list.collections是針對集合類的一個幫助類,他提供一系列靜態方法實現對各種集合的搜尋、排序、執行緒安全化等操作。

第七,什麼時候用assert。

java1.4新增關鍵字(語法),用於測試boolean 表達式狀態,可用於調試程式。使用方法 assert ,表示如果表達式為真(true),則下面的語句執行,否則拋出assertionerror。另外的使用方式assert boolean表達式,表示如果表達式為真,後面的表達式忽略,否則後面表達式的值用於assertionerror的構建參數。注意編譯時要增加 -source 1.4 參數,否則報錯。運行時要增加 –ea參數,否則assert行被忽略。

第八,gc是什麼?為什麼要有gc?

gc是垃圾收集的意思(gabage collection),記憶體處理是編程人員容易出現問題的地方,忘記或者錯誤的記憶體回收會導致程式或系統的不穩定甚至崩潰,java提供的gc功能可以自動監測對象是否超過作用域從而達到自動回收記憶體的目的,java語言沒有提供釋放已分配記憶體的顯示操作方法。

第九,string s = new string("xyz"); 創建了幾個string object?

2個。首先在數據段創建一個"xyz"對象,再根據該對象在堆區創建一個新的對象,在棧區創建變數s,該變數是指向堆區對象的引用。所以一共兩個string對象。