9月面試基本結束!總結下阿里、騰訊、京東的Java面試題

2020-09-29 14:01:09

前言:

金九銀十過去了一半,很多朋友也基本都收到了大廠offer,今天為大家整理下目前大廠問到的面試題,也希望大家都能夠收穫心儀的offer!

在這裡插入圖片描述

阿里篇:

  • HashMap的資料結構——引出Java7跟Java8的區別

  • 在什麼情況下會做一個連結串列到紅黑樹的轉換

  • 除了資料結構之外,Java8跟Java7在HashMap上還有什麼不同

  • 擴容的過程,在什麼情況下會擴容

  • 擴容機制中的capacity初始值為什麼是16,可不可以自定義成15,為什麼一定要是2的指數次方

  • 簡單介紹一下hash演演算法,它的核心效能,或者說判斷一個hash演演算法好壞的指標是什麼,indexFor()函數的實現

  • HashMap為了解決什麼問題?——引出雜湊碰撞

  • 介紹ConcurrentHashMap的資料結構

  • ConcurrentHashMap可以支援多少並行執行緒

  • ConcurrentHashMap屬於JOC下的一個類,對JOC這個包的瞭解

  • 是否用過synchronized,之前是否碰到過並行問題,怎麼處理

  • 在Java技術棧方面,有沒有比較擅長或者深入瞭解的點,是否從原始碼上看過一些東西Netty原理介紹下。

  • 瞭解過NIO,BIO,AIO麼?介紹下異同,程式碼中如何使用?

  • 分散式鎖用過麼?用什麼函數?什麼使用場景?

  • 能介紹下垃圾回收機制麼?

  • redis的資料結構介紹下。專案中用過哪些?什麼場景

  • 冪等性是什麼?如何保障?

  • 交易系統中的資料一致性咋保障?

資料庫

  • 對MySQL瞭解多少——引出必問知識點(劃重點!!!事務和索引)

  • MySQL用的隔離級別是什麼,這個隔離級別下會出現什麼問題——引出資料庫的並行問題

  • MySQL使用這種隔離級別時,是如何解決幻讀問題的(引申,理解其他並行問題的解決原理)

  • MySQL的調優機制,主要是哪些方面的調優——引出索引

  • 在MySQL的InnoDB這個儲存引擎下,聚集索引(或者聚簇索引)和非聚集索引這兩個概念

  • MySQL中的索引是用什麼資料結構儲存的——此處應該引出B+樹

  • 為什麼通過索引查詢速度會更快一些——此處應該引出二元樹演演算法

二輪:

  • 自我介紹

  • 專案中的mongoDB使用場景是啥?如何部署的?怎麼保證高可用性?

  • JVM的記憶體結構能介紹下麼?

  • CMS和G1的優缺點?什麼時候發生FULL GC?什麼時候stop the world!

  • 什麼樣的物件能當根節點?

  • 一個類,兩個函數,一讀一寫,寫函數加synchronized,讀函數還用加麼?voliate關鍵字啥作用?

  • 資料庫設計時,主鍵咋設?自增好還是非自增好?為啥?

  • mysql的鎖型別介紹下

  • 線上CPU 100%了怎麼查?

  • 寫個演演算法,給一個數位,一個單調陣列中,方法返回陣列中第一個大於給定數位的下標,如果沒有,返回-1。

三輪:

