有些Java面試題答案是我本身總結的,也有些Java面試題及答案是在網上搜集整理的。這些高級Java面試題及答案不免會存在一些錯誤,這些面試題答案不免會存在一些錯誤,僅供你們參考。若是發現錯誤還望你們多多包涵,不吝賜教,謝謝~面試
Location.href=url算法
History.go(url)數據庫
是經過重寫ClassLoader#loadClass和ClassLoader#findClass 實現的。能夠看圖中的WebAppClassLoader,它加載本身目錄下的.class文件,並不會傳遞給父類的加載器。可是,它卻可使用 SharedClassLoader 所加載的類,實現了共享和分離的功能。windows
一、 jps -v 能夠查看 jvm 進程顯示指定的參數設計模式
二、 使用 -XX:+PrintFlagsFinal 能夠看到 JVM 全部參數的值api
三、 jinfo 能夠實時查看和調整虛擬機各項參數數組
在執行程序時,爲了提供性能,處理器和編譯器經常會對指令進行重排序,可是不能隨意重排序,不是你想怎麼排序就怎麼排序,它須要知足如下兩個條件:tomcat
在單線程環境下不能改變程序運行的結果;安全
存在數據依賴關係的不容許重排序服務器
須要注意的是:重排序不會影響單線程環境的執行結果,可是會破壞多線程的執行語義。
不行,由於對象的 hashcode 值必須是相同的。參見答案獲取更多關於 Java 中重寫 hashCode() 方法的知識。
wait() 方法應該在循環調用,由於當線程獲取到 CPU 開始執行的時候,其餘條件可能尚未知足,因此在處理前,循環檢測條件是否知足會更好。下面是一段標準的使用 wait 和 notify 方法的代碼:
// The standard idiom for using the wait method synchronized (obj) { while (condition does not hold) obj.wait(); // (Releases lock, and reacquires on wakeup) ..、// Perform action appropriate to condition }
參見 [Effective Java]第 69 條,獲取更多關於爲何應該在循環中來調用 wait 方法的內容。
有,log4j是用來日誌記錄的,記錄一些關鍵敏感的信息,一般會將日誌記錄到本地文件或者數據庫中。記錄在本地文件中,會有頻繁的io操做,會耗費一些系統資源。記錄在數據庫中,會頻繁地操做數據庫表,對系統性能也有必定的影響。可是爲了程序安全以及數據的恢復或者bug的跟蹤,這點資源消耗是能夠承受的。
必須遵循isapi_redirector.dll的標準指令
配置IIS使用「集成windows驗證」
確保在服務器.xml中您已經禁用了tomcat身份驗證
JVM:Java虛擬機,運用硬件或軟件手段實現的虛擬的計算機,Java虛擬機包括:寄存器,堆棧,處理器
一、 不可變對象(Immutable Objects)即對象一旦被建立它的狀態(對象的數據,也即對象屬性值)就不能改變,反之即爲可變對象(Mutable Objects)。
二、 不可變對象的類即爲不可變類(Immutable Class)。Java 平臺類庫中包含許多不可變類,如 String、基本類型的包裝類、BigInteger 和 BigDecimal 等。
三、 只有知足以下狀態,一個對象纔是不可變的;
四、 它的狀態不能在建立後再被修改;
五、 全部域都是 final 類型;而且,它被正確建立(建立期間沒有發生 this 引用的逸出)。
不可變對象保證了對象的內存可見性,對不可變對象的讀取不須要進行額外的同步手段,提高了代碼執行效率。