BAT高級Java面試題:JVM+Redis+Spring+Mysql+數據庫+多線程+算法

BAT高級Java面試題:JVM+Redis+Spring+Mysql+數據庫+多線程+算法

最近喜報有點多,今天分享面經的這位小夥伴從事Java工作已經4年+。

這兩個月陸續參加了多家一線互聯網企業的高級Java面試,包括阿里、字節跳動(今日頭條)、京東、快手、科大訊飛等,幸運拿下了兩個offer,綜合考量了下,最終選取了其中1家公司入職。

涉及隱私,這裡就不透露具體入職哪家公司,以及每道面試題的具體出處啦,只是將我在過去兩個月中所遇到過的面試真題,分類打包一次分享給大家。

BAT高級Java面試題:JVM+Redis+Spring+Mysql+數據庫+多線程+算法

面試題目總結

Java 基礎部分

基本這些公司都會問到相關基礎,所以,一般來說基礎的準備是必要並且通用的,所以這部分真的很重要。

  1. 什麼是Java序列化,如何實現Java序列化?
  2. Java中的異常有哪幾類?分別怎麼使用?
  3. 常用的集合類有哪些?
  4. Java有自己的內存回收機制,但為什麼還存在內存洩露問題呢?
  5. NIO是什麼?適用於何種場景?
  6. 說說HashMap的實現原理,如何保證HashMap的線程安全?

計算機網絡

計算機網絡部分的題目還是挺容易的,考察的點不會那麼深入。

通常來說也就是這些問題:

  1. TCP 有哪些狀態?
  2. TCP的滑動窗口協議有什麼用?講講原理。
  3. 詳細描述TCP四次揮手過程?
  4. 三次握手、四次揮手,為啥不是兩次?
  5. RPC和http的區別?
  6. HTTP協議都有哪些方法?

Java虛擬機(JVM)

  1. JVM內存模型結構?
  2. 方法區和直接內存什麼時候會oom?
  3. JVM收集器G1的內存模型和CMS的內存模型有什麼不同?
  4. JVM調優用過嗎?
  5. 如何查看Java內存使用情況(jconsole、命令jmap、jstack等等)?

數據庫

  1. Join(inner、left、right)的區別?
  2. Union和union all區別?
  3. ACID,具體是啥意思?
  4. 事務隔離級別?
  5. 幻讀和不可重複讀的區別?
  6. Mysql和Mongodb有啥區別?
  7. ,Mysql存儲引擎中索引的實現機制;
  8. 數據庫事務的幾種粒度;
  9. 如何解決高併發減庫存問題?
  10. SQL什麼情況下不會使用索引?
  11. 行鎖、表鎖,樂觀鎖、悲觀鎖,區別分別是什麼?

Spring

  1. Bean的生命週期?
  2. 什麼是DI、為什麼DI、DI的類型(構造器注入、方法注入)?
  3. Spring如何解決循環依賴問題?
  4. Spring框架中IOC的原理是什麼?
  5. spring的依賴注入有哪幾種方式
  6. Spring 如何實現數據庫事務?
  7. Spring boot和spring的差別,tomcat如何嵌入spring boot的/spring boot中的tomcat是如何啟動的?

多線程

  1. 線程的幾種狀態,請畫出具體的狀態流轉圖?
  2. Java wait、sleep的區別?
  3. volatile如何實現指令重排序?
  4. 線程池中的阻塞隊列如果滿了怎麼辦(拒絕策略)?
  5. Synchronized和AQS異同,AQS公平非公平如何實現?
  6. 多線程裡面對一個整型做加減為啥不能用volatile?
  7. voliatile和synchonized有什麼區別?synchonized和jdk提供的Lock包又有什麼區別?

Redis

列舉下你所知道的常用的Redis客戶端併發模型?

  1. 聊下分佈式緩存,一致性hash。
  2. 如何解決緩存單機熱點問題?
  3. Memcache與Redis的區別?
  4. 列舉一個常用的消息中間件,如果消息要保序如何實現?
  5. Zookeeper有哪些功能?

微服務

  1. 什麼是微服務?
  2. 什麼是微服務熔斷?什麼是服務降級?
  3. 微服務的優點、缺點分別是什麼?
  4. 你所知道的微服務技術有哪些?列舉1-2個案例?
  5. SpringCloud和Dubbo 有哪些區別?

算法

  1. 如何遍歷一棵二叉樹?
  2. 二叉樹寬度遍歷?
  3. 用Java寫一個冒泡排序算法?
  4. 描述一下鏈式存儲結構。
  5. 數據結構的話,鏈表,樹,圖的基本知識得懂?
  6. 瞭解樹的先序遍歷,中序遍歷,後序遍歷。圖的廣度優先搜索算法,深度優先搜索算法?

HR 面

  1. 除了工作中經常應用到的技術,有關注、學習其它主流新技術嗎?
  2. 離開上一家公司的原因是什麼?
  3. 你的優、缺點分別是什麼?
  4. 未來的職業規劃?
BAT高級Java面試題:JVM+Redis+Spring+Mysql+數據庫+多線程+算法

面試經驗總結

面試題目範圍

面試主要考察候選人的基礎知識、項目經驗、技術深度,每個候選人被問到的題目及難易程度都略有不同。

一方面,要看面試官對你的第一感覺如何(還真有點像相親),如果你能在面試前幾分鐘,能給面試官留下好印象,那麼你在面試時得到的機會與包容,就會相對多一些。

另一方面,現場面試有60%-80%的題目,可能就出自於你的簡歷,面試官會依據你簡歷上提到的知識、經驗、項目,去深挖你的技能掌握程度。因此,真的是切記:慎用精通,慎用精通,慎用精通。如果你只是接觸、瞭解某個技術的皮毛,就在簡歷中說自己精通,保證你會被虐得很慘,最終反而得不償失。

認真對待每一場面試

如果沒有準備充分就去參加面試,既浪費彼此時間,也是浪費來之不易的機會,要知道得到好公司的面試機會不易,機會都是給有準備人的。

我始終相信:當下所付出的每一分努力與堅持,都會在未來的某一天,得到豐厚的回饋。

BAT高級Java面試題:JVM+Redis+Spring+Mysql+數據庫+多線程+算法

優知學院:構建50萬年薪技能框架+68個BAT面試高頻必考點

面試結束覆盤查漏補缺

每次面試都是檢驗自己知識與技術實力的一次機會,面試結束後建議大家及時總結覆盤,查漏補缺,然後有針對性地進行學習,既能提高下一場面試的成功概率,還能增加自己的技術知識棧儲備,可謂是一舉兩得。

以上,是我在面試過程中所遇到的題目,以及積累到的經驗,全部分享給大家。

送最新總結的阿里集團高級Java必考題和答案,供大家參考。

轉發+關注+私信回覆【阿里】,立即領取。

轉發,轉發,轉發,然後關注+私信回覆【阿里】,立即領取!

BAT高級Java面試題:JVM+Redis+Spring+Mysql+數據庫+多線程+算法

----------end-----------


分享到:


相關文章: