
前言
春節過后招聘旺季就到了,不知道大家是否準備好了,面對金三銀四的招聘旺季,如果沒有精心準備那筆者認為那是對自己不負責任;就我們Java程式員來說,多數的公司總體上面試都是以自我介紹+專案介紹+專案細節/難點提問+基礎知識點考核+演算法題這個流程下來的,
有些公司可能還會問幾個實際的場景類的問題,這個環節阿里是必問的,這種問題通常是沒有正確答案的,就看個人的理解,個人的積累了,剩下的就沒啥了,都是換湯不換藥,聊專案就看你自己對你自己的專案是否理解的透徹,比如經常問你你為什么選擇這個技術,為什么這么處理之類的,常考的基礎的知識點就那么多,最后演算法就是靠刷題,
今天為大家分享的就是當前互聯網企業使用頻率最高的面試題庫,經過精心整理后,所有問題都已更新出詳細的答案決議,比較難以理解的還專門做了技術檔案以便于大家閱讀學習,
本次分享總共涉及知識點:Java基礎、多執行緒、JVM、Spring、SpringMVC、SpringCloud、Spring Boot、高并發、Redis、kafka、訊息中間件MQ、Dubbo、Tomcat、網路協議、資料結構、MySQL、MyBatis、設計模式、演算法等,
由于資料內容太多,平臺篇幅限制,小編就展現了以上部分面試專題與資料,如需獲取以下全部面試資料,可以【點擊這里】,可復制鏈接后用石墨檔案 App 或小程式打開獲取,
一、多執行緒面試專題
- 現在有 T1、T2、T3 三個執行緒,你怎樣保證 T2 在 T1 執行完后執行,T3 在 T2 執行完后執行?
- 在 Java 中 Lock 介面比 synchronized 塊的優勢是什么?你需要實作一個高效的快取,它允許多個用戶讀,但只允許一個用戶寫,以此來保持它的完整性,你會怎樣去實作它?
- 在 java 中 wait 和 sleep 方法的不同?
- 用 Java 實作阻塞佇列,
- 用 Java 寫代碼來解決生產者——消費者問題,
- 用 Java 編程一個會導致死鎖的程式,你將怎么解決?
- 什么是原子操作,Java 中的原子操作是什么?
- Java 中的 volatile 關鍵是什么作用?怎樣使用它?在 Java 中它跟 synchronized 方法有什么不同?
- 什么是競爭條件?你怎樣發現和解決競爭?
- 你將如何使用 threaddump?你將如何分析 Thread dump?
- 為什么我們呼叫 start()方法時會執行 run()方法,為什么我們不能直接呼叫 run()方法?
- Java 中 你怎樣喚醒一個阻塞的執行緒?
- 在 Java 中 CycliBarriar 和 CountdownLatch 有什么區別?
- 什么是不可變物件,它對寫并發應用有什么幫助?
- 你在多執行緒環境中遇到的常見的問題是什么?你是怎么解決它的?

二、JVM面試專題
- 記憶體模型以及磁區,需要詳細到每個區放什么,
- 堆里面的磁區:Eden,survival (from+ to),老年代,各自的特點,
- 物件創建方法,物件的記憶體分配,物件的訪問定位,
- GC 的兩種判定方法:
- SafePoint 是什么
- GC 的三種收集方法:標記清除、標記整理、復制演算法的原理與特點,分別用在什么地方,如果讓你優化收集方法,有什么思路?
- GC 收集器有哪些?CMS 收集器與 G1 收集器的特點,
- Minor GC 與 Full GC 分別在什么時候發生?
- 幾種常用的記憶體除錯工具:jmap、jstack、jconsole、jhat
- 類加載的幾個程序:
- 如何判斷一個物件是否存活?(或者 GC 物件的判定方法)
- 簡述 java 垃圾回識訓制?
- java 記憶體模型
- 簡述 java 類加載機制?
- 類加載器雙親委派模型機制?
- 什么是類加載器,類加載器有哪些?
- 簡述 java 記憶體分配與回收策略以及 Minor GC 和Major GC

