1. 程式人生 > >JAVA學習33_Java 設計模式面試題

JAVA學習33_Java 設計模式面試題

第 1 頁 共 10 頁

一、你對 MVC 的理解, MVC 有什麼優缺點?結合 Struts ,說明在一個 Web 應用如何去使

用?
答:
MVC 設計模式(應用觀察者模式的框架模式)
M: Model(Business process layer) ,模型,操作資料的業務處理層 , 並獨立於表現層 (Independe nt
of presentation) 。
V: View(Presentation layer) ,檢視,通過客戶端資料型別顯示資料 , 並回顯模型層的執行結果 。
C: Controller(Control layer) ,控制器,也就是檢視層和模型層橋樑,控制資料的流向,接受
檢視層發出的事件,並重繪檢視

MVC 框架的一種實現模型
模型二 (Servlet-centric) :
JSP+Servlet+JavaBean ,以控制為核心, JSP 只負責顯示和收集資料, Sevlet ,連線檢視和模
型,將檢視層資料,傳送給模型層, JavaBean ,分為業務類和資料實體,業務類處理業務 數
據,資料實體,承載資料,基本上大多數的專案都是使用這種 MVC 的實現模式。
StrutsMVC 框架 (Web application frameworks)
Struts 是使用 MVC 的實現模式二來實現的,也就是以控制器為核心。
Struts 提供了一些元件使用 MVC 開發應用程式:
Model : Struts 沒有提供 model 類。這個商業邏輯必須由 Web 應用程式的開發者以 JavaBea n

或 EJB 的形式提供
View : Struts 提供了 action form 建立 form bean, 用於在 controlle r 和 view 間傳輸資料。此 外 ,
Struts 提供了自定義 JSP 標籤庫,輔助開發者用 JSP 建立互動式的以表單為基礎的應用程 序 ,
應用程式資原始檔保留了一些文字常量和錯誤訊息,可轉變為其它語言,可用於 JSP 中。
Controller : Struts 提供了一個核心的控制器 ActionServlet ,通過這個核心的控制器來呼叫其
他使用者註冊了的自定義的控制器 Action ,自定義 Action 需要符合 Struts 的自定義 Action 規

