1. 程式人生 > >【面試題】2018年最全Java面試通關祕籍彙總集!

【面試題】2018年最全Java面試通關祕籍彙總集!

640?wxfrom=5&wx_lazy=1

前幾天在交流群裡有些小夥伴問面試相關的試題,當時給出了一些問題,苦於打字太累就沒寫下去了,但覺得這是一個很不負責任的表現,於是下來整理了一下近幾年的私藏,特分享給大家!

此套面試題適用於Java開發的各個階段面試,不過更偏向初級和中級開發人員!由於每一個問題的答案不唯一且都可以在網上搜索到答案,這裡只給出問題,不列出參考答案,有興趣的可以留言討論,也歡迎大家的補充!

一、基礎篇

1.1、Java基礎 

  • 面向物件的特徵:繼承、封裝和多型

  • final, finally, finalize 的區別

  • Exception、Error、執行時異常與一般異常有何異同

  • 請寫出5種常見到的runtime exception

  • int 和 Integer 有什麼區別,Integer的值快取範圍

  • 包裝類,裝箱和拆箱

  • String、StringBuilder、StringBuffer

  • 過載和重寫的區別

  • 抽象類和介面有什麼區別

  • 說說反射的用途及實現

  • 說說自定義註解的場景及實現

  • HTTP請求的GET與POST方式的區別

  • Session與Cookie區別

  • 列出自己常用的JDK包

  • MVC設計思想

  • equals與==的區別

  • hashCode和equals方法的區別與聯絡

  • 什麼是Java序列化和反序列化,如何實現Java序列化?或者請解釋Serializable 介面的作用

  • Object類中常見的方法,為什麼wait  notify會放在Object裡邊?

  • Java的平臺無關性如何體現出來的

  • JDK和JRE的區別

  • Java 8有哪些新特性

1.2、Java常見集合

  • List 和 Set 區別

  • Set和hashCode以及equals方法的聯絡

  • List 和 Map 區別

  • Arraylist 與 LinkedList 區別

  • ArrayList 與 Vector 區別

  • HashMap 和 Hashtable 的區別

  • HashSet 和 HashMap 區別

  • HashMap 和 ConcurrentHashMap 的區別

  • HashMap 的工作原理及程式碼實現,什麼時候用到紅黑樹

  • 多執行緒情況下HashMap死迴圈的問題

  • HashMap出現Hash DOS攻擊的問題

  • ConcurrentHashMap 的工作原理及程式碼實現,如何統計所有的元素個數

  • 手寫簡單的HashMap

  • 看過那些Java集合類的原始碼

1.3、程序和執行緒

  • 執行緒和程序的概念、並行和併發的概念

  • 建立執行緒的方式及實現

  • 程序間通訊的方式

  • 說說 CountDownLatch、CyclicBarrier 原理和區別

  • 說說 Semaphore 原理

  • 說說 Exchanger 原理

  • ThreadLocal 原理分析,ThreadLocal為什麼會出現OOM,出現的深層次原理

  • 講講執行緒池的實現原理

  • 執行緒池的幾種實現方式

  • 執行緒的生命週期,狀態是如何轉移的

1.4、鎖機制

  • 說說執行緒安全問題,什麼是執行緒安全,如何保證執行緒安全

  • 重入鎖的概念,重入鎖為什麼可以防止死鎖

  • 產生死鎖的四個條件(互斥、請求與保持、不剝奪、迴圈等待)

  • 如何檢查死鎖(通過jConsole檢查死鎖)

  • volatile 實現原理(禁止指令重排、重新整理記憶體)

  • synchronized 實現原理(物件監視器)

  • synchronized 與 lock 的區別

  • AQS同步佇列

  • CAS無鎖的概念、樂觀鎖和悲觀鎖

  • 常見的原子操作類

  • 什麼是ABA問題,出現ABA問題JDK是如何解決的

  • 樂觀鎖的業務場景及實現方式

  • Java 8並法包下常見的併發類

  • 偏向鎖、輕量級鎖、重量級鎖、自旋鎖的概念

1.5、JVM

  • JVM執行時記憶體區域劃分

  • 記憶體溢位OOM和堆疊溢位SOE的示例及原因、如何排查與解決

  • 如何判斷物件是否可以回收或存活

  • 常見的GC回收演算法及其含義

  • 常見的JVM效能監控和故障處理工具類:jps、jstat、jmap、jinfo、jconsole等

  • JVM如何設定引數

  • JVM效能調優

  • 類載入器、雙親委派模型、一個類的生命週期、類是如何載入到JVM中的

  • 類載入的過程:載入、驗證、準備、解析、初始化

  • 強引用、軟引用、弱引用、虛引用

  • Java記憶體模型JMM

