首頁>職場>

前言

跳槽時時刻刻都在發生,沒必要侷限在金三銀四,金九銀十。但金銀月的確讓我學到很多。

今天給大家分享下我剛過不久的金三銀四跳槽中整理的Java面試大綱,其中大部分都是面試過程中的面試題,可以對照這查漏補缺,當然了,這裡所列的肯定不可能覆蓋全部方式。

面試整體事項

一般的整體面試流程都是電面->現場面->HR面->等著。

面試前準備好自我介紹,1分鐘左右就可以,可以寫在紙上,電面可以照著念,等你到了現場面了基本也都快背下來你的自我介紹了。

專案介紹

大部分情況,這是一場面試的開門題,面試官問這個問題,主要是考察你的概述能力和全域性視野。有的人經常抱怨自己每天在堆業務,但沒有成長。事實上,很多情況下確實在堆業務,但並不是沒有成長的。並非做中介軟體或者技術架構才是成長,例如我們的需求分析能力,溝通協作能力,產品思維能力,抽象建模能力等都是一個非常重要的硬實力。

需要準備的知識

以下為在近期面試中比較有印象的問題,也就不分公司了,因為沒什麼意義,大致分類記錄一下,目前只想起這麼多,不過一定要知道這些問題只是冰山一角,就算都會了也不能怎麼樣,最最重要的,還是堅實的基礎,清醒的頭腦。

Java基礎

1、List 和 Set 的區別

2、HashSet 是如何保證不重複的

3、HashMap 是執行緒安全的嗎,為什麼不是執行緒安全的(最好畫圖說明多執行緒環境下不安全)?

4、HashMap 的擴容過程

5、HashMap 1.7 與 1.8 的 區別,說明 1.8 做了哪些最佳化,如何最佳化的?

6、final finally finalize

7、強引用 、軟引用、 弱引用、虛引用

8、Java反射

9、Arrays.sort 實現原理和 Collection 實現原理

10、LinkedHashMap的應用

11、cloneable介面實現原理

12、異常分類以及處理機制

13、wait和sleep的區別

14、陣列在記憶體中如何分配

Java 併發

1、synchronized 的實現原理以及鎖最佳化?

2、volatile 的實現原理?

3、Java 的訊號燈?

4、synchronized 在靜態方法和普通方法的區別?

5、怎麼實現所有執行緒在等待某個事件的發生才會去執行?

6、CAS?CAS 有什麼缺陷,如何解決?

7、synchronized 和 lock 有什麼區別?

8、Hashtable 是怎麼加鎖的 ?

9、HashMap 的併發問題?

10、ConcurrenHashMap 介紹?1.8 中為什麼要用紅黑樹?

11、AQS

12、如何檢測死鎖?怎麼預防死鎖?

13、Java 記憶體模型?

14、如何保證多執行緒下 i++ 結果正確?

15、執行緒池的種類,區別和使用場景?

16、分析執行緒池的實現原理和執行緒的排程過程?

17、執行緒池如何調優,最大數目如何確認?

18、ThreadLocal原理,用的時候需要注意什麼?

19、CountDownLatch 和 CyclicBarrier 的用法,以及相互之間的差別?

20、LockSupport工具

JVMJVM的記憶體結構。JVM方法棧的工作過程,方法棧和本地方法棧有什麼區別。JVM的棧中引用如何和堆中的物件產生關聯。可以瞭解一下逃逸分析技術。GC的常見演算法,CMS以及G1的垃圾回收過程,CMS的各個階段哪兩個是Stop the world的,CMS會不會產生碎片,G1的優勢。標記清除和標記整理演算法的理解以及優缺點。eden survivor區的比例,為什麼是這個比例,eden survivor的工作過程。JVM如何判斷一個物件是否該被GC,可以視為root的都有哪幾種類型。強軟弱虛引用的區別以及GC對他們執行怎樣的操作。Java是否可以GC直接記憶體。Java類載入的過程。雙親委派模型的過程以及優勢。常用的JVM調優引數。dump檔案的分析。Java有沒有主動觸發GC的方式(沒有)。Spring

1、BeanFactory 和 FactoryBean?

2、Spring IOC 的理解,其初始化過程?

3、BeanFactory 和 ApplicationContext?

4、Spring Bean 的生命週期,如何被管理的?

5、Spring Bean 的載入過程是怎樣的?

6、如果要你實現Spring AOP,請問怎麼實現?

7、如果要你實現Spring IOC,你會注意哪些問題?

8、Spring 是如何管理事務的,事務管理機制?

9、Spring 的不同事務傳播行為有哪些,幹什麼用的?