三、Spring面試專題
- 什么是 Spring 框架?Spring 框架有哪些主要模塊?
- 使用 Spring 框架能帶來哪些好處?
- 什么是控制反轉(IOC)?什么是依賴注入?
- 請解釋下 Spring 框架中的 IoC?
- BeanFactory 和 ApplicationContext 有什么區別?
- Spring 有幾種配置方式?
- 如何用基于 XML 配置的方式配置 Spring?
- 如何用基于 Java 配置的方式配置 Spring?
- 怎樣用注解的方式配置 Spring?
- 請解釋 Spring Bean 的生命周期?
- Spring Bean 的作用域之間有什么區別?
- 什么是 Spring inner beans?
- Spring 框架中的單例 Beans 是執行緒安全的么?
- 請舉例說明如何在 Spring 中注入一個 Java Collection?
- 如何向 Spring Bean 中注入一個 Java.util.Properties?
- 請解釋 Spring Bean 的自動裝配?
- 請解釋自動裝配模式的區別?
- 如何開啟基于注解的自動裝配?
- 請舉例解釋@Required 注解?
- 請舉例解釋@Autowired 注解?
- 請舉例說明@Qualifier 注解?
- 構造方法注入和設定注入有什么區別?
- Spring 框架中有哪些不同型別的事件?
- FileSystemResource 和 ClassPathResource 有何區別?
- Spring 框架中都用到了哪些設計模式?

四、Spring Cloud、Spring Boot、SpringMVC面試專題
1)Spring Cloud面試專題
- 什么是 Spring Cloud?
- 使用 Spring Cloud 有什么優勢?
- 服務注冊和發現是什么意思?Spring Cloud 如何實作?
- 負載平衡的意義什么?
- 什么是 Hystrix?它如何實作容錯?
- 什么是 Hystrix 斷路器?我們需要它嗎?
- 什么是 Netflix Feign?它的優點是什么?
- 什么是 Spring Cloud Bus?我們需要它嗎?
2)Spring Boot面試專題
- 什么是 Spring Boot?
- Spring Boot 有哪些優點?
- 什么是 JavaConfig?
- 如何重新加載 Spring Boot 上的更改,而無需重新啟動服務器?
- Spring Boot 中的監視器是什么?
- 如何在 Spring Boot 中禁用 Actuator 端點安全性?
- 如何在自定義埠上運行 Spring Boot 應用程式?
- 什么是 YAML?
- 如何實作 Spring Boot 應用程式的安全性?
- 如何集成 Spring Boot 和 ActiveMQ?
- 如何使用 Spring Boot 實作分頁和排序?
- 什么是 Swagger?你用 Spring Boot 實作了它嗎?
- 什么是 Spring Profiles?
- 什么是 Spring Batch?
- 什么是 FreeMarker 模板?
- 如何使用 Spring Boot 實作例外處理?
- 您使用了哪些 starter maven 依賴項?
- 什么是 CSRF 攻擊?
- 什么是 WebSockets?
- 什么是 AOP?
- 什么是 Apache Kafka?
- 我們如何監視所有 Spring Boot 微服務?

3)Spring MVC面試專題
- 什么是 SpringMvc?
- Spring MVC 的優點:
- SpringMVC 作業原理?
- SpringMVC 流程?
- SpringMvc 的控制器是不是單例模式,如果是,有什么問題,怎么解決?
- 如果你也用過 struts2.簡單介紹下 springMVC 和 struts2 的區別有哪些?
- SpingMvc 中的控制器的注解一般用哪個,有沒有別的注解可以替代?
- @RequestMapping 注解用在類上面有什么作用?
- 怎么樣把某個請求映射到特定的方法上面?
- 如果在攔截請求中,我想攔截 get 方式提交的方法,怎么配置?
- 怎么樣在方法里面得到 Request,或者 Session?
- 我想在攔截的方法里面得到從前臺傳入的引數,怎么得到?
- 如果前臺有很多個引數傳入,并且這些引數都是一個物件的,那么怎么樣快速得到這個物件?
- SpringMvc 中函式的回傳值是什么?
- SpringMVC 怎么樣設定重定向和轉發的?
- SpringMvc 用什么物件從后臺向前臺傳遞資料的?
- SpringMvc 中有個類把視圖和資料都合并的一起的,叫什么?
- 怎么樣把 ModelMap 里面的資料放入 Session 里面?
- SpringMvc 怎么和 AJAX 相互呼叫的?
- 當一個方法向 AJAX 回傳特殊物件,比如 Object,List 等,需要做什么處理?
- SpringMvc 里面攔截器是怎么寫的
- 講下 SpringMvc 的執行流程

