「美團(tuán)」Java 崗 150 道面試題:集合 +JVM+ 設(shè)計(jì)模式 +spring+Redis 等
今天在這分享目前國(guó)內(nèi)公司 Java 面試常問(wèn)的問(wèn)題包括 JVM、常用的算法和數(shù)據(jù)結(jié)構(gòu),redis 緩存,分布式,Spring,微服務(wù)等。正所謂知己知彼,只有體系知識(shí)鞏固,面對(duì)不斷更新的技術(shù)才能快速掌握,同時(shí)在面試、工作中也更能脫穎而出!
由于篇幅原因,在這答案就不做全部展示了,這些題我已經(jīng)整理成 pdf 文檔免費(fèi)分享給那些有需要的朋友,同時(shí)整理也花費(fèi)了蠻多時(shí)間,資料已整理成文檔,

150 道高頻常問(wèn) Java 體系面試問(wèn)題
Java 集合 22 題
ArrayList 和 Vector 的區(qū)別。
說(shuō)說(shuō) ArrayList,Vector, LinkedList 的存儲(chǔ)性能和特性。
快速失敗 (fail-fast) 和安全失敗 (fail-safe) 的區(qū)別是什么?
hashmap 的數(shù)據(jù)結(jié)構(gòu)。
HashMap 的工作原理是什么?
Hashmap 什么時(shí)候進(jìn)行擴(kuò)容呢?
List、Map、Set 三個(gè)接口,存取元素時(shí),各有什么特點(diǎn)?
Set 里的元素是不能重復(fù)的,那么用什么方法來(lái)區(qū)分重復(fù)與否呢? 是用 == 還是 equals()? 它們有何區(qū)別?
兩個(gè)對(duì)象值相同 (x.equals(y) == true),但卻可有不同的 hash code,這句話對(duì)不對(duì)?
heap 和 stack 有什么區(qū)別。
Java 集合類(lèi)框架的基本接口有哪些?
HashSet 和 TreeSet 有什么區(qū)別?
HashSet 的底層實(shí)現(xiàn)是什么?
LinkedHashMap 的實(shí)現(xiàn)原理?
為什么集合類(lèi)沒(méi)有實(shí)現(xiàn) Cloneable 和 Serializable 接口?
什么是迭代器 (Iterator)?
Iterator 和 ListIterator 的區(qū)別是什么?
數(shù)組 (Array) 和列表 (ArrayList) 有什么區(qū)別?什么時(shí)候應(yīng)該使用 Array 而不是 ArrayList?
Java 集合類(lèi)框架的最佳實(shí)踐有哪些?
Set 里的元素是不能重復(fù)的,那么用什么方法來(lái)區(qū)分重復(fù)與否呢?是用 == 還是 equals()?它們有何區(qū)別?
Comparable 和 Comparator 接口是干什么的?列出它們的區(qū)別
Collection 和 Collections 的區(qū)別。
JVM 與調(diào)優(yōu) 21 題
Java 類(lèi)加載過(guò)程?
描述一下 JVM 加載 Class 文件的原理機(jī)制?
Java 內(nèi)存分配。
GC 是什么? 為什么要有 GC?
簡(jiǎn)述 Java 垃圾回收機(jī)制
如何判斷一個(gè)對(duì)象是否存活?(或者 GC 對(duì)象的判定方法)
垃圾回收的優(yōu)點(diǎn)和原理。并考慮 2 種回收機(jī)制
垃圾回收器的基本原理是什么?垃圾回收器可以馬上回收內(nèi)存嗎?有什么辦法主動(dòng)通知虛擬機(jī)進(jìn)行垃圾回收?
Java 中會(huì)存在內(nèi)存泄漏嗎,請(qǐng)簡(jiǎn)單描述
深拷貝和淺拷貝。
System.gc() 和 Runtime.gc() 會(huì)做什么事情?
finalize() 方法什么時(shí)候被調(diào)用?析構(gòu)函數(shù) (finalization) 的目的是什么?
如果對(duì)象的引用被置為 null,垃圾收集器是否會(huì)立即釋放對(duì)象占用的內(nèi)存?
什么是分布式垃圾回收(DGC)?它是如何工作的?
串行(serial)收集器和吞吐量(throughput)收集器的區(qū)別是什么?
在 Java 中,對(duì)象什么時(shí)候可以被垃圾回收?
簡(jiǎn)述 Java 內(nèi)存分配與回收策略以及 Minor GC 和 Major GC。
JVM 的永久代中會(huì)發(fā)生垃圾回收么?
Java 中垃圾收集的方法有哪些?
什么是類(lèi)加載器,類(lèi)加載器有哪些?
類(lèi)加載器雙親委派模型機(jī)制?
并發(fā)編程 28 題
Synchronized 用過(guò)嗎,其原理是什么?
你剛才提到獲取對(duì)象的鎖,這個(gè)“鎖”到底是什么?如何確定對(duì)象的鎖?
什么是可重入性,為什么說(shuō) Synchronized 是可重入鎖?
JVM 對(duì) Java 的原生鎖做了哪些優(yōu)化?48
為什么說(shuō) Synchronized 是非公平鎖?49
什么是鎖消除和鎖粗化?49
為什么說(shuō) Synchronized 是一個(gè)悲觀鎖?樂(lè)觀鎖的實(shí)現(xiàn)原理又是什么?什么是 CAS,它有什么特性?
樂(lè)觀鎖一定就是好的嗎?
跟 Synchronized 相比,可重入鎖 ReentrantLock 其實(shí)現(xiàn)原理有什么不同?
那么請(qǐng)談?wù)?AQS 框架是怎么回事兒?
請(qǐng)盡可能詳盡地對(duì)比下 Synchronized 和 ReentrantLock 的異同。
ReentrantLock 是如何實(shí)現(xiàn)可重入性的?
除了 ReetrantLock,你還接觸過(guò) JUC 中的哪些并發(fā)工具?
請(qǐng)談?wù)?ReadWriteLock 和 StampedLock。
如何讓 Java 的線程彼此同步?你了解過(guò)哪些同步器?請(qǐng)分別介紹下。
CyclicBarrier 和 CountDownLatch 看起來(lái)很相似,請(qǐng)對(duì)比下呢?
Java 線程池相關(guān)問(wèn)題
Java 中的線程池是如何實(shí)現(xiàn)的?
創(chuàng)建線程池的幾個(gè)核心構(gòu)造參數(shù)?
線程池中的線程是怎么創(chuàng)建的?是一開(kāi)始就隨著線程池的啟動(dòng)創(chuàng)建好的嗎?
既然提到可以通過(guò)配置不同參數(shù)創(chuàng)建出不同的線程池,那么 Java 中默認(rèn)實(shí)現(xiàn)好的線程池又有哪些呢?請(qǐng)比較它們的異同
如何在 Java 線程池中提交線程?
什么是 Java 的內(nèi)存模型,Java 中各個(gè)線程是怎么彼此看到對(duì)方的變量的?
請(qǐng)談?wù)?volatile 有什么特點(diǎn),為什么它能保證變量對(duì)所有線程的可見(jiàn)性?
既然 volatile 能夠保證線程間的變量可見(jiàn)性,是不是就意味著基于 volatile 變量的運(yùn)算就是并發(fā)安全的?
請(qǐng)對(duì)比下 volatile 對(duì)比 Synchronized 的異同。
請(qǐng)談?wù)?ThreadLocal 是怎么解決并發(fā)安全的?
很多人都說(shuō)要慎用 ThreadLocal,談?wù)勀愕睦斫?,使?ThreadLocal 需要注意些什么?
spring 面試專(zhuān)題
1、什么是 Spring 框架?Spring 框架有哪些主要模塊?
2、使用 Spring 框架能帶來(lái)哪些好處?
3、什么是控制反轉(zhuǎn)(IOC)?什么是依賴(lài)注入?
4、請(qǐng)解釋下 Spring 框架中的 IoC?
5、BeanFactory 和 ApplicationContext 有什么區(qū)別?
6、Spring 有幾種配置方式?
7、如何用基于 XML 配置的方式配置 Spring?
8、如何用基于 Java 配置的方式配置 Spring?
9、怎樣用注解的方式配置 Spring?
10、請(qǐng)解釋 Spring Bean 的生命周期?
11、Spring Bean 的作用域之間有什么區(qū)別?
12、什么是 Spring inner beans?
13、Spring 框架中的單例 Beans 是線程安全的么?
14、請(qǐng)舉例說(shuō)明如何在 Spring 中注入一個(gè) Java Collection?
15、如何向 Spring Bean 中注入一個(gè) Java.util.Properties?
16、請(qǐng)解釋 Spring Bean 的自動(dòng)裝配?
17、請(qǐng)解釋自動(dòng)裝配模式的區(qū)別?
18、如何開(kāi)啟基于注解的自動(dòng)裝配?
19、請(qǐng)舉例解釋 @Required 注解?
20、請(qǐng)舉例解釋 @Autowired 注解?
21、請(qǐng)舉例說(shuō)明 @Qualifier 注解?
22、構(gòu)造方法注入和設(shè)置注入有什么區(qū)別?
23、Spring 框架中有哪些不同類(lèi)型的事件?
24、FileSystemResource 和 ClassPathResource 有何區(qū)別?
25、Spring 框架中都用到了哪些設(shè)計(jì)模式?