1.6、設計模式

  • 常見的設計模式

  • 設計模式的的六大原則及其含義

  • 常見的單例模式以及各種實現方式的優缺點,哪一種最好,手寫常見的單利模式

  • 設計模式在實際場景中的應用

  • Spring中用到了哪些設計模式

  • MyBatis中用到了哪些設計模式

  • 你專案中有使用哪些設計模式

  • 說說常用開源框架中設計模式使用分析

  • 動態代理很重要!!!

1.7、資料結構

  • 樹(二叉查詢樹、平衡二叉樹、紅黑樹、B樹、B+樹)

  • 深度有限演算法、廣度優先演算法

  • 克魯斯卡爾演算法、普林母演算法、迪克拉斯演算法

  • 什麼是一致性Hash及其原理、Hash環問題

  • 常見的排序演算法和查詢演算法:快排、折半查詢、堆排序等

1.8、網路/IO基礎

  • BIO、NIO、AIO的概念

  • 什麼是長連線和短連線

  • Http1.0和2.0相比有什麼區別,可參考《Http 2.0

  • Https的基本概念

  • 三次握手和四次揮手、為什麼揮手需要四次

  • 從遊覽器中輸入URL到頁面載入的發生了什麼?可參考《從輸入URL到頁面載入發生了什麼

二、資料儲存和訊息佇列

2.1、資料庫

  • MySQL 索引使用的注意事項

  • DDL、DML、DCL分別指什麼

  • explain命令

  • left join,right join,inner join

  • 資料庫事物ACID(原子性、一致性、隔離性、永續性)

  • 事物的隔離級別(讀未提交、讀以提交、可重複讀、可序列化讀)

  • 髒讀、幻讀、不可重複讀

  • 資料庫的幾大正規化

  • 資料庫常見的命令

  • 說說分庫與分表設計

  • 分庫與分錶帶來的分散式困境與應對之策(如何解決分散式下的分庫分表,全域性表?)

  • 說說 SQL 優化之道

  • MySQL遇到的死鎖問題、如何排查與解決

  • 儲存引擎的 InnoDB與MyISAM區別,優缺點,使用場景

  • 索引類別(B+樹索引、全文索引、雜湊索引)、索引的原理

  • 什麼是自適應雜湊索引(AHI)

  • 為什麼要用 B+tree作為MySQL索引的資料結構

  • 聚集索引與非聚集索引的區別

  • 遇到過索引失效的情況沒,什麼時候可能會出現,如何解決

  • limit 20000 載入很慢怎麼解決

  • 如何選擇合適的分散式主鍵方案

  • 選擇合適的資料儲存方案

  • 常見的幾種分散式ID的設計方案

  • 常見的資料庫優化方案,在你的專案中資料庫如何進行優化的

2.2、Redis

  • Redis 內部結構

  • Redis 使用場景

  • Redis 叢集方案與實現

  • Redis 為什麼是單執行緒的?

  • 快取雪崩、快取穿透、快取預熱、快取更新、快取降級

  • 使用快取的合理性問題

  • Redis常見的回收策略

2.3、訊息佇列

  • 訊息佇列的使用場景

  • 訊息的重發補償解決思路

  • 訊息的冪等性解決思路

  • 訊息的堆積解決思路

  • 自己如何實現訊息佇列

  • 如何保證訊息的有序性

三、開源框架和容器

3.1、SSM/Servlet

  • Servlet的生命週期

  • 轉發與重定向的區別

  • BeanFactory 和 ApplicationContext 有什麼區別

  • Spring Bean 的生命週期

  • Spring IOC 如何實現

  • Spring中Bean的作用域,預設的是哪一個

  • 說說 Spring AOP、Spring AOP 實現原理

  • 動態代理(CGLib 與 JDK)、優缺點、效能對比、如何選擇

  • Spring 事務實現方式、事務的傳播機制、預設的事務類別

  • Spring 事務底層原理

  • Spring事務失效(事務巢狀),JDK動態代理給Spring事務埋下的坑,可參考《JDK動態代理給Spring事務埋下的坑!

  • 如何自定義註解實現功能

  • Spring MVC 執行流程

  • Spring MVC 啟動流程

  • Spring 的單例實現原理

  • Spring 框架中用到了哪些設計模式

  • Spring 其他產品(Srping Boot、Spring Cloud、Spring Secuirity、Spring Data、Spring AMQP 等)

  • 有沒有用到Spring Boot,Spring Boot的認識、原理

  • MyBatis的原理

