網(wǎng)站建設(shè)常用英語(yǔ)網(wǎng)店運(yùn)營(yíng)
我分享的這份 Java 后端開(kāi)發(fā)面試總結(jié)包含了 JavaOOP、Java 集合容器、Java 異常、并發(fā)編程、Java 反射、Java 序列化、JVM、Redis、Spring MVC、MyBatis、MySQL 數(shù)據(jù)庫(kù)、消息中間件 MQ、Dubbo、Linux、ZooKeeper、 分布式 &數(shù)據(jù)結(jié)構(gòu)與算法等 25 個(gè)專題技術(shù)點(diǎn),都是小編在各個(gè)大廠總結(jié)出來(lái)的面試真題,已經(jīng)有很多粉絲靠這份 PDF 拿下眾多大廠的 offer,今天在這里總結(jié)分享給到大家!
我這篇分享篇幅可能有點(diǎn)長(zhǎng),觀看的朋友可以先了解一下目錄
JavaOOP 面試題
Java 集合/泛型面試題
Java 異常面試題
Java 中的 IO 與 NIO 面試題
Java 反射面試題
Java 序列化面試題
Java 注解面試題
多線程 &并發(fā)面試題
JVM 面試題
Mysql 面試題
Redis 面試題
Memcached 面試題
MongoDB 面試題
String 面試題
Spring Cloud 面試題
RabbitMQ 面試題
Dubbo 面試題
MyBatis 面試題
ZooKeeper 面試題
數(shù)據(jù)結(jié)構(gòu)面試題
算法面試題
Elasticsearch 面試題
Kafka 面試題
微服務(wù) 面試題
Linux 面試題
由于篇幅有限,每個(gè)專題面試題只有部分的面試題,下面是整理的合集,這份已經(jīng)整理成完整文檔的?Java 全棧面試八股文 PDF 版,就以截圖主要內(nèi)容的形式讓大家參考啦
一、JavaOOP 面試題
1、short s1 = 1; s1 = s1 + 1;有錯(cuò)嗎? short s1 = 1; s1 += 1; 有錯(cuò)嗎?
2、重載和重寫(xiě)的區(qū)別
3、數(shù)組實(shí)例化有幾種方式?
4、Java 中各種數(shù)據(jù)默認(rèn)值
5、Object 類常用方法有那些?
6、java 中是值傳遞引用傳遞?
7、形參與實(shí)參區(qū)別
8、構(gòu)造方法能不能重寫(xiě)?能不能重載?
9、內(nèi)部類與靜態(tài)內(nèi)部類的區(qū)別?
10、Static 關(guān)鍵字有什么作用?
11、final 在 java 中的作用,有哪些用法?
12、String str=”aaa”,與 String str=new String(“aaa”)一樣嗎?
13、講下 java 中的 math 類有那些常用方法?
14、Char 類型能不能轉(zhuǎn)成 int 類型?能不能轉(zhuǎn)化成 string 類型,能不能轉(zhuǎn)成 double 類型
15、什么是拆裝箱?
16、Java 中的包裝類都是那些?
17、一個(gè) java 類中包含那些內(nèi)容?
18、那針對(duì)浮點(diǎn)型數(shù)據(jù)運(yùn)算出現(xiàn)的誤差的問(wèn)題,你怎么解決?
19、面向?qū)ο蟮奶卣饔心男┓矫?
20、訪問(wèn)修飾符 public,private,protected,以及不寫(xiě)(默認(rèn)) 時(shí)的區(qū)別?
21、接口有什么特點(diǎn)?
22、抽象類和接口的區(qū)別?
23、Hashcode 的作用
24、普通類與抽象類有什么區(qū)別?
25、什么是接口?為什么需要接口?
26、接口有什么特點(diǎn)?
27、拷貝和淺拷貝的區(qū)別是什么?
28、JDBC 操作的步驟
29、什么時(shí)候用 assert
30、數(shù)組有沒(méi)有 length()這個(gè)方法? String 有沒(méi)有 length()這個(gè)方法
31、用最有效率的方法算出 2 乘以 8 等于幾?
32、String 和 StringBuilder、StringBuffer 的區(qū)別?
33、接口是否可繼承(extends)接口?抽象類是否可實(shí)現(xiàn)(implements)接口?抽象類是否可繼承具體類(concreteclass)?
34、一個(gè)”.java”源文件中是否可以包含多個(gè)類(不是內(nèi)部類)?有什么限制?
35、Java 中的 final 關(guān)鍵字有哪些用法?
二、Java 集合/泛型面試題
1、ArrayList 和 linkedList 的區(qū)別
2、HashMap 排序題
3、Collection 包結(jié)構(gòu),與 Collections 的區(qū)別
4、帶集合參數(shù)的構(gòu)造器
5、說(shuō)說(shuō) List,Set,Map 三者的區(qū)別
6、并發(fā)集合和普通集合如何區(qū)別?
7、Map 有什么特點(diǎn)
8、集合類存放于 Java.util 包中, 主要有幾 種接口
9、什么是 list 接口
10、說(shuō)說(shuō) ArrayList(數(shù)組)
11、Vector( 數(shù)組實(shí)現(xiàn)、 線程同步)
12、說(shuō)說(shuō) LinkList(鏈表)
13、什么 Set 集合
14、HashSet( Hash 表)
15、什么是 TreeSet(二叉樹(shù))
16、List 和 Map、Set 的區(qū)別?
17、數(shù)組和鏈表分別比較適合用于什么場(chǎng)景,為什么?
18、說(shuō)說(shuō) ConcurrentHashMap
19、Java 中 ArrayList 和 LinkedList 區(qū)別?
20、TreeMap(可排序)
21、請(qǐng)用兩個(gè)隊(duì)列模擬堆棧結(jié)構(gòu)?
22、Map 中的 key 和 value 可以為 null?
23、數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)之雙向鏈表
24、HashMap 的底層實(shí)現(xiàn)
25、ConcurrentHashMap 和 Hashtable 的區(qū)別
26、說(shuō)出 ArrayList,Vector,LinkedList 的存儲(chǔ)性能和特性
27、你所知道的集合類都有哪些?主要方法?
28、HashMap 原理,java8 做了什么改變
29、poll()方法和 remove()方法的區(qū)別?
30、寫(xiě)一段代碼在遍歷 ArrayList 時(shí)移除一個(gè)元素
三、Java 異常面試題
1、Java 中異常分為哪兩種?編譯時(shí)異常運(yùn)行時(shí)異常
2、異常的處理機(jī)制有幾種?異常捕捉:try…catch…finally,異常拋出:throws。 public class Box { private T t; public void add(T t) { this.t = t; }public T get() { return t; }
}3、如何自定義一個(gè)異常繼承一個(gè)異常類,通常是 RumtimeException 或者 Exception
4、try catch fifinally,try 里有 return,finally 還執(zhí)行么?執(zhí)行,并且 finally 的執(zhí)行早于 try 里面的 return 結(jié)論:1、不管有木有出現(xiàn)異常,finally 塊中代碼都會(huì)執(zhí)行;2、當(dāng) try 和 catch 中有 return 時(shí),finally 仍然會(huì)執(zhí)行;3、finally 是在 return 后面的表達(dá)式運(yùn)算后執(zhí)行的(此時(shí)并沒(méi)有返回運(yùn)算后的值,而是先把要返回的值保存起來(lái),管 finally 中的代碼怎么樣,返回的值都不會(huì)改變,任然是之前保存的值),所以函數(shù)返回值是在 finally 執(zhí)行前確定的;4、finally 中最好不要包含 return,否則程序會(huì)提前退出,返回值不是 try 或 catch 中保存的返回值。
5、 Excption 與 Error 包結(jié)構(gòu)
6、Thow 與 thorws 區(qū)別
7、Error 與 Exception 區(qū)別?
8、error 和 exception 有什么區(qū)別
9、final、finally、finalize 的區(qū)別?
10、Java 異常處理機(jī)制的理解?
11、說(shuō)出最常見(jiàn)的 5 個(gè) RuntimeException?
12、throw 和 throws 的區(qū)別?
13、JAVA 中 Exception 和 Error 面試問(wèn)題
14、在 Java 異常處理的過(guò)程中,你遵循的那些最好的實(shí)踐是什么?
15、throw 和 throws 這兩個(gè)關(guān)鍵字在 java 中有什么不同?
16、你曾經(jīng)自定義實(shí)現(xiàn)過(guò)異常嗎?怎么寫(xiě)的?
17、你遇到過(guò) OutOfMemoryError 錯(cuò)誤嘛?你是怎么搞定的?
18、Java 中的異常處理機(jī)制的簡(jiǎn)單原理和應(yīng)用。
19、最常見(jiàn)到的 5 個(gè) runtime exception。
20、JAVA 語(yǔ)言如何進(jìn)行異常處理,關(guān)鍵字:throws,throw,try,catch,finally 分別代表什么意義?在 try 塊中可以拋出異常嗎?
四、Java 中的 IO 與 NIO 面試題
1、Java 中 IO 流?
2、字節(jié)流如何轉(zhuǎn)為字符流?
3、常用 io 類有那些
4、如何將一個(gè) java 對(duì)象序列化到文件里?
5、阻塞 IO 模型 6、字節(jié)流和字符流的區(qū)別?
7、多路復(fù)用 IO 模型
8、如何實(shí)現(xiàn)對(duì)象克隆?
9、異步 IO 模型
10、什么是 java 序列化,如何實(shí)現(xiàn) java 序列化?
11、NIO 的緩沖區(qū)
12、面向 Stream 和面向 Buffer
13、Channel
14、NIO 和 IO 對(duì)應(yīng)用的設(shè)計(jì)有何影響
15、Selector
16、Java IO 與 NIO 的區(qū)別
17、字節(jié)流與字符流的區(qū)別
18、非阻塞 IO 模型
19、信號(hào)驅(qū)動(dòng) IO 模型
20、NIO 的非阻塞
21、Buffer
22、JAVA NIO
五、Java 反射面試題
1、什么是反射?
2、Java 反射創(chuàng)建對(duì)象效率高還是通過(guò) new 創(chuàng)建對(duì)象的效率高?
3、什么叫對(duì)象序列化,什么是反序列化,實(shí)現(xiàn)對(duì)象序列化需要做哪些工作?
4、哪里會(huì)用到反射機(jī)制?
5、反射機(jī)制的優(yōu)缺點(diǎn)?
6、實(shí)現(xiàn) Java 反射的類:
7、動(dòng)態(tài)代理是什么?有哪些應(yīng)用?
8、Java 反射 API
9、如何使用 Java 的反射?
10、獲取 Class 對(duì)象有幾種方法
11、除了使用 new 創(chuàng)建對(duì)象之外,還可以用什么方法創(chuàng)建對(duì)象?
12、java 反射的作用
13、反射的實(shí)現(xiàn)方式:
14、反射使用步驟(獲取 Class 對(duì)象、調(diào)用對(duì)象方法)
六、Java 序列化面試題
1、什么是 java 序列化?
2、保存(持久化)對(duì)象及其狀態(tài)到內(nèi)存或者磁盤
3、序列化對(duì)象以字節(jié)數(shù)組保持-靜態(tài)成員不保存
4、Serializable 實(shí)現(xiàn)序列化
5、序列化 ID
6、序列化用戶遠(yuǎn)程對(duì)象傳輸
7、writeObject 和 readObject 自定義序列化策略
8、序列化并不保存靜態(tài)變量
9、序列化(深 clone 一中實(shí)現(xiàn))
10、Transient 關(guān)鍵字阻止該變量被序列化到文件中
11、如何實(shí)現(xiàn) java 序列化?
12、Transient 關(guān)鍵字阻止該變量被序列化到文件中
13、靜態(tài)變量的序列化?
七、Java 注解面試題
1、4 種標(biāo)準(zhǔn)元注解是哪四種?
2、什么是注釋?他們的典型用例是什么?
3、從標(biāo)準(zhǔn)庫(kù)中描述一些有用的注釋。
4、注解是什么?
5、可以從注釋方法聲明返回哪些對(duì)象類型?
6、哪些程序元素可以注釋?
7、有沒(méi)有辦法限制可以應(yīng)用注釋的元素?
8、什么是元注釋?
9、什么是重復(fù)注釋?
10、你怎么能檢索注釋?這與保留政策有何關(guān)系?
11、Q11,是否可以擴(kuò)展注釋?
八、多線程 &并發(fā)面試題
1、什么是線程?
2、繼承 Thread 類
3、如何在 java 中實(shí)現(xiàn)線程
4、ExecutorService、 Callable、 Future 有返回值線程
5、實(shí)現(xiàn)多線程 Thread 和 Runnable 區(qū)別?
6、4 種線程池
7、解釋 java 中的 volatile 變量
8、notify()和 notifyAll()有什么區(qū)別?
9、sleep()和 wait() 有什么區(qū)別?
10、volatile 是什么?可以保證有序性嗎?
11、Thread 類中的 start() 和 run() 方法有什么區(qū)別?
12、為什么 wait, notify 和 notifyAll 這些方法不在 thread 類里面?
13、共享鎖和獨(dú)占鎖
14、Java 中 interrupted 和 isInterruptedd 方法的區(qū)別?
15、Java 中 synchronized 和 ReentrantLock 有什么不同?
16、有三個(gè)線程 T1,T2,T3,如何保證順序執(zhí)行?
17、SynchronizedMap 和 ConcurrentHashMap 有什么區(qū)別?
18、什么是線程安全
19、重量級(jí)鎖(Mutex Lock)
20、Java 線程池中 submit() 和 execute()方法有什么區(qū)別?
21、偏向鎖
22、說(shuō)說(shuō)自己是怎么使用 synchronized 關(guān)鍵字,在項(xiàng)目中用到了嗎 synchronized 關(guān)鍵字最主要的三種使用方式
23、什么是線程安全?Vector 是一個(gè)線程安全類嗎?
24、Java 中實(shí)現(xiàn)多線程有幾種方法
25、實(shí)現(xiàn) Runnable 接口。
26、基于線程池的方式
27、如何停止一個(gè)正在運(yùn)行的線程
28、線程基本方法
29、線程讓步(yield)
30、線程喚醒(notify)
九、JVM 面試題
1、JVM 運(yùn)行時(shí)內(nèi)存
2、64 位 JVM 中,int 的長(zhǎng)度是多數(shù)?
3、新生代、老年代、永久代
4、32 位和 64 位的 JVM,int 類型變量的長(zhǎng)度是多數(shù)?
5、JAVA8 與元數(shù)據(jù)
6、分代收集算法
7、怎樣通過(guò) Java 程序來(lái)判斷 JVM 是 32 位 還是 64 位?
8、分代收集算法
9、JRE、JDK、JVM 及 JIT 之間有什么不同?
10、解釋 Java 堆空間及 GC?
11、JVM 內(nèi)存區(qū)域
12、JAVA 強(qiáng)引用、軟引用、弱引用、虛引用
13、虛擬機(jī)棧(線程私有)
14、分代收集算法
15、你能保證 GC 執(zhí)行嗎?
16、怎么獲取 Java 程序使用的內(nèi)存?堆使用的百分比?
17、在老年代-標(biāo)記整理算法
18、描述一下 JVM 加載 class 文件的原理機(jī)制
19、Serial Old 收集器(單線程標(biāo)記整理算法
20、堆(Heap-線程共享) -運(yùn)行時(shí)數(shù)據(jù)區(qū)
21、G1 收集器
22、JVM 類加載機(jī)制
23、堆和棧的區(qū)別
24、什么是 Java 虛擬機(jī)?為什么 Java 被稱作是“平臺(tái)無(wú)關(guān)的編程語(yǔ)言”?
25、Parallel Old 收集器(多線程標(biāo)記整理算法)
26、垃圾收集算法
27、Minor GC 與 Full GC 分別在什么時(shí)候發(fā)生?
28、你知道哪些 JVM 性能調(diào)優(yōu)
29、說(shuō)一下 JVM 的主要組成部分及其作用?
30、隊(duì)列和棧是什么?有什么區(qū)別?
十、Mysql 面試題
1、MySQL 中有哪些不同的表格?
2、TokuDB( Fractal Tree-節(jié)點(diǎn)帶數(shù)據(jù))
3、MySQL 中 InnoDB 支持的四種事務(wù)隔離級(jí)別名稱,以及逐級(jí)之間的區(qū)別?
4、Memory
5、myisamchk 是用來(lái)做什么的?
6、MyISAM 表格將在哪里存儲(chǔ),并且還提供其存儲(chǔ)格式?
7、索引
8、常見(jiàn)索引原則有
9、如何顯示前 50 行?
10、第一范式(1st NF - 列都是不可再分)
11、第二范式(2nd NF- 每個(gè)表只描述一件事情)
12、第三范式(3rd NF- 不存在對(duì)非主鍵列的傳遞依賴)
13、鎖的優(yōu)化策略
14、SQL 優(yōu)化
15、為表中得字段選擇合適得數(shù)據(jù)類型
16、什么是視圖
17、什么情況下設(shè)置了索引但無(wú)法使用
18、并發(fā)事務(wù)帶來(lái)哪些問(wèn)題?
19、SQL 語(yǔ)言包括哪幾部分?每部分都有哪些操作關(guān)鍵
20、什么是鎖?
21、說(shuō)說(shuō)對(duì) SQL 語(yǔ)句優(yōu)化有哪些方法?
22、什么是樂(lè)觀鎖、悲觀鎖、時(shí)間戳、行級(jí)鎖、表級(jí)鎖、頁(yè)級(jí)鎖
十二、Memcached 面試題
1、Memcached 是什么,有什么作用?
2、memcached 和 MySQL 的 query cache 相比,有什么優(yōu)缺點(diǎn)?
3、 但是我確實(shí)需要把 memcached 中的 item 都 dump 出來(lái),確實(shí)需要把數(shù)據(jù) load 到 memcached 中,怎么辦?
4、memcached 是如何做身份驗(yàn)證的?
5、如何使用 memcached 的多線程是什么?如何使用它們?
6、memcached 能接受的 key 的最大長(zhǎng)度是多少?(250bytes)
7、memcached 對(duì) item 的過(guò)期時(shí)間有什么限制?(為什么有 30 天的限制?)
8、memcached 最大能存儲(chǔ)多大的單個(gè) item?(1M byte)
9、為什么單個(gè) item 的大小被限制在 1M byte 之內(nèi)?
10、為了讓 memcached 更有效地使用服務(wù)器的內(nèi)存,可以在各個(gè)服務(wù)器上配置大小不等的緩存空間嗎?
11、什么是 binary 協(xié)議?它值得關(guān)注嗎?
12、memcached 是如何分配內(nèi)存的?
13、為什么不用 malloc/free!?
14、究竟為什么使用 slab 呢?
15、memcached 能保證數(shù)據(jù)存儲(chǔ)的原子性嗎?
十三、MongoDB 面試題
1、mongodb 是什么?
2、MongoDB 是由哪種語(yǔ)言寫(xiě)的
3、你說(shuō)的 NoSQL 數(shù)據(jù)庫(kù)是什么意思?
4、NoSQL 數(shù)據(jù)庫(kù)有哪些類型?
5、你怎么比較 MongoDB、CouchDB 及 CouchBase?
6、MongoDB 成為最好 NoSQL 數(shù)據(jù)庫(kù)的原因是什么?
7、MySQL 與 MongoDB 之間最基本的差別是什么?
8、journal 回放在條目(entry)不完整時(shí)(比如恰巧有一個(gè)中途故障了)會(huì)遇到問(wèn)題嗎?
9、分析器在 MongoDB 中的作用是什么?1
0、名字空間(namespace)是什么?
11、 如果用戶移除對(duì)象的屬性,該屬性是否從存儲(chǔ)層中刪除?
12、允許空值 null 嗎?
13、能否使用日志特征進(jìn)行安全備份?
14、更新操作立刻 fsync 到磁盤?
15、為什么我的數(shù)據(jù)文件如此龐大?
16、如何執(zhí)行事務(wù)/加鎖?
17、NoSQL 與 RDBMS 直接有什么區(qū)別?
18、為什么要使用和不使用 NoSQL 數(shù)據(jù)庫(kù)?
19、說(shuō)一說(shuō) NoSQL 數(shù)據(jù)庫(kù)的幾個(gè)優(yōu)點(diǎn)?
20、mongodb 有哪些特點(diǎn)?
十四、Spring 面試題
1、String 是基本數(shù)據(jù)類型嗎?
2、什么是 Spring Framework?
3、String 是可變的話?
4、Spring Framework 有哪些不同的功能?
5、怎么比較兩個(gè)字符串的值一樣,怎么比較兩個(gè)字符串是否同一對(duì)象?
6、什么是 Spring 配置文件?
7、Spring 應(yīng)用程序有哪些不同組件?
8、使用 Spring 有哪些方式?
9、tring str = new String(“abc”);創(chuàng)建了幾個(gè)對(duì)象,為什么?
10、什么是依賴注入?
11、String.trim()方法去掉的是哪些字符?
12、可以自定義 java.lang.String 類并使用嗎?
13、spring 中有多少種 IOC 容器?
14、區(qū)分 BeanFactory 和 ApplicationContext。
15、列舉 IoC 的一些好處。
16、Spring IoC 的實(shí)現(xiàn)機(jī)制。
17、spring 提供了哪些配置方式?
18、什么是 spring bean?
19、spring 支持集中 bean scope?
20、什么是 spring 的內(nèi)部 bean?
21、什么是 spring 裝配
22、spring bean 容器的生命周期是什么樣的?
23、自動(dòng)裝配有哪些方式?
24、如何在 spring 中啟動(dòng)注解裝配?
25、自動(dòng)裝配有什么局限?
26、@Component, @Controller, @Repository
27、什么是基于注解的容器配置
28、@Required 注解有什么用?
29、列舉 Spring DAO 拋出的異常。
30、@Qualifier 注解有什么用?
31、@Autowired 注解有什么用?
32、spring DAO 有什么用?
33、@RequestMapping 注解有什么用?
34、spring JDBC API 中存在哪些類?
十五、Spring Cloud 面試題
1、什么是 Spring Cloud?
2、負(fù)載平衡的意義什么?
3、什么是 Spring Cloud Bus?我們需要它嗎?
4、什么是 Hystrix 斷路器?我們需要它嗎?
5、什么是 Hystrix?它如何實(shí)現(xiàn)容錯(cuò)?
6、什么是 Netflix Feign?它的優(yōu)點(diǎn)是什么?
7、什么是服務(wù)熔斷?什么是服務(wù)降級(jí)
8、Eureka 和 zookeeper 都可以提供服務(wù)注冊(cè)與發(fā)現(xiàn)的功能,請(qǐng)說(shuō)說(shuō)兩個(gè)的區(qū)別?
9、什么是微服務(wù)
10、什么是 Hystrix 斷路器?我們需要它嗎
11、spring cloud 和 dubbo 區(qū)別?
12、SpringBoot 和 SpringCloud 的區(qū)別?
13、spring cloud 和 dubbo 區(qū)別?
14、說(shuō)說(shuō) RPC 的實(shí)現(xiàn)原理
15、微服務(wù)之間是如何獨(dú)立通訊的?
16、使用 Spring Cloud 有什么優(yōu)勢(shì)?
17、REST 和 RPC 對(duì)比
18、你所知道的微服務(wù)技術(shù)棧?
十六、RabbitMQ 面試題
1、什么是 rabbitmq
2、使用 rabbitmq 的場(chǎng)景
3、RabbitMQ 有什么優(yōu)缺點(diǎn)?
4、什么是 Message?
5、為什么要使用 rabbitmq
6、消息如何分發(fā)?
7、如何確保消息正確地發(fā)送至 RabbitMQ? 如何確保消息接收方消費(fèi)了消息?
8、消息怎么路由?
9、如何確保消息不丟失?
10、消息基于什么傳輸?
11、如何保證消息的順序性
12、Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么區(qū)別?
13、Fanout(廣播分發(fā))?
14、如何保證高可用的?
15、mq 的缺點(diǎn)
16、如何保證消息的可靠傳輸?如果消息丟了怎么辦
17、如何避免消息重復(fù)投遞或重復(fù)消費(fèi)?
18、什么是 Message?
19、如何解決消息隊(duì)列的延時(shí)以及過(guò)期失效問(wèn)題?消息隊(duì)列滿了以后該怎么處理?有幾百萬(wàn)消息持續(xù)積壓幾小時(shí),說(shuō)說(shuō)怎么解決
20、RabbitMQ 的集群
21、什么是 Connection ?
22、topic 交換器(模式匹配) ?
23、Exchange 類型 ?
24、設(shè)計(jì) MQ 的思路
十七、Dubbo 面試題
1、為什么要用 Dubbo?
2、Dubbo 是什么?
3、默認(rèn)使用的是什么通信框架,還有別的選擇嗎?
4、Dubbo 和 Spring Cloud 有什么區(qū)別?
5、一般使用什么注冊(cè)中心?還有別的選擇嗎?
6、dubbo 都支持什么協(xié)議,推薦用哪種?
7、服務(wù)提供者能實(shí)現(xiàn)失效踢出是什么原理?
8、Dubbo 的整體架構(gòu)設(shè)計(jì)有哪些分層?
9、如何解決服務(wù)調(diào)用鏈過(guò)長(zhǎng)的問(wèn)題?
10、說(shuō)說(shuō)核心的配置有哪些?
11、Dubbo 推薦用什么協(xié)議?
12、默認(rèn)使用什么序列化框架,你知道的還有哪些?
13、畫(huà)一畫(huà)服務(wù)注冊(cè)與發(fā)現(xiàn)的流程圖?
14、Dubbo 集群容錯(cuò)有幾種方案?
15、服務(wù)上線怎么不影響舊版本?
16、Dubbo 服務(wù)降級(jí),失敗重試怎么做?
17、Dubbo Monitor 實(shí)現(xiàn)原理?
18、Dubbo 用到哪些設(shè)計(jì)模式?
19、Dubbo 配置文件是如何加載到 Spring 中的?2
0、服務(wù)調(diào)用是阻塞的嗎?
21、Dubbo 支持分布式事務(wù)嗎?
22、Dubbo 可以對(duì)結(jié)果進(jìn)行緩存嗎?
十八、MyBatis 面試題
1、什么是 Mybatis?
2、MyBatis 實(shí)現(xiàn)一對(duì)一有幾種方式?具體怎么操作的?
3、MyBatis 框架的缺點(diǎn)
4、MyBatis 實(shí)現(xiàn)一對(duì)多有幾種方式,怎么操作的?
5、MyBatis 與 Hibernate 有哪些不同?
6、Mybatis 是否支持延遲加載?如果支持,它的實(shí)現(xiàn)原理是什么?
7、當(dāng)實(shí)體類中的屬性名和表中的字段名不一樣 ,怎么辦 ?
8、 Mybatis 的一級(jí)、二級(jí)緩存:
9、通常一個(gè) Xml 映射文件,都會(huì)寫(xiě)一個(gè) Dao 接口與之對(duì)應(yīng),請(qǐng)問(wèn),這個(gè) Dao 接口的工作原理是什么?Dao 接口里的方法,參數(shù)不同時(shí),方法能重載嗎?
十九、ZooKeeper 面試題
1、什么是 Zookeeper?
2、zookeeper 的數(shù)據(jù)結(jié)構(gòu)(樹(shù))? 講一下基于它實(shí)現(xiàn)的分布式鎖?基于它實(shí)現(xiàn)的 Master 選舉?基于它的集群管理?zookeeper 的注冊(cè)(watch)機(jī)制和輪詢機(jī)制的使用場(chǎng)景?
3、ZooKeeper 提供了什么?
4、講一下如何用 zookeeper 實(shí)現(xiàn)分布式鎖?
5、ZAB 協(xié)議?
6、Zookeeper 的同步過(guò)程,寫(xiě)操作流程,讀操作流程
7、ZK 的部署方式有哪幾種?集群中的角色有哪些?集群中最少需要幾臺(tái)機(jī)器
8、客戶端注冊(cè) Watcher 實(shí)現(xiàn)
9、 服務(wù)端處理 Watcher 實(shí)現(xiàn)
10、客戶端回調(diào) Watcher11、ACL 權(quán)限控制機(jī)制
12、服務(wù)器角色
13、會(huì)話管理
14、數(shù)據(jù)同步
15、Zookeeper 下 Server 工作狀態(tài)
16、zk 節(jié)點(diǎn)宕機(jī)如何處理?
17、zookeeper 是如何保證事務(wù)的順序一致性的?
18、分布式集群中為什么會(huì)有 Master?
19、zookeeper 負(fù)載均衡和 nginx 負(fù)載均衡區(qū)別
20、Chroot 特性
21、集群最少要幾臺(tái)機(jī)器,集群規(guī)則是怎樣的?
22、集群支持動(dòng)態(tài)添加機(jī)器嗎?
23、Zookeeper 對(duì)節(jié)點(diǎn)的 watch 監(jiān)聽(tīng)通知是永久的嗎?為什么不是永久的?
24、Zookeeper 的 java 客戶端都有哪些?
25、chubby 是什么,和 zookeeper 比你怎么看?
26、說(shuō)幾個(gè) zookeeper 常用的命令。
27、ZAB 和 Paxos 算法的聯(lián)系與區(qū)別?
28、Zookeeper 的典型應(yīng)用場(chǎng)景
二十、數(shù)據(jù)結(jié)構(gòu)面試題
1、棧(stack)棧( stack)是限制插入和刪除只能在一個(gè)位置上進(jìn)行的表,該位置是表的末端,叫做棧頂(top)。它是后進(jìn)先出(LIFO)的。對(duì)棧的基本操作只有 push(進(jìn)棧)和 pop(出 棧)兩種,前者相當(dāng)于插入,后者相當(dāng)于刪除最后的元素。
2、隊(duì)列(queue)
3、排序二叉樹(shù)
4、前綴樹(shù)
5、紅黑樹(shù)
6、散列表(Hash Table)
7、B-TREE8、位圖 9、鏈表(Link)
10、棧和隊(duì)列的共同特點(diǎn)是?
11、棧通常采用的兩種存儲(chǔ)結(jié)構(gòu)是?
12、用鏈表表示線性表的優(yōu)點(diǎn)是?
13、增加頭結(jié)點(diǎn)的目的是?
14、在計(jì)算機(jī)中,算法是指?
二十一、算法面試題
1、數(shù)據(jù)里有{1,2,3,4,5,6,7,8,9},請(qǐng)隨機(jī)打亂順序,生成一個(gè)新的數(shù)組(請(qǐng)以代碼實(shí)現(xiàn))
2、給定一個(gè)數(shù)組 nums,編寫(xiě)一個(gè)函數(shù)將所有 0 移動(dòng)到數(shù)組的末尾,同時(shí)保持非零元素的相對(duì)順序。
3、如何解決樣本類別的不均衡問(wèn)題?
4、在神經(jīng)網(wǎng)絡(luò)訓(xùn)練過(guò)程中,為什么會(huì)出現(xiàn)梯度消失的問(wèn)題?如何防止?5、二分查找
6、冒泡排序算法、插入排序算法、快速排序算法、希爾排序算法、歸并排序算法 7、K-Means 或 KNN 中,通常使用歐式距離來(lái)表示最近的數(shù)據(jù)點(diǎn)之間的距離,有時(shí)候也使用曼哈度距離,對(duì)比兩者的區(qū)別。
8、參數(shù)模型與非參數(shù)模型
9、生成模型與判別模型
10、神經(jīng)網(wǎng)絡(luò)中參數(shù)量 parameters 和 FLOPs 計(jì)算
11、桶排序算法、基數(shù)排序算法、剪枝算法、回溯算法
12、AES
13、RSA
4、CRC
15、最短路徑算法
16、最小生成樹(shù)算法
18、有兩個(gè)籃子,分別為 A 和 B,籃子 A 里裝有雞蛋,籃子 B 里裝有蘋(píng)果,請(qǐng)用面向?qū)ο蟮乃枷雽?shí)現(xiàn)兩個(gè)籃子里的物品交換(請(qǐng)用代碼實(shí)現(xiàn))
19、假設(shè)今日是 2015 年 3 月 1 日,星期日,請(qǐng)算出 13 個(gè)月零 6 天后是星期幾,距離現(xiàn)在多少天(請(qǐng)用代碼實(shí)現(xiàn),謝絕調(diào)用 API 方法)
20、MD521、寫(xiě)出代碼判斷一個(gè)整數(shù)是不是 2 的階次方(請(qǐng)代碼實(shí)現(xiàn),謝絕調(diào)用 API 方法)
二十二、Elasticsearch 面試題
1、elasticsearch 了解多少,說(shuō)說(shuō)你們公司 es 的集群架構(gòu),索引數(shù)據(jù)大小,分片有多少,以及一些調(diào)優(yōu)手段 。
2、elasticsearch 索引數(shù)據(jù)多了怎么辦,如何調(diào)優(yōu),部署
3、詳細(xì)描述一下 Elasticsearch 索引文檔的過(guò)程
4、elasticsearch 的倒排索引是什么
5、elasticsearch 是如何實(shí)現(xiàn) master 選舉的
6、詳細(xì)描述一下 Elasticsearch 搜索的過(guò)程?
7、Elasticsearch 在部署時(shí),對(duì) Linux 的設(shè)置有哪些優(yōu)化方法
8、Elasticsearch 中的節(jié)點(diǎn)(比如共 20 個(gè)),其中的 10 個(gè)選了一個(gè) master,另外 10 個(gè)選了另一個(gè) master,怎么辦?
9、lucence 內(nèi)部結(jié)構(gòu)是什么?
10、Elasticsearch 是如何實(shí)現(xiàn) Master 選舉的?
11、詳細(xì)描述一下 Elasticsearch 索引文檔的過(guò)程。
12、詳細(xì)描述一下 Elasticsearch 更新和刪除文檔的過(guò)程。
13、客戶端在和集群連接時(shí),如何選擇特定的節(jié)點(diǎn)執(zhí)行請(qǐng)求的?
14、詳細(xì)描述一下 Elasticsearch 搜索的過(guò)程
15、在 Elasticsearch 中,是怎么根據(jù)一個(gè)詞找到對(duì)應(yīng)的倒排索引的?
16、Elasticsearch 在部署時(shí),對(duì) Linux 的設(shè)置有哪些優(yōu)化方法?
17、對(duì)于 GC 方面,在使用 Elasticsearch 時(shí)要注意什么?
18、拼寫(xiě)糾錯(cuò)是如何實(shí)現(xiàn)的?
19、詳細(xì)描述一下 Elasticsearch 索引文檔的過(guò)程。
20、如何監(jiān)控 Elasticsearch 集群狀態(tài)?
21、介紹下你們電商搜索的整體技術(shù)架構(gòu)?
22、介紹一下你們的個(gè)性化搜索方案?
23、是否了解字典樹(shù)?
24、Elasticsearch 對(duì)于大數(shù)據(jù)量(上億量級(jí))的聚合如何實(shí)現(xiàn)
二十三、Kafka 面試題
1、Kafka 是什么
2、壓縮(GZIP 或 Snappy)
3、數(shù)據(jù)文件分段 segment(順序讀寫(xiě)、分段命令、二分查找)
4、partition 的數(shù)據(jù)文件(offset, MessageSize, data)
5、消費(fèi)者設(shè)計(jì)
6、批量發(fā)送
7、Consumer Group
8、如何獲取 topic 主題的列表
9、生產(chǎn)者和消費(fèi)者的命令行是什么?
10、負(fù)載均衡(partition 會(huì)均衡分布到不同 broker 上)
11、consumer 是推還是拉?
12、Zookeeper 對(duì)于 Kafka 的作用是什么?
13、Kafka 判斷一個(gè)節(jié)點(diǎn)是否還活著有那兩個(gè)條件?
14、為什么需要消息系統(tǒng),mysql 不能滿足需求嗎?
15、講講 kafka 維護(hù)消費(fèi)狀態(tài)跟蹤的方法
16、消費(fèi)者如何不自動(dòng)提交偏移量,由應(yīng)用提交?
17、Kafka 與傳統(tǒng) MQ 消息系統(tǒng)之間有三個(gè)關(guān)鍵區(qū)別
18、講一講 kafka 的 ack 的三種機(jī)制
19、消費(fèi)者故障,出現(xiàn)活鎖問(wèn)題如何解決?
20、講一下主從同步:
二十四、微服務(wù) 面試題
1、微服務(wù)架構(gòu)有哪些優(yōu)勢(shì)?
2、設(shè)計(jì)微服務(wù)的最佳實(shí)踐是什么?
3、單片,SOA 和微服務(wù)架構(gòu)有什么區(qū)別?
4、微服務(wù)有哪些特點(diǎn)?
5、微服務(wù)架構(gòu)如何運(yùn)作?
6、在使用微服務(wù)架構(gòu)時(shí),您面臨哪些挑戰(zhàn)?
7、微服務(wù)架構(gòu)的優(yōu)缺點(diǎn)是什么?
8、微服務(wù)有什么特點(diǎn)?
9、什么是領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)?
10、SOA 和微服務(wù)架構(gòu)之間的主要區(qū)別是什么?
11、為什么需要域驅(qū)動(dòng)設(shè)計(jì)(DDD)?
12、什么是耦合?
13、什么是無(wú)所不在的語(yǔ)言?
14、什么是凝聚力?
15、你對(duì) Spring Boot 有什么了解?
16、什么是 REST / RESTful 以及它的用途是什么?
17、什么是 Spring 引導(dǎo)的執(zhí)行器?
18、什么是 Spring Cloud?
19、Spring Cloud 解決了哪些問(wèn)題?
20、在 Spring MVC 應(yīng)用程序中使用 WebMvcTest 注釋有什么用處?
21、你能否給出關(guān)于休息和微服務(wù)的要點(diǎn)?
22、您對(duì) Distributed Transaction 有何了解?
23、什么是不同類型的微服務(wù)測(cè)試?
24、什么是有界上下文?
25、什么是 Idempotence 以及它在哪里使用?
26、什么是雙因素身份驗(yàn)證?
27、雙因素身份驗(yàn)證的憑據(jù)類型有哪些?
28、PACT 在微服務(wù)架構(gòu)中的用途是什么?29、什么是客戶證書(shū)?
二十五、Linux 面試題
1、絕對(duì)路徑用什么符號(hào)表示?當(dāng)前目錄、上層目錄用什么表示?主目錄用什么表示? 切換目錄用什么命令?
2、使用什么命令查看 ip 地址及接口信息?
3、怎么清屏?怎么退出當(dāng)前命令?怎么執(zhí)行睡眠?怎么查看當(dāng)
4、通過(guò)什么命令指定命令提示符?5、查看文件有哪些命令
6、列舉幾個(gè)常用的 Linux 命令 7、怎么對(duì)命令進(jìn)行取別名?8、建立軟鏈接(快捷方式),以及硬鏈接的命令
9、當(dāng)你需要給命令綁定一個(gè)宏或者按鍵的時(shí)候,應(yīng)該怎么做呢?10、查看文件內(nèi)容有哪些命令可以使用?11、隨意寫(xiě)文件命令?怎么向屏幕輸出帶空格的字符串,比如”hello world”?
12、你的系統(tǒng)目前有許多正在運(yùn)行的任務(wù),在不重啟機(jī)器的條件下,有什么方法可以把所有正在運(yùn)行的進(jìn)程移除呢?
13、移動(dòng)文件用哪個(gè)命令?改名用哪個(gè)命令?
14、復(fù)制文件用哪個(gè)命令?如果需要連同文件夾一塊復(fù)制呢?如果需要有提示功能呢?
15、怎樣一頁(yè)一頁(yè)地查看一個(gè)大文件的內(nèi)容呢?
16、Linux 下命令有哪幾種可使用的通配符?分別代表什么含義?
17、用什么命令對(duì)一個(gè)文件的內(nèi)容進(jìn)行統(tǒng)計(jì)?(行號(hào)、單詞數(shù)、字節(jié)數(shù))
18、Grep 命令有什么用? 如何忽略大小寫(xiě)? 如何查找不含該串的行?
19、Linux 中進(jìn)程有哪幾種狀態(tài)?在 ps 顯示出來(lái)的信息中分別用什么符號(hào)表示的?
20、怎樣查看一個(gè) linux 命令的概要與用法?假設(shè)你在/bin 目錄中偶然看到一個(gè)你從沒(méi)見(jiàn)過(guò)的的命令,怎樣才能知道它的作用和用法呢?
21、怎么查看當(dāng)前進(jìn)程?怎么執(zhí)行退出?怎么查看當(dāng)前路徑?
22、Ls 命令執(zhí)行什么功能? 可以帶哪些參數(shù),有什么區(qū)別?
23、你平時(shí)是怎么查看日志的?
24、終端是哪個(gè)文件夾下的哪個(gè)文件?黑洞文件是哪個(gè)文件夾下的哪個(gè)命令?
25、刪除文件用哪個(gè)命令?如果需要連目錄及目錄下文件一塊刪除呢?刪除空文件夾用什么命令?
26、怎么使一個(gè)命令在后臺(tái)運(yùn)行?
27、目錄創(chuàng)建用什么命令?創(chuàng)建文件用什么命令?復(fù)制文件用什么命令?
28、使用哪一個(gè)命令可以查看自己文件系統(tǒng)的磁盤空間配額呢?
以上是 2025年 Java 后端開(kāi)發(fā)面試總結(jié)【25 個(gè)技術(shù)專題】