Java面試
基礎篇
面向對象的特徵
final、finally、finalize的區別
int和Integer的區別
重載和重寫的區別
抽象類和接口的區別
反射的用途及實現
jdbc流程
equals與==的區別,hashCode和equals的關係
ArrayList與LinkedList、Vector的區別
HashMap、Hashtable的區別
HashMap、ConcurrentHashMap的工作原理及代碼實現
數據結構:樹、排序算法、查找算法
ThreadLocal原理及內存泄漏
創建線程的方式及實現
sleep()/yield()/join()的區別
CountDownLatch/CyclicBarrier/Semaphore/Exchanger原理
線程池的實現原理及創建線程池的幾種方式
線程的生命週期及安全問題
volatile/synchronized實現原理
synchronized與lock的區別
CAS樂觀鎖,ABA問題
樂觀鎖的業務場景及實現方式
JVM內存模型
類加載機制
線上頻繁full gc怎麼辦?CPU使用率過高怎麼辦?
web及framework
Http get和post請求的區別,http1/http2/https的區別
session和cookie的區別
mvc設計思想
tcp三次握手、四次揮手過程
Spring
Spring事務傳播特性及隔離機制
BeanFactory 和 ApplicationContext的區別
Spring Bean的生命週期
Spring IOC、AOP原理
動態代理cglib與jdk
Spring事務實現方法及底層原理
SpringMVC運行流程、啓動流程
Spring單例的實現原理
如何自定義註解實現功能
Netty
爲什麼選擇Netty及業務中使用Netty的場景
原生的 NIO 在 JDK 1.7 版本存在 epoll bug
爲什麼會TCP拆包黏包及解決方法
原因
解決方法
Netty線程模型
Netty的零拷貝
Netty內部執行流程及重連實現
緩存(redis)
zookeeper
選主過程
1.每個Server發出一個投票
2.每個服務器接收來自各方的投票,檢查是否是本輪投票、是否來自LOOKING狀態的服務器
3.處理投票
4.統計投票
5.改變服務器狀態
集羣間如何進行通訊
數據同步型
服務器初始化型
請求處理型
會話管理型
節點加密方式
分佈式鎖的實現過程
排它鎖
共享鎖
羊羣效應
鎖改進
微服務篇
微服務
前後端分離是如何做的
如何理解RPC框架及其實現原理
Dubbo的實現原理
怎麼理解RESTful
如何設計一個良好的API
如何理解RESTful的冪等性
如何保證接口的冪等性
CAP定理、BASE理論
怎麼考慮數據一致性問題
說說最終一致性的解決方案
怎麼看待微服務、微服務與SOA的區別
如何拆分服務
微服務如何進行數據庫管理
如何應對微服務鏈式調用異常
對於快速追蹤與定位問題
微服務的安全
分佈式
談談業務中使用分佈式的場景
Session分佈式解決方案
分佈式鎖的場景及實現
分佈式事務
集羣與負載均衡的算法與實現
分佈式主鍵、數據存儲方案
分庫分表設計及帶來的分佈式困境與應對
安全問題
安全要素與 STRIDE 威脅
防範常見的 Web 攻擊
服務端通信安全攻防
Https原理剖析、降級攻擊
授權與認證
基於角色的訪問控制
基於數據的訪問控制
性能優化
性能指標有哪些
如何發現性能瓶頸
性能調優的常見手段
項目中如何進行調優的
數據庫(MySQL)
MySQL中Btree和B+tree算法
MySQL中in和exists應用場景
MySQL索引使用的注意事項
SQL反模式
SQL優化
MySQL遇到的死鎖問題
存儲引擎的 InnoDB 與 MyISAM
數據庫索引的原理
爲什麼要用 B-tree
聚集索引與非聚集索引的區別
limit 20000 加載很慢怎麼解決
ObjectId 規則
倒排索引
MongoDB/ElasticSearch使用場景
百度面試
消息隊列
消息隊列使用場景
消息的重發補償解決思路
消息的冪等性解決思路
消息的堆積解決思路
自己如何實現消息隊列
如何保證消息的有序性
工程篇
需求分析
你如何對需求原型進行理解和拆分
說說你對功能性需求的理解
說說你對非功能性需求的理解
你針對產品提出哪些交互和改進意見
你如何理解用戶痛點
設計能力
說說你在項目中使用過的 UML 圖
你如何考慮組件化
你如何考慮服務化
你如何進行領域建模
你如何劃分領域邊界
說說你項目中的領域建模
說說概要設計
設計模式
你項目中有使用哪些設計模式
說說常用開源框架中設計模式使用分析
說說你對設計原則的理解
23種設計模式的設計理念
設計模式之間的異同,例如策略模式與狀態模式的區別
設計模式之間的結合,例如策略模式+簡單工廠模式的實踐
設計模式的性能,例如單例模式哪種性能更好。
業務工程
你係統中的前後端分離是如何做的
說說你的開發流程
你和團隊是如何溝通的
你如何進行代碼評審
說說你對技術與業務的理解
說說你在項目中經常遇到的 Exception
說說你在項目中遇到感覺最難Bug,怎麼解決的
說說你在項目中遇到印象最深困難,怎麼解決的
你覺得你們項目還有哪些不足的地方
你是否遇到過 CPU 100% ,如何排查與解決
你是否遇到過 內存 OOM ,如何排查與解決
說說你對敏捷開發的實踐
說說你對開發運維的實踐
介紹下工作中的一個對自己最有價值的項目,以及在這個過程中的角色
軟實力
說說你的亮點
說說你最近在看什麼書
說說你覺得最有意義的技術書籍
工作之餘做什麼事情
說說個人發展方向方面的思考
說說你認爲的服務端開發工程師應該具備哪些能力
說說你認爲的架構師是什麼樣的,架構師主要做什麼
說說你所理解的技術專家