Java面試題目_java經(jīng)典面試題_java基礎(chǔ)面試題
Java工程師在求職面試中,提前了解面試題目很有必要。那么你知道Java面試有哪些面試題呢?下面小編已經(jīng)為你們整理了Java面試題目,一起來看看吧。
Java面試題目一
一、你對MVC的理解,MVC有什么優(yōu)缺點?結(jié)合Struts,說明在一個Web應(yīng)用如何去使用?
答:
MVC設(shè)計模式(應(yīng)用觀察者模式的框架模式)
M: Model(Business process layer),模型,操作數(shù)據(jù)的業(yè)務(wù)處理層,并獨立于表現(xiàn)層(Independent of presentation)。
V: View(Presentation layer),視圖,通過客戶端數(shù)據(jù)類型顯示數(shù)據(jù),并回顯模型層的執(zhí)行結(jié)果。
C: Controller(Control layer),控制器,也就是視圖層和模型層橋梁,控制數(shù)據(jù)的流向,接受視圖層發(fā)出的事件,并重繪視圖
MVC框架的一種實現(xiàn)模型
模型二(Servlet-centric):
JSP+Servlet+JavaBean,以控制為核心,JSP只負責(zé)顯示和收集數(shù)據(jù),Sevlet,連接視圖和模型,將視圖層數(shù)據(jù),發(fā)送給模型層,JavaBean,分為業(yè)務(wù)類和數(shù)據(jù)實體,業(yè)務(wù)類處理業(yè)務(wù)數(shù)據(jù),數(shù)據(jù)實體,承載數(shù)據(jù),基本上大多數(shù)的項目都是使用這種MVC的實現(xiàn)模式。
StrutsMVC框架(Web application frameworks)
Struts是使用MVC的實現(xiàn)模式二來實現(xiàn)的,也就是以控制器為核心。
Struts提供了一些組件使用MVC開發(fā)應(yīng)用程序:
Model:Struts沒有提供model類。這個商業(yè)邏輯必須由Web應(yīng)用程序的開發(fā)者以JavaBean或EJB的形式提供
View:Struts提供了action form創(chuàng)建form bean, 用于在controller和view間傳輸數(shù)據(jù)。此外,Struts提供了自定義JSP標(biāo)簽庫,輔助開發(fā)者用JSP創(chuàng)建交互式的以表單為基礎(chǔ)的應(yīng)用程序,應(yīng)用程序資源文件保留了一些文本常量和錯誤消息,可轉(zhuǎn)變?yōu)槠渌Z言,可用于JSP中。
Controller:Struts提供了一個核心的控制器ActionServlet,通過這個核心的控制器來調(diào)用其他用戶注冊了的自定義的控制器Action,自定義Action需要符合Struts的自定義Action規(guī)范,還需要在struts-config.xml的特定配置文件中進行配置,接收JSP輸入字段形成Action form,然后調(diào)用一個Action控制器。Action控制器中提供了model的邏輯接口。
二、什么是WebService?
答:
WebService是一個SOA(面向服務(wù)的編程)的架構(gòu),它是不依賴于語言,不依賴于平臺,可以實現(xiàn)不同的語言間的相互調(diào)用,通過Internet進行基于Http協(xié)議的網(wǎng)絡(luò)應(yīng)用間的交互。
WebService實現(xiàn)不同語言間的調(diào)用,是依托于一個標(biāo)準(zhǔn),webservice是需要遵守WSDL(web服務(wù)定義語言)/SOAP(簡單請求協(xié)議)規(guī)范的。
WebService=WSDL+SOAP+UDDI(webservice的注冊)
Soap是由Soap的part和0個或多個附件組成,一般只有part,在part中有Envelope和Body。
Web Service是通過提供標(biāo)準(zhǔn)的協(xié)議和接口,可以讓不同的程序集成的一種SOA架構(gòu)。
Web Service的優(yōu)點
(1) 可以讓異構(gòu)的程序相互訪問(跨平臺)
(2) 松耦合
(3) 基于標(biāo)準(zhǔn)協(xié)議(通用語言,允許其他程序訪問)
Web Service的基本原理
(1) Service Provider采用WSDL描述服務(wù)
(2) Service Provider 采用UDDI將服務(wù)的描述文件發(fā)布到UDDI服務(wù)器(Register server)
(3) Service Requestor在UDDI服務(wù)器上查詢并 獲取WSDL文件
(4) Service requestor將請求綁定到SOAP,并訪問相應(yīng)的服務(wù)。
Java面試題目二
一、什么是中間件?
中間件就是程序中可織入的,可重用的,與業(yè)務(wù)邏輯無關(guān)的各種組件。
中間件(middleware)是基礎(chǔ)軟件的一大類,屬于可復(fù)用軟件的范疇。顧名思義,中間件處于操作系統(tǒng)軟件與用戶的應(yīng)用軟件的中間。中間件在操作系統(tǒng)、網(wǎng)絡(luò)和數(shù)據(jù)庫之上,應(yīng)用軟件的下層,總的作用是為處于自己上層的應(yīng)用軟件提供運行與開發(fā)的環(huán)境,幫助用戶靈活、高效地開發(fā)和集成復(fù)雜的應(yīng)用軟件。
在眾多關(guān)于中間件的定義中,比較普遍被接受的是IDC表述的:中間件是一種獨立的系統(tǒng)軟件或服務(wù)程序,分布式應(yīng)用軟件借助這種軟件在不同的技術(shù)之間共享資源,中間件位于客戶機服務(wù)器的操作系統(tǒng)之上,管理計算資源和網(wǎng)絡(luò)通信。
分類:數(shù)據(jù)訪問中間件,遠程調(diào)用中間件,消息中間件,交易中間件,對象中間件。
舉例:
1,RMI(Remote Method Invocations, 遠程調(diào)用)
2,Load Balancing(負載均衡,將訪問負荷分散到各個服務(wù)器中)
3,Transparent Fail-over(透明的故障切換)
4,Clustering(集群,用多個小的服務(wù)器代替大型機)
5,Back-end-Integration(后端集成,用現(xiàn)有的、新開發(fā)的系統(tǒng)如何去集成遺留的系統(tǒng))
6,Transaction事務(wù)(全局/局部)全局事務(wù)(分布式事務(wù))局部事務(wù)(在同一數(shù)據(jù)庫聯(lián)接內(nèi)的事務(wù))
7,Dynamic Redeployment(動態(tài)重新部署,在不停止原系統(tǒng)的情況下,部署新的系統(tǒng))
8,System Management(系統(tǒng)管理)
9,Threading(多線程處理)
10,Message-oriented Middleware面向消息的中間件(異步的調(diào)用編程)
11,Component Life Cycle(組件的生命周期管理)
12,Resource pooling(資源池)
13,Security(安全)
14,Caching(緩存)
二、什么是典型的軟件三層結(jié)構(gòu)?軟件設(shè)計為什么要分層?軟件分層有什么好處?
答:(1) Presentation layer(表示層)
(1) 表示邏輯(生成界面代碼)
(2) 接收請求
(3) 處理業(yè)務(wù)層拋出的異常
(4) 負責(zé)規(guī)則驗證(數(shù)據(jù)格式,數(shù)據(jù)非空等)
(5) 流程控制
(2) Service layer(服務(wù)層/業(yè)務(wù)層)
(1) 封裝業(yè)務(wù)邏輯處理,并且對外暴露接口
(2) 負責(zé)事務(wù),安全等服務(wù)
(3) Persistence layer(持久層)
(1) 封裝數(shù)據(jù)訪問的邏輯,暴露接口
(2) 提供方便的數(shù)據(jù)訪問的方案(查詢語言,API,映射機制等)
Domain layer(域?qū)?
(1) 業(yè)務(wù)對象以及業(yè)務(wù)關(guān)系的表示
(2) 處理簡單的業(yè)務(wù)邏輯
(3) 域?qū)拥膶ο罂梢源┰奖硎緦樱瑯I(yè)務(wù)層,持久層
軟件分層結(jié)構(gòu)使得代碼維護非常方便,設(shè)計明確,各層獨立,專注自己擅長的領(lǐng)域。
三、請問類與對象有什么區(qū)別?
類
類就是某一種事物的一般性的集合體,是相同或相似的各個事物共同特性的一種抽象。
對象
在面向?qū)ο蟾拍钪校瑢ο?Object)是類的實例(instance)。對象與類的關(guān)系就像變量與數(shù)據(jù)類型的關(guān)系一樣。
Java面試題目三
一、什么是OOP?OOP相對于面向過程編程有哪些優(yōu)點?
OOP,Object-Oriented Programming,面向?qū)ο缶幊滩煌诿嫦蜻^程編程:
(1)OOP關(guān)注對象和角色,也就是事物的本質(zhì)
1)OOP把客觀世界中的對象抽象成對應(yīng)的類;
2)通過類構(gòu)造實例;
3)通過依賴、繼承、實現(xiàn)等形式建立對象間的通信關(guān)系
(2)OOP易于擴展,增加或改變業(yè)務(wù)的功能,無需大幅改動改變源代碼
(3)OOP易于建模,OOP就是軟件架構(gòu)師在計算機高級語言中對客觀世界的抽象和再現(xiàn),人們可以很好地理解和建立起計算機中的抽象模型
二、談?wù)凮verload和Override的區(qū)別。
答:
方法的重寫Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。重寫Overriding是父類與子類之間多態(tài)性的一種表現(xiàn),重載Overloading是一個類中多態(tài)性的一種表現(xiàn)。如果在子類中定義某方法與其父類有相同的名稱和參數(shù),我們說該方法被重寫(Overriding)。子類的對象使用這個方法時,將調(diào)用子類中的定義,對它而言,父類中的定義如同被“屏蔽”了。如果在一個類中定義了多個同名的方法,它們或有不同的參數(shù)個數(shù)或有不同的參數(shù)類型,則稱為方法的重載(Overloading)。Overloaded的方法是可以改變返回值的類型。
三、談?wù)凥ashMap和Hashtable的區(qū)別。
答: HashMap是輕量級的(線程不安全的,效率高的)集合,Hashtable是重量級的(線程安全的,效率低的)集合。
都屬于Map接口的類,實現(xiàn)了將惟一鍵映射到特定的值上。
HashMap 類沒有分類或者排序。它允許一個 null 鍵和多個 null 值。
Hashtable 類似于 HashMap,但是不允許 null 鍵和 null 值。它也比 HashMap 慢,因為它是同步的。
四、請問abstract class和interface有什么區(qū)別?
答:
1) 接口沒有任何的實現(xiàn),而抽象類它可以有部分的實現(xiàn)也可以沒有;
2) 如果需要復(fù)用或者共享部分代碼,應(yīng)該用抽象類而不是接口;
3) 繼承無法解決類型的轉(zhuǎn)換問題,接口就是為了解決這一問題而產(chǎn)生的(Java的單繼承是接口產(chǎn)生的根本原因) 接口是一種抽象的第三方規(guī)范,跟對象沒什么直接關(guān)系。
五、請問軟件開發(fā)中的設(shè)計模式你會使用哪些?
答:我熟悉的設(shè)計模式有單例模式,DAO模式,模板方法,工廠模式,委托代理模式,MVC模式等。
Singleton模式主要作用是保證在Java應(yīng)用程序中,一個類Class只有一個實例存在。
Singleton模式一般形式:
定義一個類,它的構(gòu)造函數(shù)為private的,它有一個static的private的該類變量,在類初始化時實例話,通過一個public的getInstance方法獲取對它的引用,繼而調(diào)用其中的方法。
六、類的核心特性有哪些?
類具有封裝性、繼承性和多態(tài)性。
封裝性:
類的封裝性為類的成員提供公有、缺省、保護和私有等多級訪問權(quán)限,目的是隱藏類中的私有變量和類中方法的實現(xiàn)細節(jié)。
繼承性:
類的繼承性提供從已存在的類創(chuàng)建新類的機制,繼承(inheritance)使一個新類自動擁有被繼承類(父類)的全部成員。
多態(tài)性:
類的多態(tài)性提供類中方法執(zhí)行的多樣性,多態(tài)性有兩種表現(xiàn)形式:重載和覆蓋。
看了“Java面試題目”