Java面試題合集


來源:優知學院

作者: mikechen

相關鏈接:https://youzhixueyuan.com/articles

 

1. Java基礎題目

八種基礎數據類型的大小,以及他們的封裝類

引用數據類型

Switch能否用string做參數

equals與==的區別

自動封裝,常量池

Object有哪些公用方法

Java的四種引用,強弱軟虛,用到的場景

HashCode的作用

HashMap的hashcode的作用

為什么重載hashCode方法?

ArrayList、LinkedList、Vector的區別

String、StringBuffer與StringBuilder的區別

Map、Set、List、Queue、Stack的特點與用法

HashMap和HashTable的區別

JDK7與JDK8的HashMap的實現

HashMapheConcurrentHashMap的區別,HashMap的底層源碼

ConcurrentHashMap能完全替代HashTable么

為什么HashMap是線程不安全的

如何線程安全的使用HashMap

多並發情況下HashMap是否還會產生死循環

TreeMap、HashMap、LindedHashMap的區別

try-catch-finally,try里有return,finally執行么?

Exception與Error包結構,OOM你遇到過哪些情況,SOF你遇到過哪些情況

Java(OOP)面向對象的三個特征與含義

Override與Overload的含義與區別

Interface與abstract類的區別

Static-class與non-static-class的區別

Java多態的實現原理

foreach與正常for循環效率對比

Java-IO與NIO

Java反射的作用與原理

泛型常用特點

解析XML的幾種方法的原理與特點:DOM、SAX

 

2. 多線程面試題目

什么是線程?

什么是縣城安全和線程不安全?

什么是自旋鎖?

什么是CAS?

什么是樂觀鎖和悲觀鎖?

什么是AQS?

什么是原子操作?在Javav Concurrency API中有哪些原子類(atomic classes)?

什么是Executors框架?

什么時候阻塞隊列?如何使用阻塞隊列來實現生產者-消費者模型?

什么是Callable和Future?

什么是FutureTask?

什么是同步容器和並發容器的實現?

什么是多線程?優缺點?

什么是多線程的上下文切換?

ThreadLocal的設計理念與作用?

ThreadPool(線程池)用法與優勢?

Concurrent包里的其他東西:ArrayBlockingQueue、CountDownLatch等等。

synchronized和ReentrantLock的區別?

Semaphore有什么作用?

Java Concurrency API中的Lock接口(Lock interface)是什么?對比同步它有什么優勢?

Hashtable的size()方法中明明只有一條語句“return count”,為什么要做同步?

ConcurrentHashMap的並發度是什么?

ReentrantReadWriteLock讀寫鎖的使用?

CyclicBarrier和CountDownLatch的用法及區別?

LockSupport工具?

Condition接口及其實現原理?

Fork/Join框架的理解?

wait()和sleep()的區別?

線程的五個狀態(創建、就緒、運行、阻塞和死亡)?

start()方法和run()方法的區別?

Runnable接口和Callable接口的區別?

volatile關鍵字的作用?

Java中如何獲取到線程dump文件?

線程和進程有什么區別?

線程實現的方式有幾種(4種)?

高並發、任務執行時間短的業務怎樣使用線程池?並發不高、任務執行時間長的任務怎樣使用線程池?並發高、執行任務時間長的任務怎樣使用線程池?

如何你提交任務時,線程池隊列已滿,這時會發生什么?

鎖的等級:方發鎖、對象鎖、類鎖?

如果同步塊內的線程拋出異常會發生什么?

並發編程(concurrency)並行編程(parallellism)有什么區別?

如何保證多線程下i++ 結果正確?

一個線程如果出現了運行時異常會怎么樣?

如何在兩個線程之間共享數據?

生產者消費者模型的作用是什么?

怎么喚醒一個阻塞的線程?

Java中用到的線程調度算法是什么?

單例模式的線程安全性?

線程類的構造方法、靜態塊是被那個線程調用的?

同步方法和同步塊,那個是更好的選擇?

如何檢測死鎖?怎么預防死鎖?

 

3. 設計模式面試題目

裝飾器模式

工廠模式

單例模式

觀察者模式

動態代理模糊

適配器模式

模板模式

策略模式

 

4. JVM面試題目

內存模型以及分區,需要詳細到每個區放什么。

對象創建方法,對象的內存分配,對象的訪問定位。

GC的兩種判定方法:引用計數與引用鏈。

GC的三種收集方法:標記清除、標記整理、復制算法的原理與特點,分別用在什么地方,如果讓你優化收集方法,有什么思路?

GC收集器有哪些?CMS收集器與G1收集器的特點。

Minor-GC與Full-GC分別在什么時候發生?

幾種常用的內存調試工具:jmap、jstack、jconsole。

類加載的五個過程:加載、驗證、准備、解析、初始化。

