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
就是執行了一個阻塞的操作環境。CycleBarrier是一個互相等待狀態。
CountDownLatch是一計到底,也就是說如果你一開始設置了2個計數線程就一直減,不能重置。
CycleBarrier可以進行重置處理;
以上就是兩者的區別。
6.什么情況下使用虛擬內存,好處是什么?
假如你在玩游戲,你的電腦可能只有2G內存,但你發現依然可以使用,因為操作系統會將你的硬盤進行內存的虛擬化,這樣就相當于你在硬盤上可以模擬內存(硬盤的速度很慢,所以你的程序啟動的速度也很慢)。
從Java8開始取消了永久代,使用元空間來進行操作,也就是說Java可以直接使用操作系統的內存進行處理,這個時候就有可能導致每一個線程分配的真實的主機內存空間越大,如果內存不足,操作系統會進行虛擬內存的控制,對于虛擬內存不需要做特別多的處理。
當線程訪問量追加,JVM就有可能不斷的進行內存申請以及內存回收。
更多專業知識,面試技巧就在面試一點通,持續更新中……
感謝瀏覽~
總結
以上是生活随笔為你收集整理的Java经典面试题整理及答案详解(八)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从零开始入门 K8s | 理解 CNI
- 下一篇: 从阿里前端工程化中台实践,看中台建设的舍