更新時間:2023-01-13 11:30:32 來源:動力節點 瀏覽1297次
小編發現不少同學在網上求助找一些相關的Java中級面試題,但比較煩人的是,很多給出的面試題不是沒有正確答案就是沒有解析過程,也就導致了我們需要花費很多的時間去搜集整套的合適的面試題。今天小編的這套題目大全,包含了一些大廠的經典面試題,不管你現在是應屆生還是實習生亦或是企業在職者,都可以進行參考:
1、什么是方法內聯?
為了減少方法調用的開銷,可以把一些短小的方法,比如getter/setter,納入到目標方法的調用范圍之內,就少了一次方法調用,速度就能得到提升,這就是方法內聯的概念。
2、你對線程優先級的理解是什么?
1、 每一個線程都是有優先級的,一般來說,高優先級的線程在運行時會具有優先權,但這依賴于線程調度的實現,這個實現是和操作系統相關的(OS dependent)。我們可以定義線程的優先級,但是這并不能保證高優先級的線程會在低優先級的線程前執行。線程優先級是一個 int 變量(從 1-10),1 代表最低優先級,10 代表最高優先級。
2、 Java 的線程優先級調度會委托給操作系統去處理,所以與具體的操作系統優先級有關,如非特別需要,一般無需設置線程優先級。
3、 當然,如果你真的想設置優先級可以通過setPriority()方法設置,但是設置了不一定會該變,這個是不準確的
3、Java是否需要開發人員回收內存垃圾嗎?
大多情況下是不需要的。Java提供了一個系統級的線程來跟蹤內存分配,不再使用的內存區將會自動回收
4、說說Java 垃圾回收機制
在 Java 中,程序員是不需要顯示的去釋放一個對象的內存的,而是由虛擬機自行執行。在 JVM 中,有一個垃圾回收線程,它是低優先級的,在正常情況下是不會執行的,只有在虛擬機空閑或者當前堆內存不足時,才會觸發執行,掃面那些沒有被任何引用的對象,并將它們添加到要回收的集合中,進行回收。
5、62、volatile 變量和 atomic 變量有什么不同?
Volatile變量可以確保先行關系,即寫操作會發生在后續的讀操作之前, 但它并不能保證原子性。例如用volatile修飾count變量那么 count++ 操作就不是原子性的。
而AtomicInteger類提供的atomic方法可以讓這種操作具有原子性如getAndIncrement()方法會原子性的進行增量操作把當前值加一,其它數據類型和引用變量也可以進行相似操作。
6、JVM 內存區域
JVM 內存區域主要分為線程私有區域【程序計數器、虛擬機棧、本地方法區】、線程共享區域【JAVA 堆、方法區】、直接內存。
線程私有數據區域生命周期與線程相同, 依賴用戶線程的啟動/結束 而 創建/銷毀(在 Hotspot VM 內, 每個線程都與操作系統的本地線程直接映射, 因此這部分內存區域的存/否跟隨本地線程的生/死對應)。
線程共享區域隨虛擬機的啟動/關閉而創建/銷毀。
直接內存并不是 JVM 運行時數據區的一部分, 但也會被頻繁的使用: 在 JDK 1.4 引入的 NIO 提供了基于Channel與 Buffer的IO方式, 它可以使用Native函數庫直接分配堆外內存, 然后使用DirectByteBuffer 對象作為這塊內存的引用進行操作(詳見: Java I/O 擴展), 這樣就避免了在 Java堆和 Native 堆中來回復制數據, 因此在一些場景中可以顯著提高性能。
7、JVM 有哪些運行時內存區域?
1、 The pc Register,程序計數器
2、 Java Virtual Machine Stacks,Java 虛擬機棧
3、 Heap,堆
4、 Method Area,方法區
5、 Run-Time Constant Pool,運行時常量池
6、 Native Method Stacks,本地方法棧
8、Spring中Bean的作用域有哪些?
1、 Singleton:Bean以單例的方式存在
2、 Prototype:表示每次從容器中調用Bean時,都會返回一個新的實例,prototype通常翻譯為原型
3、 Request:每次HTTP請求都會創建一個新的Bean
4、 Session:同一個HttpSession共享同一個Bean,不同的HttpSession使用不同的Bean
5、 globalSession:同一個全局Session共享一個Bean
9、String str=”aaa”,與String str=new String(“aaa”)一樣嗎?
1、 不一樣的。因為內存分配的方式不一樣。
2、 第一種,創建的”aaa”是常量,jvm都將其分配在常量池中。
3、 第二種創建的是一個對象,jvm將其值分配在堆內存中。
10、什么是建造者模式
1、 建造者模式:是將一個復雜的對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的方式進行創建。
2、 工廠類模式是提供的是創建單個類的產品
3、 而建造者模式則是將各種產品集中起來進行管理,用來具有不同的屬性的產品
建造者模式通常包括下面幾個角色:
1、 uilder:給出一個抽象接口,以規范產品對象的各個組成成分的建造。這個接口規定要實現復雜對象的哪些部分的創建,并不涉及具體的對象部件的創建。
2、 ConcreteBuilder:實現Builder接口,針對不同的商業邏輯,具體化復雜對象的各部分的創建。 在建造過程完成后,提供產品的實例。
3、 Director:調用具體建造者來創建復雜對象的各個部分,在指導者中不涉及具體產品的信息,只負責保證對象各部分完整創建或按某種順序創建。
4、 Product:要創建的復雜對象。
以上就是“HR的犀利問答題:中級Java面試題”,你能回答上來嗎?如果想要了解更多的Java面試題相關內容,可以關注動力節點Java官網。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習