答案詳解
設(shè)計(jì)模式
1.請(qǐng)列舉出在 JDK 中幾個(gè)常用的設(shè)計(jì)模式?
2.什么是設(shè)計(jì)模式?你是否在你的代碼里面使用過(guò)任何設(shè)計(jì)模式?
3.Java 中什么叫單例設(shè)計(jì)模式?請(qǐng)用 Java 寫(xiě)出線程安全的單例模式
4.在 Java 中,什么叫觀察者設(shè)計(jì)模式(observer design pattern)?
5.使用工廠模式最主要的好處是什么?在哪里使用?
6.舉一個(gè)用 Java 實(shí)現(xiàn)的裝飾模式(decorator design pattern)?它是作用于對(duì)象層次還是類(lèi)
層次?
7.在 Java 中,為什么不允許從靜態(tài)方法中訪問(wèn)非靜態(tài)變量?
8.設(shè)計(jì)一個(gè) ATM 機(jī),請(qǐng)說(shuō)出你的設(shè)計(jì)思路?
9.在 Java 中,什么時(shí)候用重載,什么時(shí)候用重寫(xiě)?
10.舉例說(shuō)明什么情況下會(huì)更傾向于使用抽象類(lèi)而不是接口

答案詳解
springboot 面試專(zhuān)題
什么是 Spring Boot?
Spring Boot 有哪些優(yōu)點(diǎn)?
什么是 JavaConfig?
如何重新加載 Spring Boot 上的更改,而無(wú)需重新啟動(dòng)服務(wù)器?
Spring Boot 中的監(jiān)視器是什么?
如何在 Spring Boot 中禁用 Actuator 端點(diǎn)安全性?
如何在自定義端口上運(yùn)行 Spring Boot 應(yīng)用程序?
什么是 YAML?
如何實(shí)現(xiàn) Spring Boot 應(yīng)用程序的安全性?
如何集成 Spring Boot 和 ActiveMQ?
如何使用 Spring Boot 實(shí)現(xiàn)分頁(yè)和排序?
什么是 Swagger?你用 Spring Boot 實(shí)現(xiàn)了它嗎?
什么是 Spring Profiles?
什么是 Spring Batch?
什么是 FreeMarker 模板?
如何使用 Spring Boot 實(shí)現(xiàn)異常處理?
您使用了哪些 starter maven 依賴(lài)項(xiàng)?
什么是 CSRF 攻擊?
什么是 WebSockets?
什么是 AOP?
什么是 Apache Kafka?
我們?nèi)绾伪O(jiān)視所有 Spring Boot 微服務(wù)?

