1. 程式人生 > >Java 面試大彙總

Java 面試大彙總

    基礎篇
           
        基本功
        
          1. 面向物件的特徵
           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 篇
           
           你為什麼離開之前的公司
           你為什麼要進我們公司
           說說職業規劃
           你如何看待加班問題
           談一談你的一次失敗經歷
           你覺得你最大的優點是什麼
           你覺得你最大的缺點是什麼
           你在工作之餘做什麼事情
           你為什麼認為你適合這個職位
           你覺得自己那方面能力最急需提高
           你來我們公司最希望得到什麼
           你希望從這份工作中獲得什麼
           你對現在應聘的職位有什麼瞭解
           您還有什麼想問的
           你怎麼看待自己的職涯
           談談你的家庭情況
           你有什麼業餘愛好
           你計劃在公司工作多久