常見的Java設計模式面試題全解析

常見的Java設計模式面試題全解析

北大青鳥長沙麓谷校區(qū)      2022-04-07 20:14:01     7

常見的Java設計模式面試題全解析,1.throw和throws的區(qū)別?throw:是真實拋出一個異常。throws:是聲明可能會拋出一個異常。2.final、finally、finalize有什么區(qū)別

課程價格 請咨詢

上課時段: 授課校區(qū):

詳細介紹

1.throw和throws的區(qū)別?

throw:是真實拋出一個異常。

throws:是聲明可能會拋出一個異常。

2.final、finally、finalize有什么區(qū)別?

final:是修飾符,如果修飾類,此類不能被繼承;如果修飾方法和變量,則表示此方法和此變量不能在被改變,只能使用。

finally:是try{}catch{}finally{}最后一部分,表示不論發(fā)生任何情況都會執(zhí)行,finally部分可以省略,但如果finally部分存在,則一定會執(zhí)行finally里面的代碼。

finalize:是Object類的一個方法,在垃圾收集器執(zhí)行的時候會調用被回收對象的此方法。

3.try-catch-finally中哪個部分可以省略?

try-catch-finally其中catch和finally都可以被省略,但是不能同時省略,也就是說有try的時候,必須后面跟一個catch或者finally。

4.try-catch-finally中,如果catch中return了,finally還會執(zhí)行嗎?

finally一定會執(zhí)行,即使是catch中return了,catch中的return會等finally中的代碼執(zhí)行完之后,才會執(zhí)行。

5.常見的異常類有哪些?

NullPointerException空指針異常

ClassNotFoundException指定類不存在

NumberFormatException字符串轉換為數(shù)字異常

IndexOutOfBoundsException數(shù)組下標越界異常

ClassCastException數(shù)據(jù)類型轉換異常

FileNotFoundException文件未找到異常

NoSuchMethodException方法不存在異常

IOException IO異常

SocketException Socket異常

二、網(wǎng)絡

1.http響應碼301和302代表的是什么?有什么區(qū)別?

301:永久重定向。

302:暫時重定向。

它們的區(qū)別是,301對搜索引擎優(yōu)化(SEO)更加有利;302有被提示為網(wǎng)絡攔截的風險。

2.forward和redirect的區(qū)別?

forward是轉發(fā)和redirect是重定向:

地址欄url顯示:foward url不會發(fā)生改變,redirect url會發(fā)生改變;

數(shù)據(jù)共享:forward可以共享request里的數(shù)據(jù),redirect不能共享;

效率:forward比redirect效率高。

3.簡述tcp和udp的區(qū)別?

tcp和udp是OSI模型中的運輸層中的協(xié)議。tcp提供可靠的通信傳輸,而udp則常被用于讓廣播和細節(jié)控制交給應用的通信傳輸。

兩者的區(qū)別大致如下:

tcp面向連接,udp面向非連接即發(fā)送數(shù)據(jù)前不需要建立鏈接;

tcp提供可靠的服務(數(shù)據(jù)傳輸),udp無法保證;

tcp面向字節(jié)流,udp面向報文;

tcp數(shù)據(jù)傳輸慢,udp數(shù)據(jù)傳輸快;

4.tcp為什么要三次握手,兩次不行嗎?為什么?

如果采用兩次握手,那么只要服務器發(fā)出確認數(shù)據(jù)包就會建立連接,但由于客戶端此時并未響應服務器端的請求,那此時服務器端就會一直在等待客戶端,這樣服務器端就白白浪費了一定的資源。若采用三次握手,服務器端沒有收到來自客戶端的再此確認,則就會知道客戶端并沒有要求建立請求,就不會浪費服務器的資源。

5.說一下tcp粘包是怎么產(chǎn)生的?

tcp粘包可能發(fā)生在發(fā)送端或者接收端,分別來看兩端各種產(chǎn)生粘包的原因:

發(fā)送端粘包:發(fā)送端需要等緩沖區(qū)滿才發(fā)送出去,造成粘包;

接收方粘包:接收方不及時接收緩沖區(qū)的包,造成多個包接收。

6.OSI的七層模型都有哪些?

物理層:利用傳輸介質為數(shù)據(jù)鏈路層提供物理連接,實現(xiàn)比特流的透明傳輸。

數(shù)據(jù)鏈路層:負責建立和管理節(jié)點間的鏈路。

網(wǎng)絡層:通過路由選擇算法,為報文或分組通過通信子網(wǎng)選擇最適當?shù)穆窂健?/p>

傳輸層:向用戶提供可靠的端到端的差錯和流量控制,保證報文的正確傳輸。

會話層:向兩個實體的表示層提供建立和使用連接的方法。

表示層:處理用戶信息的表示問題,如編碼、數(shù)據(jù)格式轉換和加密解密等。

應用層:直接向用戶提供服務,完成用戶希望在網(wǎng)絡上完成的各種工作。

7.get和post請求有哪些區(qū)別?

get請求會被瀏覽器主動緩存,而post不會。

get傳遞參數(shù)有大小限制,而post沒有。

post參數(shù)傳輸更安全,get的參數(shù)會明文限制在url上,post不會。

8.如何實現(xiàn)跨域?

實現(xiàn)跨域有以下幾種方案:

服務器端運行跨域設置CORS等于*;

在單個接口使用注解 CrossOrigin運行跨域;

使用jsonp跨域;

9.說一下JSONP實現(xiàn)原理?

jsonp:JSON with Padding,它是利用script標簽的src連接可以訪問不同源的特性,加載遠程返回的“JS函數(shù)”來執(zhí)行的。

三、設計模式

1.說一下你熟悉的設計模式?

單例模式:保證被創(chuàng)建一次,節(jié)省系統(tǒng)開銷。

工廠模式(簡單工廠、抽象工廠):解耦代碼。

觀察者模式:定義了對象之間的一對多的依賴,這樣一來,當一個對象改變時,它的所有的依賴者都會收到通知并自動更新。

外觀模式:提供一個統(tǒng)一的接口,用來訪問子系統(tǒng)中的一群接口,外觀定義了一個高層的接口,讓子系統(tǒng)更容易使用。

模版方法模式:定義了一個算法的骨架,而將一些步驟延遲到子類中,模版方法使得子類可以在不改變算法結構的情況下,重新定義算法的步驟。

狀態(tài)模式:允許對象在內部狀態(tài)改變時改變它的行為,對象看起來好像修改了它的類。

2.簡單工廠和抽象工廠有什么區(qū)別?

簡單工廠:用來生產(chǎn)同一等級結構中的任意產(chǎn)品,對于增加新的產(chǎn)品,無能為力。

工廠方法:用來生產(chǎn)同一等級結構中的固定產(chǎn)品,支持增加任意產(chǎn)品。

抽象工廠:用來生產(chǎn)不同產(chǎn)品族的全部產(chǎn)品,對于增加新的產(chǎn)品,無能為力;支持增加產(chǎn)品族。

以上就是北大青鳥長沙麓谷校區(qū)java培訓機構的小編針對“常見的Java設計模式面試題全解析”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務。

Java面試題

培訓啦提醒您:交易時請核實對方資質,對于過大宣傳或承諾需謹慎!任何要求預付定金、匯款等方式均存在風險,謹防上當。