[經驗]老梁 Java 面試通關要點匯總集
https://mp.weixin.qq.com/s?__biz=MzUzMTA2NTU2Ng==&mid=2247484960&idx=1&sn=3d00e1c148c5dfc93de427bf5862f785&chksm=fa497991cd3ef08758226e7d383eb528472e8fb58117b2e200c6590fede987316f8f8cf9f8a8&mpshare=1&scene=1&srcid=0826zCOGJhF4ZezviVRzgK5D&key=b94327610a9419ab78089c58ff7343e673ad2c3db8fc17bf2c26e1e089e46be973bfb4e27027ea21072e7078385352fe8753ebfe4bf465f27d3df4b6ed3c5d634b840eb4f58539381f7e0a2e09a986d1&ascene=0&uin=MTA2NzUxMDAyNQ%3D%3D&devicetype=iMac+MacBookAir6%2C2+OSX+OSX+10.10.5+build(14F2511)&version=11020012&lang=zh_CN&pass_ticket=SyK6RSjv2ZXBk%2BzlZXCaDzTPeza0YtZTtP36PKbb6gWQXtOn5nMUkSGLTPiTAPYx
摘要: 原創出處 https://blog.720ui.com/2018/java_interview_final/ 「老梁」歡迎轉載,保留摘要,謝謝!
-
基礎篇
-
基本功
-
集合
-
線程
-
鎖機制
-
核心篇
-
數據存儲
-
緩存使用
-
消息隊列
-
框架篇
-
Spring
-
Netty
-
微服務篇
-
微服務
-
分布式
-
安全&性能
-
安全問題
-
性能優化
-
工程篇
-
需求分析
-
設計能力
-
設計模式
-
業務工程
-
軟實力
-
HR 篇
首先,聲明下,以下知識點並非阿裏的面試題。這裏,筆者結合自己過往的面試經驗,整理了一些核心的知識清單,幫助讀者更好地回顧與復習 Java 服務端核心技術。本文會以引出問題為主,後面有時間的話,筆者陸續會抽些重要的知識點進行詳細的剖析與解答。
基礎篇
基本功
-
面向對象的特征
-
final, finally, finalize 的區別
-
int 和 Integer 有什麽區別
-
重載和重寫的區別
-
抽象類和接口有什麽區別
-
說說反射的用途及實現
-
說說自定義註解的場景及實現
-
HTTP 請求的 GET 與 POST 方式的區別
-
session 與 cookie 區別
-
session 分布式處理
-
JDBC 流程
-
MVC 設計思想
-
equals 與 == 的區別
集合
-
List 和 Set 區別
-
List 和 Map 區別
-
Arraylist 與 LinkedList 區別
-
ArrayList 與 Vector 區別
-
HashMap 和 Hashtable 的區別
-
HashSet 和 HashMap 區別
-
HashMap 和 ConcurrentHashMap 的區別
-
HashMap 的工作原理及代碼實現
-
ConcurrentHashMap 的工作原理及代碼實現
線程
-
創建線程的方式及實現
-
sleep() 、join()、yield()有什麽區別
-
說說 CountDownLatch 原理
-
說說 CyclicBarrier 原理
-
說說 Semaphore 原理
-
說說 Exchanger 原理
-
說說 CountDownLatch 與 CyclicBarrier 區別
-
ThreadLocal 原理分析
-
講講線程池的實現原理
-
線程池的幾種方式
-
線程的生命周期
鎖機制
-
說說線程安全問題
-
volatile 實現原理
-
synchronize 實現原理
-
synchronized 與 lock 的區別
-
CAS 樂觀鎖
-
ABA 問題
-
樂觀鎖的業務場景及實現方式
核心篇
數據存儲
-
MySQL 索引使用的註意事項
-
說說反模式設計
-
說說分庫與分表設計
-
分庫與分表帶來的分布式困境與應對之策
-
說說 SQL 優化之道
-
MySQL 遇到的死鎖問題
-
存儲引擎的 InnoDB 與 MyISAM
-
數據庫索引的原理
-
為什麽要用 B-tree
-
聚集索引與非聚集索引的區別
-
limit 20000 加載很慢怎麽解決
-
選擇合適的分布式主鍵方案
-
選擇合適的數據存儲方案
-
ObjectId 規則
-
聊聊 MongoDB 使用場景
-
倒排索引
-
聊聊 ElasticSearch 使用場景
緩存使用
-
Redis 有哪些類型
-
Redis 內部結構
-
聊聊 Redis 使用場景
-
Redis 持久化機制
-
Redis 如何實現持久化
-
Redis 集群方案與實現
-
Redis 為什麽是單線程的
-
緩存奔潰
-
緩存降級
-
使用緩存的合理性問題
消息隊列
-
消息隊列的使用場景
-
消息的重發補償解決思路
-
消息的冪等性解決思路
-
消息的堆積解決思路
-
自己如何實現消息隊列
-
如何保證消息的有序性
框架篇
Spring
-
BeanFactory 和 ApplicationContext 有什麽區別
-
Spring Bean 的生命周期
-
Spring IOC 如何實現
-
說說 Spring AOP
-
Spring AOP 實現原理
-
動態代理(cglib 與 JDK)
-
Spring 事務實現方式
-
Spring 事務底層原理
-
如何自定義註解實現功能
-
Spring MVC 運行流程
-
Spring MVC 啟動流程
-
Spring 的單例實現原理
-
Spring 框架中用到了哪些設計模式
-
Spring 其他產品(Srping Boot、Spring Cloud、Spring Secuirity、Spring Data、Spring AMQP 等)
Netty
-
為什麽選擇 Netty
-
說說業務中,Netty 的使用場景
-
原生的 NIO 在 JDK 1.7 版本存在 epoll bug
-
什麽是TCP 粘包/拆包
-
TCP粘包/拆包的解決辦法
-
Netty 線程模型
-
說說 Netty 的零拷貝
-
Netty 內部執行流程
-
Netty 重連實現
微服務篇
微服務
-
前後端分離是如何做的
-
微服務哪些框架
-
你怎麽理解 RPC 框架
-
說說 RPC 的實現原理
-
說說 Dubbo 的實現原理
-
你怎麽理解 RESTful
-
說說如何設計一個良好的 API
-
如何理解 RESTful API 的冪等性
-
如何保證接口的冪等性
-
說說 CAP 定理、 BASE 理論
-
怎麽考慮數據一致性問題
-
說說最終一致性的實現方案
-
你怎麽看待微服務
-
微服務與 SOA 的區別
-
如何拆分服務
-
微服務如何進行數據庫管理
-
如何應對微服務的鏈式調用異常
-
對於快速追蹤與定位問題
-
微服務的安全
分布式
-
談談業務中使用分布式的場景
-
Session 分布式方案
-
分布式鎖的場景
-
分布是鎖的實現方案
-
分布式事務
-
集群與負載均衡的算法與實現
-
說說分庫與分表設計
-
分庫與分表帶來的分布式困境與應對之策
安全&性能
安全問題
-
安全要素與 STRIDE 威脅
-
防範常見的 Web 攻擊
-
服務端通信安全攻防
-
HTTPS 原理剖析
-
HTTPS 降級攻擊
-
授權與認證
-
基於角色的訪問控制
-
基於數據的訪問控制
性能優化
-
性能指標有哪些
-
如何發現性能瓶頸
-
性能調優的常見手段
-
說說你在項目中如何進行性能調優
工程篇
需求分析
-
你如何對需求原型進行理解和拆分
-
說說你對功能性需求的理解
-
說說你對非功能性需求的理解
-
你針對產品提出哪些交互和改進意見
-
你如何理解用戶痛點
設計能力
-
說說你在項目中使用過的 UML 圖
-
你如何考慮組件化
-
你如何考慮服務化
-
你如何進行領域建模
-
你如何劃分領域邊界
-
說說你項目中的領域建模
-
說說概要設計
設計模式
-
你項目中有使用哪些設計模式
-
說說常用開源框架中設計模式使用分析
-
說說你對設計原則的理解
-
23種設計模式的設計理念
-
設計模式之間的異同,例如策略模式與狀態模式的區別
-
設計模式之間的結合,例如策略模式+簡單工廠模式的實踐
-
設計模式的性能,例如單例模式哪種性能更好。
業務工程
-
你系統中的前後端分離是如何做的
-
說說你的開發流程
-
你和團隊是如何溝通的
-
你如何進行代碼評審
-
說說你對技術與業務的理解
-
說說你在項目中經常遇到的 Exception
-
說說你在項目中遇到感覺最難Bug,怎麽解決的
-
說說你在項目中遇到印象最深困難,怎麽解決的
-
你覺得你們項目還有哪些不足的地方
-
你是否遇到過 CPU 100% ,如何排查與解決
-
你是否遇到過 內存 OOM ,如何排查與解決
-
說說你對敏捷開發的實踐
-
說說你對開發運維的實踐
-
介紹下工作中的一個對自己最有價值的項目,以及在這個過程中的角色
軟實力
-
說說你的亮點
-
說說你最近在看什麽書
-
說說你覺得最有意義的技術書籍
-
工作之余做什麽事情
-
說說個人發展方向方面的思考
-
說說你認為的服務端開發工程師應該具備哪些能力
-
說說你認為的架構師是什麽樣的,架構師主要做什麽
-
說說你所理解的技術專家
HR 篇
-
你為什麽離開之前的公司
-
你為什麽要進我們公司
-
說說職業規劃
-
你如何看待加班問題
-
談一談你的一次失敗經歷
-
你覺得你最大的優點是什麽
-
你覺得你最大的缺點是什麽
-
你在工作之余做什麽事情
-
你為什麽認為你適合這個職位
-
你覺得自己那方面能力最急需提高
-
你來我們公司最希望得到什麽
-
你希望從這份工作中獲得什麽
-
你對現在應聘的職位有什麽了解
-
您還有什麽想問的
-
你怎麽看待自己的職涯
-
談談你的家庭情況
-
你有什麽業余愛好
-
你計劃在公司工作多久
[經驗]老梁 Java 面試通關要點匯總集