天天看點

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

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

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

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

CountDownLatch是一計到底,也就是說如果你一開始設定了2個計數線程就一直減,不能重置。

CycleBarrier可以進行重置處理;

以上就是兩者的差別。

6.什麼情況下使用虛拟記憶體,好處是什麼?

假如你在玩遊戲,你的電腦可能隻有2G記憶體,但你發現依然可以使用,因為作業系統會将你的硬碟進行記憶體的虛拟化,這樣就相當于你在硬碟上可以模拟記憶體(硬碟的速度很慢,是以你的程式啟動的速度也很慢)。

從Java8開始取消了永久代,使用元空間來進行操作,也就是說Java可以直接使用作業系統的記憶體進行處理,這個時候就有可能導緻每一個線程配置設定的真實的主機記憶體空間越大,如果記憶體不足,作業系統會進行虛拟記憶體的控制,對于虛拟記憶體不需要做特别多的處理。

當線程通路量追加,JVM就有可能不斷的進行記憶體申請以及記憶體回收。

更多專業知識,面試技巧就在面試一點通,持續更新中……

感謝浏覽~

本内容來源于

阿裡雲大學-Java面試技巧