Java經典面試題整理及答案詳解(八)

瞭解更多:
Java經典面試題整理及答案詳解(一)
Java經典面試題整理及答案詳解(二)
Java經典面試題整理及答案詳解(三)
Java經典面試題整理及答案詳解(四)
Java經典面試題整理及答案詳解(五)
Java經典面試題整理及答案詳解(六)
Java經典面試題整理及答案詳解(七)

Java經典面試題第八節來啦!本節面試題包含了進程、線程、Object類、虛擬內存等相關內容,希望大家多多練習,早日拿下心儀offer~

1.進程間通訊方式有哪些?

如果你面試的是Java開發崗位,那麼這個時候所謂的通訊應該指的是JVM間的通訊。每一次執行Java命令的時候都會啟動一個JVM進程,而不同進程之間的JVM通訊就可以為進程通訊。
一個簡單的C/S應用,就是一個最基礎的線程通訊,就是那種不怎麼用的Socket編程。如果現在不想經過這麼多複雜處理,還可以使用公共文件,或者直接進行管道流處理。

2.數據庫事務未結束宕機後,重啟事務回滾原理。

如果是Oracle那麼就是relog(重做日誌),你所有的記錄都在日誌裡完成。

3.進程執行和線程執行優缺點比較。

進程的執行速度慢,線程執行速度快。每當使用Java命令去啟動一個JVM進程的時候,實際上都要執行一個完整的進程生命週期,也就是說其所使用的資源會更加的龐大。而對於線程優勢在於啟動速度快,Java採用了多線程的處理方式,整個系統運行之中進程只會啟動一次。
所有的線程都受到進程的控制,如果你的進程一旦被毀了,那麼所有的線程也就都完蛋了。

4.什麼時候使用Object類?

對於Object類的使用可以分為兩個階段:JDK1.5之前以及JDK1.5之後。Object之所以會被大量的進行參數的接收處理,很大一部分原因在於:你的程序裡面需要接收的類型很多,並不固定。現在的開發理念之中強調的問題不再是這一點了,而是如何避免向下轉型(如果避無可避,那麼就用),因為從JDK1.5之後引入了泛型機制,現在的設計思想是用泛型來避免向下轉型的操作(ClassCastException),你如果認真讀了API文檔就會發現可以接收Object類型的方法是越來越少了,所以你以後的開發中應該儘量以迴避Object接收的項目為主。

5.CycleBarrier和CountDownLatch區別及實現原理

這兩個類是java.util.concurrent定義的操作類,主要功能是進行線程同步處理的工具類。
CycleBarrier相當於匯聚多個等待線程,都到了,一起操作;
CountDownLatch等所有人都走了,我再操作。
範例:觀察CountDownLatch

image.png

就是執行了一個阻塞的操作環境。CycleBarrier是一個互相等待狀態。

image.png
image.png

CountDownLatch是一計到底,也就是說如果你一開始設置了2個計數線程就一直減,不能重置。
CycleBarrier可以進行重置處理;
以上就是兩者的區別。

6.什麼情況下使用虛擬內存,好處是什麼?

假如你在玩遊戲,你的電腦可能只有2G內存,但你發現依然可以使用,因為操作系統會將你的硬盤進行內存的虛擬化,這樣就相當於你在硬盤上可以模擬內存(硬盤的速度很慢,所以你的程序啟動的速度也很慢)。
從Java8開始取消了永久代,使用元空間來進行操作,也就是說Java可以直接使用操作系統的內存進行處理,這個時候就有可能導致每一個線程分配的真實的主機內存空間越大,如果內存不足,操作系統會進行虛擬內存的控制,對於虛擬內存不需要做特別多的處理。
當線程訪問量追加,JVM就有可能不斷的進行內存申請以及內存回收。

更多專業知識,面試技巧就在面試一點通,持續更新中……
感謝瀏覽~
本內容來源於阿里雲大學-Java面試技巧

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top