五、Redis面試專題50問
- 什么是 Redis?
- Redis 相比 memcached 有哪些優勢?
- Redis 支持哪幾種資料型別?
- Redis 主要消耗什么物理資源?
- Redis 的全稱是什么?
- Redis 有哪幾種資料淘汰策略?
- Redis 官方為什么不提供 Windows 版本?
- 一個字串型別的 值 能 存盤最大容量是多少?
- 為什么 Redis 需要把所有資料放到記憶體中?
- Redis 集群方案應該怎么做?都有哪些方案?
- Redis 集群方案什么情況下會導致整個集群不可用?
- MySQL 里有 2000w 資料,Redis 中只存 20w 的資料,如何保證 Redis 中的資料都是熱點資料?
- Redis 有哪些適合的場景?
- Redis 支持的 Java 客戶端都有哪些?官方推薦用哪個?
- Redis 和 Redisson 有什么關系?
- Jedis 與 Redisson 對比有什么優缺點?
- Redis 如何設定密碼及驗證密碼?
- 說說 Redis 哈希槽的概念?
- Redis 集群的主從復制模型是怎樣的?
- Redis 集群會 有 寫 操作丟失嗎?為什么?
- Redis 集群之間是如何復制的?
- Redis 集群最大節點個數是多少?
- Redis 集群如何選擇資料庫?
- 怎么測驗 Redis 的連通性?
- Redis 中的管道有什么用?
- 怎么理解 Redis 事務?
- Redis 事務相關的命令有哪幾個?
- Redis key 的過期時間和永久有效分別怎么設定?
- Redis 如何做記憶體優化?
- Redis 回收行程如何作業的?
- Redis 回收使用的是什么演算法?
- Redis 如何做大量資料插入?
- 為什么要做 Redis 磁區?
- 你知道有哪些 Redis 磁區實作方案?
- Redis 磁區有什么缺點?
- Redis 持久化資料和快取怎么做擴容?
- 分布式 Redis 是前期做還是后期規模上來了再做好?為什么?
- Twemproxy 是什么?
- 支持一致性哈希的客戶端有哪些?
- Redis 與其他 key-value 存盤有什么不同?
- Redis 的記憶體占用情況怎么樣?
- 都有哪些辦法可以降低 Redis 的記憶體使用情況呢?
- 查看 Redis 使用情況及狀態資訊用什么命令?
- Redis 的記憶體用完了會發生什么?
- Redis 是單執行緒的,如何提高多核 CPU 的利用率?
- 一個 Redis 實體最多能存放多少的 keys?List、Set、Sorted Set他們最多能存放多少元素?
- Redis 常見性能問題和解決方案?
- Redis 提供了哪幾種持久化方式?
- 如何選擇合適的持久化方式?
- 修改配置不重啟 Redis 會實時生效嗎?