範,還需要在 struts-config.xml 的特定配置檔案中進行配置,接收 JSP 輸入欄位形成 Action
form ,然後呼叫一個 Action 控制器。 Action 控制器中提供了 model 的邏輯介面。
二、什麼是 WebService ?
答:
WebService 是一個 SOA (面向服務的程式設計)的架構,它是不依賴於語言,不依賴於平
臺,可以實現不同的語言間的相互呼叫,通過 Internet 進行基於 Http 協議的網路應用間的 交
互。
WebService 實現不同語言間的呼叫,是依託於一個標準, webservice 是需要遵守 WSD L
( web 服務定義語言) /SOAP (簡單請求協議)規範的。
WebService=WSDL+SOAP+UDDI ( webservice 的註冊)
Soap 是由 Soap 的 part 和 0 個或多個附件組成,一般只有 part ,在 part 中有 Envelope 和
Body 。
Web Service 是通過提供標準的協議和介面,可以讓不同的程式整合的一種 SOA 架構。第 2 頁 共 10 頁
Web Service 的優點
(1) 可以讓異構的程式相互訪問(跨平臺)
(2) 鬆耦合
(3) 基於標準協議(通用語言,允許其他程式訪問)
Web Service 的基本原理
(1) Service Provide r 採用 WSDL 描述服務
(2) Service Provider 採用 UDDI 將服務的描述檔案釋出到 UDDI 伺服器( Register server )
(3) Service Requestor 在 UDDI 伺服器上查詢並 獲取 WSDL 檔案
(4) Service requestor 將請求繫結到 SOAP ,並訪問相應的服務。
三、什麼是中介軟體?
中介軟體就是程式中可織入的,可重用的,與業務邏輯無關的各種元件。
中介軟體( middleware )是基礎軟體的一大類,屬於可複用軟體的範疇。顧名思義,中 間
件處於作業系統軟體與使用者的應用軟體的中間。中介軟體在作業系統、網路和資料庫之上, 應
用軟體的下層,總的作用是為處於自己上層的應用軟體提供執行與開發的環境,幫助使用者 靈
活、高效地開發和整合複雜的應用軟體。
在眾多關於中介軟體的定義中,比較普遍被接受的是 IDC 表述的:中介軟體是一種獨立的
系統軟體或服務程式,分散式應用軟體藉助這種軟體在不同的技術之間共享資源,中介軟體 位
於客戶機伺服器的作業系統之上,管理計算資源和網路通訊。
分類:資料訪問中介軟體,遠端呼叫中介軟體,訊息中介軟體,交易中介軟體,物件中介軟體。
舉例:
1 , RMI ( Remote Method Invocations, 遠端呼叫)
2 , Load Balancing( 負載均衡,將訪問負荷分散到各個伺服器中 )
3 , Transparent Fail-over( 透明的故障切換 )
4 , Clustering( 叢集 , 用多個小的伺服器代替大型機)
5 , Back-end-Integration( 後端整合,用現有的、新開發的系統如何去整合遺留的系統 )
6 , T ransaction 事務(全域性 / 區域性)全域性事務(分散式事務)區域性事務(在同一資料庫聯 接
內的事務)
7 , Dynamic Redeployment ( 動態重新部署 , 在不停止原系統的情況下,部署新的系統)
8 , System Management( 系統管理 )
9 , Threading( 多執行緒處理 )
10 , Message-oriented Middleware 面向訊息的中介軟體(非同步的呼叫程式設計)
11 , Component Life Cycle( 元件的生命週期管理 )
12 , Resource pooling (資源池)
13 , Security (安全)
14 , Caching (快取)
四、什麼是典型的軟體三層結構?軟體設計為什麼要分層?軟體分層有什麼好處?
答: (1) Presentation layer (表示層)
(1) 表示邏輯(生成介面程式碼)
(2) 接收請求
(3) 處理業務層丟擲的異常
(4) 負責規則驗證(資料格式,資料非空等)
(5) 流程控制第 3 頁 共 10 頁
(2) Service layer (服務層 / 業務層)
(1) 封裝業務邏輯處理,並且對外暴露介面
(2) 負責事務,安全等服務
(3) Persistence layer (持久層)
(1) 封裝資料訪問的邏輯,暴露介面
(2) 提供方便的資料訪問的方案(查詢語言, API ,對映機制等)
Domain layer (域層)
(1) 業務物件以及業務關係的表示
(2) 處理簡單的業務邏輯
(3) 域層的物件可以穿越表示層,業務層,持久層
軟體分層結構使得程式碼維護非常方便,設計明確,各層獨立,專注自己擅長的領域。
五、什麼是 OOP ? OOP 相對於面向過程程式設計有哪些優點?
OOP , Object-Oriented Programming ,面向物件程式設計不同於面向過程程式設計:
( 1 ) OOP 關注物件和角色,也就是事物的本質
1 ) OOP 把客觀世界中的物件抽象成對應的類;
2 )通過類構造例項;
3 )通過依賴、繼承、實現等形式建立物件間的通訊關係
( 2 ) OOP 易於擴充套件,增加或改變業務的功能,無需大幅改動改變原始碼
( 3 ) OOP 易於建模, OOP 就是軟體架構師在計算機高階語言中對客觀世界的抽象和
再現,人們可以很好地理解和建立起計算機中的抽象模型
六、談談 Overload 和 Override 的區別。
答:
方法的重寫 Overriding 和過載 Overloading 是 Java 多型性的不同表現。重寫 Overriding
是父類與子類之間多型性的一種表現,過載 Overloading 是一個類中多型性的一種表現。如
果在子類中定義某方法與其父類有相同的名稱和引數,我們說該方法被重寫 (Overriding) 。 子
類的物件使用這個方法時,將呼叫子類中的定義,對它而言,父類中的定義如同被 “ 遮蔽 ”
了。如果在一個類中定義了多個同名的方法,它們或有不同的引數個數或有不同的引數類 型 ,
則稱為方法的過載 (Overloading) 。 O verloaded 的方法是可以改變返回值的型別。
七、談談 HashMap 和 Hashtable 的區別。
答: HashMap 是輕量級的(執行緒不安全的,效率高的)集合, Hashtable 是重量級的(線
程安全的,效率低的)集合。
都屬於 Map 介面的類,實現了將惟一鍵對映到特定的值上。
HashMap 類沒有分類或者排序。它允許一個 null 鍵和多個 null 值。
Hashtable 類似於 HashMap ,但是不允許 null 鍵和 null 值。它也比 HashMap 慢 ,
因為它是同步的。
八、請問 abstract class 和 interface 有什麼區別?
答:
1) 介面沒有任何的實現 , 而抽象類它可以有部分的實現也可以沒有 ;
2) 如果需要複用或者共享部分程式碼 , 應該用抽象類而不是介面 ;
3) 繼承無法解決型別的轉換問題 , 介面就是為了解決這一問題而產生的 (Java 的單繼第 4 頁 共 10 頁
承是介面產生的根本原因 ) 介面是一種抽象的第三方規範 , 跟物件沒什麼直接關係。
九、請問軟體開發中的設計模式你會使用哪些?
答:我熟悉的設計模式有單例模式, DAO 模式,模板方法,工廠模式,委託代理模式, M VC
模式等。
Singleton 模式主要作用是保證在 Java 應用程式中,一個類 Class 只有一個例項存在。
Singleton 模式一般形式 :
定義一個類,它的建構函式為 private 的,它有一個 static 的 private 的該類變數,在 類
初始化時例項話,通過一個 public 的 getInstance 方法獲取對它的引用 , 繼而呼叫其中的方法 。
十、類的核心特性有哪些?
類具有封裝性、繼承性和多型性。
封裝性:
類的封裝性為類的成員提供公有、預設、保護和私有等多級訪問許可權,目的是隱藏類 中
的私有變數和類中方法的實現細節。
繼承性:
類的繼承性提供從已存在的類建立新類的機制,繼承( inher itance )使一個新類自動擁
有被繼承類(父類)的全部成員。
多型性:
類的多型性提供類中方法執行的多樣性,多型性有兩種表現形式:過載和覆蓋。
十一、請問類與物件有什麼區別?