第三輪就是比較深度的問題了,都是結合業務談談自己的程式思想,如果沒有一定的技術和開發經驗這個是回答不完整的

  • 如何實現一個高效的單向連結串列逆序輸出?

  • 已知sqrt(2)約等於1.414,要求不用數學庫,求sqrt(2)精確到小數點後10位

  • 給定一個二元搜尋樹(BST),找到樹中第 K 小的節點

  • LRU快取機制

  • 關於epoll和select的區別,以下哪些說法是正確的

  • 從innodb的索引結構分析,為什麼索引的 key 長度不能太長

  • 給定一個連結串列,刪除連結串列的倒數第N個節點,並且返回連結串列的頭結點

  • 如果讓你設計一個通用的、支援各種資料庫秒級備份和恢復的系統,你會如何設計

  • 如果讓你來設計一個支援資料庫、NOSQL 和巨量資料之間資料實時流動的資料流及處理的系統,你會考慮哪些問題?如何設計?

  • 給定一個整數陣列和一個整數,返回兩個陣列的索引,這兩個索引指向的數位的加和等於指定的整數。需要最優的演演算法,分析演演算法的空間和時間複雜度

  • 假如給你一個新產品,你將從哪些方面來保障它的品質?

  • 請評估一下程式的執行結果?

騰訊篇:

  • 什麼情況下會發生棧記憶體溢位。

  • JVM的記憶體結構,Eden和Survivor比例。

  • JVM記憶體為什麼要分成新生代,老年代,持久代。新生代中為什麼要分為Eden和Survivor。

  • JVM中一次完整的GC流程是怎樣的,物件如何晉升到老年代,說說你知道的幾種主要的JVM引數。

  • 你知道哪幾種垃圾收集器,各自的優缺點,重點講下cms和G1,包括原理,流程,優缺點。

  • 垃圾回收演演算法的實現原理。

  • 當出現了記憶體溢位,你怎麼排錯。

  • 簡單說說你瞭解的類載入器,可以打破雙親委派麼,怎麼打破。

  • g1和cms區別,吞吐量優先和響應優先的垃圾收集器選擇。

  • 怎麼打出執行緒棧資訊。

  • 簡單講講tomcat結構,以及其類載入器流程,執行緒模型等。

  • tomcat如何調優,涉及哪些引數 。

  • 講講Spring載入流程。

  • Spring AOP的實現原理。

  • 講講Spring事務的傳播屬性。

  • Spring如何管理事務的。

  • 說說你對Spring的理解,非單例注入的原理?它的生命週期?迴圈注入的原理,aop的實現原理,說說aop中的幾個術語,它們是怎麼相互工作的。

  • Springmvc 中DispatcherServlet初始化過程。

  • netty的執行緒模型,netty如何基於reactor模型上實現的。

  • netty的通訊協定是什麼樣的。

  • springmvc用到的註解,作用是什麼,原理。

  • springboot啟動機制

京東篇:

  • 自我介紹以及專案介紹

  • spring-cloud是否瞭解,spring-boot是瞭解,講一講bean的生命週期

  • hashmap-1.8後的改進,hashmap為什麼是執行緒不安全的

  • 如何做到執行緒安全,concurrenthashmap是怎麼實現的

  • 用到哪些的設計模式

  • ThreadLocal用過嗎

  • 類的載入機制

  • JVM-記憶體模型

  • 垃圾回收

  • redis原始碼有讀過嗎

  • 介紹你做的專案和其中的難點?

  • 反射的作用是什麼?

  • 資料倉儲,多執行緒和並行工具等?

  • 私有云,docker和k8s等?

  • 瞭解哪些中介軟體,dubbo,rocketmq,mycat等?

  • dubbo中的rpc如何實現?

  • 自己實現rpc應該怎麼做?

  • dubbo的服務註冊與發現?

  • 給你一個有序整數陣列,陣列中的數可以是正數、負數、零,請實現一個函數,這個函數返回一個整數:返回這個陣列所有數的平方值中有多少種不同的取值。

寫在最後:

網際網路大廠比較喜歡的人才特點:
對技術有熱情,強硬的技術基礎實力;主動,善於團隊共同作業,善於總結思考。
無論是哪家公司,都很重視高並行高可用技術,重視基礎,所以千萬別小看任何知識。這裡博主為大家整理總結了面試資料
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

網際網路大廠面試資料整理領取方式:戳這裡免費領取,暗號:CSDN

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述