1. 程式人生 > 其它 >Java面經總結

Java面經總結

自我介紹

專案介紹,專案遇到的問題,怎麼解決,用到的技術棧

生成物件的幾種方式

new、反射Class.newInstance、clone()

多執行緒實現的方式

繼承Thread類,重寫run方法
實現Runnable介面,重寫run方法
通過執行緒池建立執行緒,Executor框架

同步實現的方式

synchronized
await、notify
volatile
reentrantlock

NIO和BIO的區別

BIO是阻塞的,NIO是非阻塞的.
BIO是面向流的,只能單向讀寫,NIO是面向緩衝的, 可以雙向讀寫
使用BIO做Socket連線時,當沒有資料時,會掛起當前執行緒,阻塞等待,需要使用NIO進行BIO多路複用, 使用一個執行緒來監聽所有Socket連線,使用本執行緒或者其他執行緒處理連線。

泛型是什麼,泛型的用法

引數化型別,定義時抽象,呼叫時傳入具體型別。例如ArrayList,通過尖括號傳入型別。

值引用和物件引用的區別

基本型別都是傳值,傳遞的是原變數值的拷貝,改變這個值不會改變原變數,而引用型別傳遞的是地址,也就是引數與原變數指向的是同一個地址,如果改變引數的值,原變數的值也會改變。

計算機網路五層模型

物理層、資料鏈路層、網路層、傳輸層、應用層

TCP和UDP的區別

TCP面向連線,UDP是無連線的
TCP提供可靠的服務,無差錯,不丟失,UDP不保證可靠交付
TCP連線只能是點到點的,UDP支援一對一,一對多,多對一和多對多

==和equals區別

"=="適用於基本資料型別和引用型別,對於基本型別,比較的是二者的值,對於引用型別,比較的是二者的記憶體地址。
"equals"適用於引用型別,預設比較的也是兩個物件的地址,但一般會被重寫,重寫後比較的是兩個物件的內容。

final和finally區別

final是java關鍵字,用來修飾類、方法、變數。修飾類時,類無法被繼承,修飾方法時,方法無法被重寫,修飾變數時,變數值無法改變。
finally是異常處理語句的一部分,它修飾的程式碼塊在異常處理完成後會被執行。

SpringBoot優點

Spring框架的升級版,更加簡潔高效。
不需要編寫大量樣板程式碼、XML 配置,提高效率。
可以很容易地與 Spring 生態系統整合。
提供嵌入式 HTTP 伺服器,如 Tomcat 和 Jetty。

SpringBoot執行過程

SpringBoot的自動配置

利用了Spring的條件化配置,條件化配置允許配置存在於應用中,但是在滿足某些特定條件前會忽略這些配置。用到@Conditional條件化註解。

SpringBoot的配置檔案的種類,優先順序

預設的配置檔名為application.properties 或者 application.yml
配置屬性可以通過配置檔案或者其他方式提供。它們的優先順序大致如下:
命令列 > 系統屬性 > 環境變數 > 外部配置檔案 > 內部配置檔案

SpringBoot的啟動方式

執行springApplication這個類的main方法
命令列mvn spring-boot:run
打包成jar,命令列執行

SpringBoot用得的設計模式

單例模式,預設生成bean的時候
工廠模式,生成bean
代理模式,aop
觀察者模式,事務

Object的方法

toString、hashCode、equals、wait、notify、finalize、clone

Servlet的生命週期

初始化 init () 方法。
呼叫 service() 方法來處理客戶端的請求。
銷燬前呼叫 destroy() 方法。
最後,由 JVM 的垃圾回收器進行垃圾回收。

Cookie和Session的區別

cookie一般用於客戶端瀏覽器,儲存使用者登入資訊,有效時間可長可短,不同域名的cookie相互獨立。
session常用於服務端,儲存使用者資訊,不同使用者請求可以共用一個session,有效時間一般較短。

資料庫多表聯查的方法

內連線:查詢的是多個表的交集
外連線:查詢的是一張表的全部資料和另一張表滿足要求的資料
子查詢

JDK、JVM、JRE 三者關係

JDK > JRE > JVM

String、StringBuffer、StringBuilder區別

String是字串物件,內部使用final修飾的char陣列實現,因此容量不能動態改變,所以它是執行緒安全的,一般儲存於jvm的常量池。
StringBuffer是執行緒安全的字串物件,內部使用char陣列實現,容量可變。
StringBuilder是非執行緒安全字串物件,內部使用char陣列實現,容量可變。

建構函式

物件一建立就執行,給物件初始化
函式名與類名相同
不用定義返回值型別
不可以寫return語句

hashmap和hashtabe區別

hashmap執行緒不安全,允許有null的鍵和值,效率高些
hashtable執行緒安全,不允許有null的鍵和值

AOP

AOP是希望能夠將通用功能邏輯從業務程式碼中分離出來,能夠使得很多類共享一段程式碼,一旦發生變化,不必修改很多類,而只需要修改這段程式碼即可。