類就是某一種事物的一般性的集合體,是相同或相似的各個事物共同特性的一種抽象。
物件
在面向物件概念中,物件( Object )是類的例項( instance )。物件與類的關係就像變數
與資料型別的關係一樣。
十二、寫出生產者消費者模型的實現(參照 OOA/D 中老師的程式碼)
十三、用軟體工程和 Java 來敘述購物車( shopping cart )系統實現
十四、檔案系統的幾個類 :FileInputStream 、 FileOutputStream 、 FileReader 、 FileWriter 的區 別
十五、請寫出 Java API 中最常用的五個包,並且各舉兩個類加以說明。 ( 查閱 api)
十六、請問你在 “ 電信運營支撐系統 ” 中遇到了哪些問題?你是怎麼解決的?做這個專案 你
最大的收穫是什麼? ( 自己結合自己的專案 , 做一下總結 , 然後想想怎麼去回答 )
十七、請說出幾個常用的異常類
答: NullpointException (空指標異常)
ClassNotFoundException (類找不到異常)
ClassCastException (型別轉換異常)
IllegalArgumentException (非法引數異常)
ArithmeticException (算術異常)
NumberFormatException (資料格式異常)
IndexOutOfBoundsException (陣列下標越界異常)
IllegalStateException (非法語句異常)
十八、什麼是程序和執行緒?兩者的區別是什麼? ( 經常會被問道 , 查閱作業系統書 , 或問問陳 老
師 )
十九、請簡要描述一下你做的 ShoppingCar t 專案。 ( 自己結合自己的專案 , 做一下總結 , 然後 想第 5 頁 共 10 頁
想怎麼去回答 )
二十、請問網路 7 層協議, tcp/ip4 層協議是什麼?
二十一、 Java 面向物件的四大特點
二十二、 public, private, protected , default 訪問許可權(可見性)
答:
public :全域性可見
protected :繼承體系結構之間可見
default (或不寫):同包可見
private :本類可見。
二十三、名詞解釋
CRM
[Customer Relationship Management, 客戶關係管理 ]
ERP
[Enterprise Resource Planning, 企業資源規劃 ]
OSS

相關推薦

JAVA學習33_Java 設計模式試題

第 1 頁 共 10 頁 一、你對 MVC 的理解, MVC 有什麼優缺點?結合 Struts ,說明在一個 Web 應用如何去使 用?答:MVC 設計模式(應用觀察者模式的框架模式)M: Model(Business process layer) ,模型,操作資料的業務

Java設計模式試題2則

【題目-1】Windows Media Player和RealPlayer是常用的媒體播放器,它們的API結構和呼叫方法非常不同,現在你的應用需要同時支援呼叫這2種播放器的API。你要怎麼設計

Java常見設計模式試題

