1. 程式人生 > >[經驗]老梁 Java 面試通關要點匯總集

[經驗]老梁 Java 面試通關要點匯總集

用戶 finalize 解決 hashset 開發 註意事項 xca 功能 內部

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 面試通關要點匯總集