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