Java面試大綱 答案持續更新

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 ,如何排查與解決 

說說你對敏捷開發的實踐 

說說你對開發運維的實踐 

介紹下工作中的一個對自己最有價值的項目,以及在這個過程中的角色 

軟實力

說說你的亮點 

說說你最近在看什麼書 

說說你覺得最有意義的技術書籍 

工作之餘做什麼事情 

說說個人發展方向方面的思考 

說說你認爲的服務端開發工程師應該具備哪些能力 

說說你認爲的架構師是什麼樣的,架構師主要做什麼 

說說你所理解的技術專家 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章