雙親委派模型:Bootstrap-ClassLoader、Extension-ClassLoader、Application-ClassLoader。

分派:靜態分派與動態分派。

推薦書籍:《深入理解Java虛擬機》

 

5. 算法與數據結構

鏈表與數據。

隊列和棧,出棧與入棧。

鏈表的刪除、插入、反向。

字符串操作。

Hash表的hash函數,沖突解決方法有哪些。

各種排序:冒泡、選擇、插入、希爾、歸並、快排、堆排、桶排、基數的原理、平均時間復雜度、最壞時間復雜度、空間復雜度、是否穩定。

快排的partition函數與歸並的Merge函數。

對冒泡與快排的改進。

二分查找,與變種二分查找。

二叉樹、B+樹、AVL樹、紅黑樹、哈夫曼樹

二叉樹的前中后續遍歷:遞歸與非遞歸寫法,層序遍歷算法。

圖的BFS與DFS算法,最小生成樹prim算法與最短路徑Dijkstra算法。

KMP算法。

排列組合問題。

動態規划、貪心算法、分治算法。

大數據處理:類似10億條數據找出最大的1000個數....

 

6. 數據庫面試題目

事務四大特性(ACID)原子性、一致性、隔離性、持久性。

數據庫隔離級別,每個級別會引發什么問題,mysql默認是哪個級別。

innodb和myisam存儲引擎的區別。

MYSQL的兩種存儲引擎區別(事務、鎖級別等等),各自的適用場景。

查詢語句不同元素(where、jion、limit、group by、having等等)執行先后順序。

數據庫的優化(從sql語句優化和索引兩個部分回答)

索引有B+索引和hash索引,各自的區別

B+索引數據結構,和B數的區別。

索引的分類(主鍵索引、唯一索引),最左前綴原則,那些情況索引會失效。

聚集索引和非聚集索引的區別。

有哪些鎖(樂觀鎖、悲觀鎖),select時則呢么加排它鎖。

關系型數據庫和非關系型數據庫區別。

數據庫三范式,根據某些場景設計數據表(可以通過手繪ER圖)

數據庫的讀寫分離、主從復制。

使用explain優化sql和索引。

long_query怎么解決。

內連接、外鏈接、交叉連接、笛卡爾積等。

死鎖判定原理和具體場景,死鎖怎么解決。

varchar和char的使用場景。

mysql並發情況下怎么解決(通過事務、隔離級別、鎖)

數據庫崩潰時事務的恢復機制(REDO日志和UNDO日志)

 

7. Spring面試題目

IOC和DI是什么?

Spring IOC的理解,其初始化過程?

BeanFactory和FactoryBean的區別?

BeanFactory和ApplicationContext的區別?

ApplicationContext上下文的生命周期?

Spring Bean的生命周期?

Spring AOP的實現原理?

Spring 是如何管理事務的,事務管理機制?

Spring的不同事務傳播行為有哪些,干什么用?

Spring中用到了哪些設計模式?

Sping MVC的工作原理?

Spring如何解決循環依賴?

Spring如何保證Controller並發的安全?

 

8. Redis面試題

Redis用過哪些類型,以及Redis底層怎么實現?

Redis緩存穿透,緩存雪崩

如何使用Redis來實現分布式鎖?

Redis的並發競爭問題如何解決?

Redis持久化的幾種方式?優缺點是什么,怎么實現?

Redis的緩存失效策略?

Redis集群,高可用,原理

Redis緩存分片

Redis的數據淘汰策略

 

9. 分布式框架面試題目

什么是CAP原理?

CAP理論和BASE理論

CAP理論和最終一致性

最終一致性實現方式?

一致性Hash

分布式事務,兩階段提交。

如何實現分布式鎖?

如何實現分布式Session

如何保證消息的一致性

負載均衡

正向代理(客戶端代理)和反向代理(服務器端代理)

CDN實現原理

怎么提升系統的QPS和吞吐量。

Dubbo的底層實現原理和機制

描述一個服務從發布到被消費的詳細過程。

分布式系統怎么做服務治理。

接口的冪等性的概念。

消息中間件如何解決消息丟失問題。

Dubbo的服務請求失敗怎么處理。

重連機制會不會造成錯誤?

分布式事務的理解。

如何實現負載均衡,有哪些算法可以實現?

Zookeeper的用途,選舉的原理是什么?

數據的垂直拆分水平拆分。

Zookeeper原理和適用場景。

Zookeeper watch機制。

Redis/Zookeeper節點宕機如何處理。

分布式集群下如何做到唯一序列號。

用過哪些MQ,怎么用的,和其他mq比較有什么優缺點,MQ的連接是線程安全的嗎?

MQ系統的數據如何保證不丟失。

列舉出你能想到的數據庫分庫分表策略;分表分表后,如何解決全表查詢的。


免責聲明!

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



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