六、RabbitMQ 面試專題
- RabbitMQ 中的 broker 是指什么?cluster 又是指什么?
- 什么是元資料?元資料分為哪些型別?包括哪些內容?與 cluster 相關的元資料有哪些?元資料是如何保存的?元資料在 cluster 中是如何分布的?
- RAM node 和 disk node 的區別?
- RabbitMQ 上的一個 queue 中存放的 message 是否有數量限制?
- RabbitMQ 概念里的 channel、exchange 和 queue 這些東東是邏輯概念,還是對應著行程物體?這些東東分別起什么作用?
- vhost 是什么?起什么作用?
- 在單 node 系統和多 node 構成的 cluster 系統中宣告 queue、exchange ,以及進行 binding 會有什么不同?
- 客戶端連接到 cluster 中的任意 node 上是否都能正常作業?
- 若 cluster 中擁有某個 queue 的 owner node 失效了,且該 queue 被宣告具有durable 屬性,是否能夠成功從其他 node 上重新宣告該 queue ?
- cluster 中 node 的失效會對 consumer 產生什么影響?若是在 cluster 中創建了mirrored queue ,這時 node 失效會對 consumer 產生什么影響?
- 能夠在地理上分開的不同資料中心使用 RabbitMQ cluster 么?
- 為什么 heavy RPC 的使用場景下不建議采用 disk node ?
- 向不存在的 exchange 發 publish 訊息會發生什么?向不存在的 queue 執行consume 動作會發生什么?
- routing_key 和 binding_key 的最大長度是多少?
- RabbitMQ 允許發送的 message 最大可達多大?
- 什么情況下 producer 不主動創建 queue 是安全的?
- “dead letter”queue 的用途?
- 為什么說保證 message 被可靠持久化的條件是 queue 和 exchange 具有durable 屬性,同時 message 具有 persistent 屬性才行?
- 什么情況下會出現 blackholed 問題?
- 如何防止出現 blackholed 問題?
- Consumer Cancellation Notification 機制用于什么場景?
- Basic.Reject 的用法是什么?
- 為什么不應該對所有的 message 都使用持久化機制?
- RabbitMQ 中的 cluster、mirrored queue,以及 warrens 機制分別用于解決什么問題?存在哪些問題?

七、Nginx、Netty面試專題
1)Nginx 面試專題
- 解釋一下什么是 Nginx?
- 請列舉 Nginx 的一些特性,
- 請列舉 Nginx 和 Apache 之間的不同點
- 請解釋 Nginx 如何處理 HTTP 請求,
- 在 Nginx 中,如何使用未定義的服務器名稱來阻止處理請求?
- 使用“反向代理服務器”的優點是什么?
- 請列舉 Nginx 服務器的最佳用途,
- 請解釋 Nginx 服務器上的 Master 和 Worker 行程分別是什么?
- 請解釋你如何通過不同于 80 的埠開啟 Nginx?
- 解釋是否有可能將 Nginx 的錯誤替換為 502 錯誤、503?
- 在 Nginx 中,解釋如何在 URL 中保留雙斜線?
- 請解釋 ngx_http_upstream_module 的作用是什么?
- 請解釋什么是 C10K 問題?
- 請陳述 stub_status 和 sub_filter 指令的作用是什么?
- 解釋 Nginx 是否支持將請求壓縮到上游?
- 解釋如何在 Nginx 中 獲得當前的時間?
- 用 Nginx 服務器解釋-s 的目的是什么?
- 解釋如何在 Nginx 服務器上添加模塊?

2)Netty 面試專題
- BIO、NIO 和 AIO 的區別?
- NIO 的組成?
- Netty 的特點?
- Netty 的執行緒模型?
- TCP 粘包/拆包的原因及解決方法?
- 了解哪幾種序列化協議?
- 如何選擇序列化協議?
- Netty 的零拷貝實作?
- Netty 的高性能表現在哪些方面?
- NIOEventLoopGroup 原始碼?
八、資料結構面試專題
- ConcurrentHashMap 為何讀不加鎖,
- HashMap 如何同步,
- 說說常見的集合有哪些吧,
- HashMap 與 HashTable 的區別,
- HashMap 的 put 方法的具體流程,
- HashMap 的擴容操作是怎么實作的,
- HashMap 是怎么解決哈希沖突的,
- HashMap 為什么不直接使用 hashCode()處理后的哈希值之直接作為 table的下標,
- 為什么 HashMap 中 String、Integer 這樣的包裝類適合作為 Key,
- ConcurrentHashMap 和 HashMap 的區別,
- Java 集合的快速失敗機制“fail-fast”,以及安全失敗“fail-safe”,
- ArrayList 和 CopyOnWriteArrayList 的區別,
- ArrayList 和 LinkedList 的區別,
- HashSet 是如何保證資料不可重復的,
- BlockingQueue 是什么,
- HashMap 為什么選用紅黑樹,
- Iterator 中是否存在 Add 方法,

由于資料內容太多,平臺篇幅限制,小編就展現了以上部分面試專題與資料,如需獲取以下全部面試資料
如需獲取以下全部面試資料,可以【點擊這里】獲取,也可以關注我私信回復【面試】獲取, 包含上述所有面試答案等檔案資料,

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/262537.html
標籤:其他