1.請列舉出在JDK中幾個常用的設計模式? 單例模式(Singleton pattern)用於Runtime,Calendar和其他的一些類中。工廠模式(Factory pattern)被用於各種不可變的類如 Boolean,像Boolean.valueOf,觀察者模式(O

Java 設計模式試題

一、你對 MVC 的理解, MVC 有什麼優缺點?結合 Struts ,說明在一個 Web 應用如何去使 用? 答: MVC 設計模式(應用觀察者模式的框架模式) M: Model(Business process layer) ,模型,操作資料的業務處

Java學習筆記——設計模式之五.工廠方法

strong scanner multipl 石頭 simple 決定 定義 opera 下使用 水邊一只青蛙在笑       ——石頭和水 工廠方法模式(Factory Method),定義了一個用於創建對象的接口,讓實現類決定實例化哪一個類。工廠方法使一個類的實

Java學習筆記——設計模式之六.原型模式(淺克隆和深克隆)

catch 新的 att over 引用變量 col logs implement pri That there‘s some good in this world, Mr. Frodo. And it‘s worth fighting for. 原型模式(prot

Java學習筆記——設計模式之七.模板方法模式

tro mage emp java學習 java學習筆記 trac 子類 技術 primitive 模板方法模式(TemplateMethod),定義一個操作中的算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟。

Java學習——模板設計模式——抽象類的實際應用

設計模式的精髓:解耦。而模板設計模式是通過第三方進行解耦 什麼是內聚、解耦大家可以看一下博主 小異常 的博文:https://blog.csdn.net/sun8112133/article/details/81040275 模板設計模式:(基於抽象類)在一個方法中定義一個演算法的骨架,而將

java學習筆記-設計模式之單例模式如何防止反射及反序列化漏洞

在前一篇文章中,對單例模式列舉了五種實現方式。其中列舉模式擁有出生光環,天生就沒有反射及反序列化漏洞。針對其他四種實現方式,在本篇文章中對懶漢式單例模式實現進行反射及反序列化漏洞測試。 一、通過反射破解懶漢式單例模式 重新建立測試類TestClientNew,通過反射獲取

設計模式試題

一、你對 MVC 的理解, MVC 有什麼優缺點?結合 Struts ,說明在一個 Web 應用如何去使 用? 答: MVC 設計模式(應用觀察者模式的框架模式) M: Model(Business process layer) ,模型,操作資料的業務處理層 , 並獨立於表

2019最新JAVA學習路線-技術要點-試題

contains ddl 發送 sequence 寫入文件 rgs apt api array ————————————&md

試題7.java常用的設計模式有哪些

設計模式主要分三個型別:建立型、結構型和行為型。  策略模式,代理模式,單例模式,多例模式,工廠方法模式,抽象工廠模式,門面模式,介面卡模式,模板方法模式,建造者模式,橋樑模式,命令模式,裝飾模式,迭代器模式,組合模式,觀察者模式,責任鏈模式,訪問者模式,狀態模式,原型模式

java單例設計模式學習

tin pub private ima dem final ret singleton public 餓漢式和懶漢式的區別 1,餓漢式是空間換時間,懶漢式是時間換空間 2,在多線程訪問時,餓漢式不會創建多個對象,而懶漢式有可能會創建多個對象 懶漢模式 class S

Java學習筆記--設計原則與設計模式、類載入、反射的介紹

設計原則、設計模式 面向物件思想設計原則 單一職責原則:每個類應該只有一個職責,對外只能提供一種功能。其實就是”高內聚,低耦合”。 開閉原則:對擴充套件開放,對修改關閉。即在設計一個模組的時候,應當使這個模組可以在不被修改的前提下被擴充套件。 里氏替換原則

【福利】BAT架構師分享最全Java架構師學習技能圖譜:包含Java程式設計+網路+設計模式+資料庫+分散式等

**【福利】**總結了一份架構圖譜,希望對想成為架構師的朋友有一定的參考和幫助。 我簡短談下目前大家關心的話題:網際網路裁員浪潮裡,大家會發現一般裁員會先從可替代性的業務性程式設計師開始,原因很簡單,由於日常負責專案大部分都是業務性的,真正有技術實力提升機會非常有限,平時工作繁忙,忽略了

java軟件設計模式——單例設計模式中的【餓漢式】與 【懶漢式】示例

nal pre turn new對象 構造方法 sta 餓漢式 () urn 以下為單例設計模式中的兩種經典模式的代碼示意: 1 單例設計模式(spring框架IOC,默認創建的對象都是單例的): 2 餓漢式: 3 public class Sing

java】:多線程試題

編寫 cond func condition pri ide syn ack rri 經常面試的時候,讓寫各種亂七八糟的多線程面試題,收集了很多,有些還是挺好玩的。 1、編寫程序實現,子線程循環10次,接著主線程循環20次,接著再子線程循環10次,主線程循環20

工廠模式(think in java中的設計模式

org 我們 import lac otf 返回值 類型 int ava 工廠模式:工廠模式是利用工廠類的工廠方法創建對象的一種設計模式,目的是創建對象,但是很多時候創建對象我們會考慮很多其他因素~~~~比如限定輸入,限定返回值是否某個,比如在創建的過程中進行一些判斷,通過

叠代器模式(think in java中的設計模式

一個 div 封裝 imp 叠代器 方法 println rri 數字 叠代器模式:用來叠代一個容器集合數組的一種模式。可能大家很多時候是用for循環進行叠代的,但是實際上for循環內部不能使用remove方法,但是叠代器可以,這是因為叠代器內部進行了該方法的邏輯處理。同樣

一次測試崗位針對Java和接口的試題

oca ted new system tac get pri 同步機制 線程 1、post和get的區別? 1. get是從服務器上獲取數據,post是向服務器傳送數據。2. get是把參數數據隊列加到提交表單的ACTION屬性所指的URL中,值和表單內各個字段一一對應,在