3.2、Netty

  • 為什麼選擇 Netty

  • 說說業務中,Netty 的使用場景

  • 原生的 NIO 在 JDK 1.7 版本存在 epoll bug

  • 什麼是TCP 粘包/拆包

  • TCP粘包/拆包的解決辦法

  • Netty 執行緒模型

  • 說說 Netty 的零拷貝

  • Netty 內部執行流程

  • Netty 重連實現

3.3、Tomcat

  • Tomcat的基礎架構(Server、Service、Connector、Container)

  • Tomcat如何載入Servlet的

  • Pipeline-Valve機制

四、分散式

4.1、Nginx

  • 請解釋什麼是C10K問題或者知道什麼是C10K問題嗎?

  • Nginx簡介,可參考《Nginx簡介

  • 正向代理和反向代理.

  • Nginx幾種常見的負載均衡策略

  • Nginx伺服器上的Master和Worker程序分別是什麼

  • 使用“反向代理伺服器”的優點是什麼?

4.2、分散式其他

  • 談談業務中使用分散式的場景

  • Session 分散式方案

  • Session 分散式處理

  • 分散式鎖的應用場景、分散式鎖的產生原因、基本概念

  • 分佈是鎖的常見解決方案

  • 分散式事務的常見解決方案

  • 叢集與負載均衡的演算法與實現

  • 分庫與分錶帶來的分散式困境與應對之策

4.3、Dubbo

  • 什麼是Dubbo,可參考《Dubbo入門

  • 什麼是RPC、如何實現RPC、RPC 的實現原理,可參考《基於HTTP的RPC實現

  • Dubbo中的SPI是什麼概念

  • Dubbo的基本原理、執行流程

五、微服務

5.1、微服務

  • 前後端分離是如何做的?

  • 微服務哪些框架

  • Spring Could的常見元件有哪些?可參考《Spring Cloud概述

  • 領域驅動有了解嗎?什麼是領域驅動模型?充血模型、貧血模型

  • JWT有了解嗎,什麼是JWT,可參考《前後端分離利器之JWT

  • 你怎麼理解 RESTful

  • 說說如何設計一個良好的 API

  • 如何理解 RESTful API 的冪等性

  • 如何保證介面的冪等性

  • 說說 CAP 定理、BASE 理論

  • 怎麼考慮資料一致性問題

  • 說說最終一致性的實現方案

  • 微服務的優缺點,可參考《微服務批判

  • 微服務與 SOA 的區別

  • 如何拆分服務、水平分割、垂直分割

  • 如何應對微服務的鏈式呼叫異常

  • 如何快速追蹤與定位問題

  • 如何保證微服務的安全、認證

5.2、安全問題

  • 如何防範常見的Web攻擊、如何方式SQL注入

  • 服務端通訊安全攻防

  • HTTPS原理剖析、降級攻擊、HTTP與HTTPS的對比

5.3、效能優化

  • 效能指標有哪些

  • 如何發現效能瓶頸

  • 效能調優的常見手段

  • 說說你在專案中如何進行效能調優

六、其他

6.1、設計能力

  • 說說你在專案中使用過的UML圖

  • 你如何考慮元件化、服務化、系統拆分

  • 秒殺場景如何設計

6.2、業務工程

  • 說說你的開發流程、如何進行自動化部署的

  • 你和團隊是如何溝通的

  • 你如何進行程式碼評審

  • 說說你對技術與業務的理解

  • 說說你在專案中遇到感覺最難Bug,是如何解決的

  • 介紹一下工作中的一個你認為最有價值的專案,以及在這個過程中的角色、解決的問題、你覺得你們專案還有哪些不足的地方

6.3、軟實力

  • 說說你的優缺點、亮點

  • 說說你最近在看什麼書、什麼部落格、在研究什麼新技術、再看那些開源專案的原始碼

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

  • 工作之餘做什麼事情、平時是如何學習的,怎樣提升自己的能力

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

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

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

  • 如何看待加班的問題

當然,一個完整的面試肯定不止上述的知識點,其他的諸如:Linux、資料結構、演算法、邏輯思維題、系統設計題、職業規劃等等都會有所涉及!總之,充分的準備是應對一切面試的不二法寶!

歡迎留言討論上述的問題!有哪些經常被問到的面試題也歡迎大家留言補充!

點選圖片檢視更多推薦內容

↓↓↓

640

大型網站架構之架構演變

640

大型網站架構之架構模式

640

秒殺系統的技術挑戰、應對策略以及架構設計總結一二!

640?