更新時間:2023-01-10 13:47:49 來源:動力節點 瀏覽2274次
2023年已經開始了,接近我們的是大家常說的金三銀四,時間晃眼就過去,不少同學開始為新的工作早早做出準備,不管是臨陣磨槍還是勢在必得,想必看文章的你也正期待著升值漲薪吧,大家不妨來看看小編為大家盤點整理出的java反射面試題。
1、實現單例設計模式(懶漢、餓漢)
//懶漢,顧名思義比較懶,在用的時候才實例化
public class Singleton {
//創建實例,注意,此時沒有new
private static Singleton instance = null;
//構造方法私有化
private Singleton() {}
//公有的靜態方法,返回實例對象
public static Singleton getInstance() {
if (instance == null) {
//這里才new
instance = new Singleton();
}
return instance;
}
}
//餓漢,顧名思義很饑餓,創建對象的時候就直接new
public class Singleton {
//創建實例的時候就new
private static Singleton instance = new Singleton();
// 私有化構造方法,外部不能new
private Singleton() {}
public static Singleton getInstance() {
return instance;
}
}
2、簡述Java的反射機制和使用場景
反射是Java的一種機制,可以讓我們在運行時獲取類的信息
通過反射我們可以獲取到類的所有信息,比如它的屬性、構造器、方法、注解等
適用于需要動態創建對象的場景
關于反射能說的太多,已單獨出一篇博客來記錄,請出門右轉至信不信十分鐘讓你徹底搞懂java反射
3、什么是內存泄漏,怎么確定內存泄漏?
概念:內存泄漏就是指jvm內存沒有及時釋放,用人話說就是使用完的對象沒有被回收,一般造成原因都是編碼不規范,new了很多值為null的對象,然后又不調用
怎么確認:linux有個工具叫valgrind,一兩句話說不清楚,單獨拎出來講,移步使用valgrind來檢查內存泄漏
4、簡述動態代理和靜態代理
靜態代理:
動態代理:
5、Java中接口和抽象類的異同?
先單獨說一點,讓你可以在朋友面前裝逼:接口也能被繼承,只不過是被接口繼承
1、都能包含抽象的方法,這些抽象的方法用于描述類具備的功能,不提供具體的實現(jdk1.8允許接口有一個default的實現方法)
2、接口是對事物行為的抽象,而抽象類是對事務本質的抽象;
3、接口中的變量必須給出初始值,抽象類可以不給;
4、一個類只能繼承一個抽象類,但可以實現多個接口;
5、抽象類中可以寫非抽象的方法,從而避免在子類中重復書寫它們,這樣可以提高代碼的復用性,這是抽象類的優勢;接口中只能有抽象的方法;
針對第二點和第四點舉個例幫助理解:
對于抽象類:比方說有公雞、母雞、公狗、母狗,我們可以抽象出兩個更高級的類,雞類和狗類,因為你不能又是雞又是狗,所以你只能繼承其中一個,這就是為什么抽象類只能單繼承;
對于接口:眾所周知,雞都會唱、跳、rap,這時候就可以把雞的基本操作抽象成一個接口,而有的雞通過后天練習可能會學會打籃球,那么就存在一種高端雞,又會唱跳rap又會打籃球,這就是為什么接口可以多實現;
6、Java中sleep和wait的區別?
1、sleep是Thread的方法,wait是Object的方法
2、sleep方法沒有釋放鎖,而wait方法釋放了鎖
3、wait,notify和notifyAll只能在同步控制方法或者同步控制塊里面使用,而sleep可以在任何地方使用
4、sleep必須捕獲異常,而wait,notify和notifyAll不需要捕獲異常
7、Java如何進行高效的數組拷貝?
Arrays.copyOf或 System.arraycopy,是自己new數組, 然后for循環復制效率的兩倍左右
為什么快,因為它們是native方法;
8、http中get和post的區別?
GET在瀏覽器回退時是無害的,而POST會再次提交請求。
GET產生的URL地址可以被Bookmark,而POST不可以。
GET請求會被瀏覽器主動cache,而POST不會,除非手動設置。
GET請求只能進行url編碼,而POST支持多種編碼方式。
GET請求參數會被完整保留在瀏覽器歷史記錄里,而POST中的參數不會被保留。
GET請求在URL中傳送的參數是有長度限制的,而POST么有。
對參數的數據類型,GET只接受ASCII字符,而POST沒有限制。
GET比POST更不安全,因為參數直接暴露在URL上,所以不能用來傳遞敏感信息。
GET參數通過URL傳遞,POST放在Request body中。
然而實際上,它們的本質都是 TCP 連接,并無區別。上面的答案純粹是為了應付面試官。真正導致產生區別的原因是 HTTP 的規定以及瀏覽器/服務器的限制,這才導致它們在應用過程中可能會有所不同。
以上就是“90%會被面試官問到的Java反射面試題”,你能回答上來嗎?如果想要了解更多的Java面試題相關內容,可以關注動力節點Java官網。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習