面試答案詳解
Netty10 題
BIO、NIO 和 AIO 的區(qū)別?
NIO 的組成?
Netty 的特點(diǎn)?
Netty 的線程模型?
TCP 粘包/拆包的原因及解決方法?
了解哪幾種序列化協(xié)議?
如何選擇序列化協(xié)議?
Netty 的零拷貝實(shí)現(xiàn)?
Netty 的高性能表現(xiàn)在哪些方面?
NIOEventLoopGroup 源碼?

Redis
什么是 redis?
Reids 的特點(diǎn)
Redis 支持的數(shù)據(jù)類(lèi)型
Redis 是單進(jìn)程單線程的
虛擬內(nèi)存
Redis 鎖
讀寫(xiě)分離模型
數(shù)據(jù)分片模型
Redis 的回收策略
使用 Redis 有哪些好處?
redis 相比 memcached 有哪些優(yōu)勢(shì)?4
redis 常見(jiàn)性能問(wèn)題和解決方案
MySQL 里有 2000w 數(shù)據(jù),redis 中只存 20w 的數(shù)據(jù),如何保證 redis 中的數(shù)據(jù)都是熱點(diǎn)數(shù)據(jù) 245
Memcache 與 Redis 的區(qū)別都有哪些?
Redis 常見(jiàn)的性能問(wèn)題都有哪些?如何解決?
Redis 最適合的場(chǎng)景
由于篇幅原因,在這就不做全部展示了,這些題我已經(jīng)整理成 pdf 文檔免費(fèi)分享給那些有需要的朋友,同時(shí)整理也花費(fèi)了蠻多時(shí)間,資料已整理成文檔


需要的小伙伴私信? 111? 即可