10、Spring 中用到了那些設計模式?

11、Spring MVC 的工作原理?

12、Spring 迴圈注入的原理?

13、Spring AOP的理解,各個術語,他們是怎麼相互工作的?

14、Spring 如何保證 Controller 併發的安全?

多執行緒Java實現多執行緒有哪幾種方式。Callable和Future的瞭解。執行緒池的引數有哪些,線上程池建立一個執行緒的過程。volitile關鍵字的作用,原理。synchronized關鍵字的用法,優缺點。Lock介面有哪些實現類,使用場景是什麼。可重入鎖的用處及實現原理,寫時複製的過程,讀寫鎖,分段鎖(ConcurrentHashMap中的segment)。悲觀鎖,樂觀鎖,優缺點,CAS有什麼缺陷,該如何解決。ABC三個執行緒如何保證順序執行。執行緒的狀態都有哪些。sleep和wait的區別。notify和notifyall的區別。ThreadLocal的瞭解,實現原理。分散式高併發架構解析(訊息佇列,分庫分表,事務,高可用,微服務架構)Dubbo的底層實現原理和機制描述一個服務從釋出到被消費的詳細過程分散式系統怎麼做服務治理介面的冪等性的概念訊息中介軟體如何解決訊息丟失問題Dubbo的服務請求失敗怎麼處理重連機制會不會造成錯誤對分散式事務的理解如何實現負載均衡,有哪些演算法可以實現?Zookeeper的用途,選舉的原理是什麼?資料的垂直拆分水平拆分。zookeeper原理和適用場景zookeeper watch機制redis/zk節點宕機如何處理分散式叢集下如何做到唯一序列號如何做一個分散式鎖用過哪些MQ,怎麼用的,和其他mq比較有什麼優缺點,MQ的連線是執行緒安全的嗎MQ系統的資料如何保證不丟失列舉出你能想到的資料庫分庫分表策略;分庫分表後,如何解決全表查詢的問題zookeeper的選舉策略MySQL高頻20題解析事務四大特性(ACID)原子性、一致性、隔離性、永續性?事務的併發?事務隔離級別,每個級別會引發什麼問題,MySQL預設是哪個級別?MySQL常見的三種儲存引擎(InnoDB、MyISAM、MEMORY)的區別?MySQL的MyISAM與InnoDB兩種儲存引擎在,事務、鎖級別,各自的適用場景?查詢語句不同元素(where、jion、limit、group by、having等等)執行先後順序?什麼是臨時表,臨時表什麼時候刪除?MySQL B+Tree索引和Hash索引的區別?sql查詢語句確定建立哪種型別的索引?如何最佳化查詢?聚集索引和非聚集索引區別?有哪些鎖(樂觀鎖悲觀鎖),select 時怎麼加排它鎖?非關係型資料庫和關係型資料庫區別,優勢比較?資料庫三正規化,根據某個場景設計資料表?資料庫的讀寫分離、主從複製,主從複製分析的 7 個問題?使用explain最佳化sql和索引?MySQL慢查詢怎麼解決?什麼是 內連線、外連線、交叉連線、笛卡爾積等?mysql都有什麼鎖,死鎖判定原理和具體場景,死鎖怎麼解決?varchar和char的使用場景?mysql 高併發環境解決方案?資料庫崩潰時事務的恢復機制(REDO日誌和UNDO日誌)?併發程式設計 28 題及答案解析

併發寶典:面試專題

面試專題分為四個部分,分別如下

Synchronized 相關問題可重入鎖 ReentrantLock 及其他顯式鎖相關問題Java 執行緒池相關問題Java 記憶體模型相關問題

總結

無論是哪家公司,都很重視高併發高可用的技術,重視基礎,重視JVM。面試是一個雙向選擇的過程,不要抱著畏懼的心態去面試,不利於自己的發揮。同時看中的應該不止薪資,還要看你是不是真的喜歡這家公司,是不是能真的得到鍛鍊。其實我寫了這麼多,只是我自己的總結,並不一定適用於所有人,相信經過一些面試,大家都會有這些感觸。如果這些文字能夠幫到你,那就最好了,幫不到就當是我自己的一個記錄。最後,希望大家都能找到適合自己的公司,開開心心的擼程式碼。

後結

當然,由於篇幅原因依然有沒列出的Java面試問題,包括答案也沒有給出。不過沒關係,這些都被我整理在各個專題文件中,甚至面試如何準備,簡歷如何書寫的一些細節流程,我也整理出了一份完整的124頁PDF中。整理不易。

6
  • 工作沒回報,還要繼續嗎?
  • 在專業環境中進行即時通訊和群聊禮節