- 最新java面試題及答案 推薦度:
- java面試題及答案 推薦度:
- java面試題帶答案 推薦度:
- 相關(guān)推薦
關(guān)于Java面試題及答案
Sun 認證Java程序員考試內容涉及Java所有相關(guān)知識、編程概念及applet開(kāi)發(fā)技巧。下面是小編整理的關(guān)于Java面試題及答案,希望大家認真閱讀!
一、面向對象的特征有哪些方面
1.抽象:
抽象就是忽略一個(gè)主題中與當前目標無(wú)關(guān)的那些方面,以便更充分地注意與當前目標有關(guān)的方面。抽象并不打算了解全部問(wèn)題,而只是選擇其中的一部分,暫時(shí)不用部分細節。抽象包括兩個(gè)方面,一是過(guò)程抽象,二是數據抽象。
2.繼承:
繼承是一種聯(lián)結類(lèi)的層次模型,并且允許和鼓勵類(lèi)的重用,它提供了一種明確表述共性的方法。對象的一個(gè)新類(lèi)可以從現有的類(lèi)中派生,這個(gè)過(guò)程稱(chēng)為類(lèi)繼承。新類(lèi)繼承了原始類(lèi)的特性,新類(lèi)稱(chēng)為原始類(lèi)的派生類(lèi)(子類(lèi)),而原始類(lèi)稱(chēng)為新類(lèi)的基類(lèi)(父類(lèi))。派生類(lèi)可以從它的基類(lèi)那里繼承方法和實(shí)例變量,并且類(lèi)可以修改或增加新的方法使之更適合特殊的需要。
3.封裝:
封裝是把過(guò)程和數據包圍起來(lái),對數據的訪(fǎng)問(wèn)只能通過(guò)已定義的界面。面向對象計算始于這個(gè)基本概念,即現實(shí)世界可以被描繪成一系列完全自治、封裝的對象,這些對象通過(guò)一個(gè)受保護的接口訪(fǎng)問(wèn)其他對象。
4.多態(tài)性:
多態(tài)性是指允許不同類(lèi)的對象對同一消息作出響應。多態(tài)性包括參數化多態(tài)性和包含多態(tài)性。多態(tài)性語(yǔ)言具有靈活、抽象、行為共享、代碼共享的優(yōu)勢,很好的解決了應用程序函數同名問(wèn)題。
二、String是最基本的數據類(lèi)型嗎?
基本數據類(lèi)型包括byte、int、char、long、float、double、boolean和short. java.lang.String類(lèi)是final類(lèi)型的,因此不可以繼承這個(gè)類(lèi)、不能修改這個(gè)類(lèi)。為了提高效率節省空間,我們應該用 StringBuffer類(lèi)。
三、int 和 Integer 有什么區別?
Java 提供兩種不同的類(lèi)型:引用類(lèi)型和原始類(lèi)型(或內置類(lèi)型)。int是Java的原始數據類(lèi)型,Integer是Java為int提供的封裝類(lèi)。Java為每個(gè)原始類(lèi)型提供了封裝類(lèi)。
原始類(lèi)型封裝類(lèi)
boolean Boolean
char Character
byte Byte
short Short
int Integer
long Long
float Float
double Double
引用類(lèi)型和原始類(lèi)型的行為完全不同,并且它們具有不同的語(yǔ)義。引用類(lèi)型和原始類(lèi)型具有不同的特征和用法,它們包括:大小和速度問(wèn)題,這種類(lèi)型以哪種類(lèi)型的數據結構存儲,當引用類(lèi)型和原始類(lèi)型用作某個(gè)類(lèi)的實(shí)例數據時(shí)所指定的缺省值。對象引用實(shí)例變量的缺省值為 null,而原始類(lèi)型實(shí)例變量的缺省值與它們的類(lèi)型有關(guān)。
四、String 和StringBuffer的區別?
Java平臺提供了兩個(gè)類(lèi):String和StringBuffer,它們可以?xún)Υ婧筒僮髯址,即包含多個(gè)字符的字符數據。這個(gè)String類(lèi)提供了數值不可改變的字符串。而這個(gè)StringBuffer類(lèi)提供的字符串進(jìn)行修改。當你知道字符數據要改變的時(shí)候你就可以使用StringBuffer.典型地,你可以使用StringBuffer來(lái)動(dòng)態(tài)構造字符數據。
五、運行時(shí)異常與一般異常有何異同?
異常表示程序運行過(guò)程中可能出現的非正常狀態(tài),運行時(shí)異常表示虛擬機的通常操作中可能遇到的異常,是一種常見(jiàn)運行錯誤。Java編譯器要求方法必須聲明拋出可能發(fā)生的非運行時(shí)異常,但是并不要求必須聲明拋出未被捕獲的運行時(shí)異常。
六、說(shuō)出Servlet的生命周期,并說(shuō)出Servlet和CGI的區別。
Servlet被服務(wù)器實(shí)例化后,容器運行其init方法,請求到達時(shí)運行其service方法,service方法自動(dòng)派遣運行與請求對應的doXXX方法(doGet,doPost)等,當服務(wù)器決定將實(shí)例銷(xiāo)毀的時(shí)候調用其destroy方法。
與CGI的區別在于Servlet處于服務(wù)器進(jìn)程中,它通過(guò)多線(xiàn)程方式運行其service方法,一個(gè)實(shí)例可以服務(wù)于多個(gè)請求,并且其實(shí)例一般不會(huì )銷(xiāo)毀,而CGI對每個(gè)請求都產(chǎn)生新的進(jìn)程,服務(wù)完成后就銷(xiāo)毀,所以效率上低于CGI.
七、說(shuō)出ArrayList,Vector, LinkedList的存儲性能和特性
ArrayList和Vector都是使用數組方式存儲數據,此數組元素數大于實(shí)際存儲的數據以便增加和插入元素,它們都允許直接按序號索引元素,但是插入元素要涉及數組元素移動(dòng)等內存操作,所以索引數據快而插入數據慢,Vector由于使用了synchronized方法(線(xiàn)程安全),通常性能上較ArrayList差,而LinkedList使用雙向鏈表實(shí)現存儲,按序號索引數據需要進(jìn)行前向或后向遍歷,但是插入數據時(shí)只需要記錄本項的前后項即可,所以插入速度較快。
八、EJB是基于哪些技術(shù)實(shí)現的?并說(shuō)出SessionBean和EntityBean的區別,StatefulBean和StatelessBean的區別。
EJB包括Session Bean、Entity Bean、Message Driven Bean,基于JNDI、RMI、JAT等技術(shù)實(shí)現。
SessionBean在J2EE應用程序中被用來(lái)完成一些服務(wù)器端的業(yè)務(wù)操作,例如訪(fǎng)問(wèn)數據庫、調用其他EJB組件。EntityBean被用來(lái)代表應用系統中用到的數據。
對于客戶(hù)機,SessionBean是一種非持久性對象,它實(shí)現某些在服務(wù)器上運行的業(yè)務(wù)邏輯。
對于客戶(hù)機,EntityBean是一種持久性對象,它代表一個(gè)存儲在持久性存儲器中的實(shí)體的對象視圖,或是一個(gè)由現有企業(yè)應用程序實(shí)現的實(shí)體。
Session Bean 還可以再細分為 Stateful Session Bean 與 Stateless Session Bean ,這兩種的 Session Bean都可以將系統邏輯放在 method之中執行,不同的是 Stateful Session Bean 可以記錄呼叫者的狀態(tài),因此通常來(lái)說(shuō),一個(gè)使用者會(huì )有一個(gè)相對應的 Stateful Session Bean 的實(shí)體。Stateless Session Bean 雖然也是邏輯組件,但是他卻不負責記錄使用者狀態(tài),也就是說(shuō)當使用者呼叫 Stateless Session Bean 的時(shí)候,EJB Container 并不會(huì )找尋特定的 Stateless Session Bean 的實(shí)體來(lái)執行這個(gè) method.換言之,很可能數個(gè)使用者在執行某個(gè) Stateless Session Bean 的 methods 時(shí),會(huì )是同一個(gè) Bean 的 Instance 在執行。從內存方面來(lái)看, Stateful Session Bean 與 Stateless Session Bean 比較, Stateful Session Bean 會(huì )消耗 J2EE Server 較多的內存,然而 Stateful Session Bean 的優(yōu)勢卻在于他可以維持使用者的狀態(tài)。
九、Collection 和 Collections的區別。
Collection是集合類(lèi)的上級接口,繼承與他的接口主要有Set 和List.
Collections是針對集合類(lèi)的一個(gè)幫助類(lèi),他提供一系列靜態(tài)方法實(shí)現對各種集合的搜索、排序、線(xiàn)程安全化等操作。
十、&和&&的區別。
&是位運算符,表示按位與運算,&&是邏輯運算符,表示邏輯與(and)。
【Java面試題及答案】相關(guān)文章:
java面試題及答案11-01
Java面試題大全及答案10-28
java面試題2017及答案06-08
JAVA編程面試題及答案05-16
最新java面試題及答案08-20
java面試題大全帶答案11-01
NIIT認證Java面試題及答案07-01
Java main方法面試題及答案08-06
高級Java面試題及答案201609-18