Java中級面試題及答案整理(2021年Java面試題答案大匯總)


Java面試題及答案【最新版】Java高級面試題大全(2021版),發現網上很多Java面試題及答案整理都沒有答案,所以花了很長時間搜集,本套Java面試題大全,Java面試題大匯總,有大量經典的Java面試題以及答案,包含Java語言常見面試題、Java工程師高級面試題及一些大廠Java開發面試寶典,面試經驗技巧等,應屆生,實習生,企業工作過的,都可參考學習!

這套Java面試題匯總大全,希望對大家有幫助哈~

1、java中有幾種方法可以實現一個線程?

繼承 Thread 類

實現 Runnable 接口

實現 Callable 接口,需要實現的是 call() 方法

2、Java 中的 HashSet,內部是如何工作的?

HashSet 的內部采用 HashMap來實現。由於 Map 需要 key 和 value,所以所有 key 的都有一個默認 value。類似於 HashMap,HashSet 不允許重復的 key,只允許有一個null key,意思就是 HashSet 中只允許存儲一個 null 對象。

3、redux的工作流程?

首先,我們看下幾個核心概念:

1、 Store:保存數據的地方,你可以把它看成一個容器,整個應用只能有一個Store。

2、 State:Store對象包含所有數據,如果想得到某個時點的數據,就要對Store生成快照,這種時點的數據集合,就叫做State。

3、 Action:State的變化,會導致View的變化。但是,用戶接觸不到State,只能接觸到View。所以,State的變化必須是View導致的。Action就是View發出的通知,表示State應該要發生變化了。

4、 Action Creator:View要發送多少種消息,就會有多少種Action。如果都手寫,會很麻煩,所以我們定義一個函數來生成Action,這個函數就叫Action Creator。

5、 Reducer:Store收到Action以后,必須給出一個新的State,這樣View才會發生變化。這種State的計算過程就叫做Reducer。Reducer是一個函數,它接受Action和當前State作為參數,返回一個新的State。

6、 dispatch:是View發出Action的唯一方法。

然后我們過下整個工作流程:

1、 首先,用戶(通過View)發出Action,發出方式就用到了dispatch方法。

2、 然后,Store自動調用Reducer,並且傳入兩個參數:當前State和收到的Action,Reducer會返回新的State

3、 State一旦有變化,Store就會調用監聽函數,來更新View。

到這兒為止,一次用戶交互流程結束。可以看到,在整個流程中數據都是單向流動的,這種方式保證了流程的清晰。

redux原理詳解

4、String類的常用方法有那些?

1、 charAt:返回指定索引處的字符

2、 indexOf():返回指定字符的索引

3、 replace():字符串替換

4、 trim():去除字符串兩端空白

5、 split():分割字符串,返回一個分割后的字符串數組

6、 getBytes():返回字符串的byte類型數組

7、 length():返回字符串長度

8、 toLowerCase():將字符串轉成小寫字母

9、 toUpperCase():將字符串轉成大寫字符

10、 substring():截取字符串

11、 format():格式化字符串

12、 equals():字符串比較

5、請你談談對OOM的認識

OOM是非常嚴重的問題,除了程序計數器,其他內存區域都有溢出的風險。和我們平常工作最密切的,就是堆溢出。另外,元空間在方法區內容非常多的情況下也會溢出。還有就是棧溢出,這個通常影響比較小。堆外也有溢出的可能,這個就比較難排查一些。

6、ParNew 垃圾收集器(Serial+多線程)

ParNew 垃圾收集器其實是 Serial 收集器的多線程版本,也使用復制算法,除了使用多線程進行垃圾收集之外,其余的行為和 Serial 收集器完全一樣, ParNew 垃圾收集器在垃圾收集過程中同樣也要暫停所有其他的工作線程。

ParNew 收集器默認開啟和 CPU 數目相同的線程數,可以通過-XX:ParallelGCThreads 參數來限制垃圾收集器的線程數。【Parallel:平行的】

ParNew 雖然是除了多線程外和Serial 收集器幾乎完全一樣,但是ParNew垃圾收集器是很多 java虛擬機運行在 Server 模式下新生代的默認垃圾收集器。

7、Java 中如何格式化一個日期?如格式化為 ddMMyyyy 的形式?

http://javarevisited.blogspot.com/2011/09/convert-date-to-string-simpledateformat.html

Java 中,可以使用 SimpleDateFormat 類或者 joda-time 庫來格式日期。DateFormat 類允許你使用多種流行的格式來格式化日期。參見中的示例代碼,代碼中演示了將日期格式化成不同的格式,如 dd-MM-yyyy 或 ddMMyyyy。

8、什么是Java虛擬機

任何一種可以運行Java字節碼的軟件均可看成是Java的虛擬機(JVM)

9、Java 中的同步集合與並發集合有什么區別?

同步集合與並發集合都為多線程和並發提供了合適的線程安全的集合,不過並發集合的可擴展性更高。在 Java1.5 之前程序員們只有同步集合來用且在多線程並發的時候會導致爭用,阻礙了系統的擴展性。Java5 介紹了並發集合像ConcurrentHashMap,不僅提供線程安全還用鎖分離和內部分區等現代技術提高了可擴展性。

10、適配器模式和代理模式之前有什么不同?

這個問題與前面的類似,適配器模式和代理模式的區別在於他們的意圖不同。由於適配器模式和代理模式都是封裝真正執行動作的類,因此結構是一致的,但是適配器模式用於接口之間的轉換,而代理模式則是增加一個額外的中間層,以便支持分配、控制或智能訪問。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM