前言
很多Java開發者面試之前,可能沒有較長的工作時間或者較爲豐富的工作經驗,所以不知道互聯網公司或者一線互聯網公司技術面試都會問哪些問題? 再加上可能自己準備也不充分,去面試沒幾個回合就被面試官幾個問題打蒙了,最後以慘敗收場。
針對這些的讀者朋友,小編整理了一些知名大廠的面經,在這分享給讀者朋友們參考,讓即將面試或是有想法跳槽的讀者朋友們瞭解一下一線大廠面試時都喜歡問那些問題。
開始
螞蟻金服(三面)Zookeeper+微服務+消息中間件+高併發架構設計
一面
- JVM數據存儲模型,新生代、年老代的構造?
- java GC算法,什麼時候會觸發minor gc,什麼時候會觸發full gc?
- GC 可達性分析中哪些算是GC ROOT?
- 你熟悉的JVM調優參數,使用過哪些調優工具?
- Java 有什麼鎖類型?
- 描述下線程池的處理流程?
- 類加載機制,一個類加載到虛擬機中一共有幾個步驟,這些步驟的順序哪些是固定的,哪些是不固定的,爲什麼不固定
- hashmap是線程不安全的,concurrenthashmap是線程安全的,怎麼實現的線程安全?
- volatile關鍵字解決了什麼問題,實現原理是什麼
- 併發容器有哪些,併發容器和同步容器的區別
二面
- 在工作中,SQL語句的優化和注意的事項
- 哪些庫或者框架用到NIO
- Spring 都有哪幾種注入方式,什麼情況下用哪種,ioc實現原理
- 如何定位一個慢查詢,一個服務有多條SQL你怎麼快速定位
- 聚集索引和非聚集索引知道嗎?什麼情況用聚集索引什麼情況用非聚集索引
- Nosql引擎用的什麼存儲結構,關係型數據庫和NoSQL各自的優劣點是什麼,如何技術選型?
- 微服務架構下,如果有一個訂單系統,一個庫存系統,怎麼保證事務?
- 分佈式一致性協議raft,paxos 瞭解嗎
- Zookeeper中的ZAB協議,選主算法
三面
- 自我介紹
- 參與的併發項目,從設計到部署,按照流程講一遍。
- 項目相關你用過redis,用在什麼場景,怎麼使用的?
- mysql同步機制原理,有哪幾種同步方法
- 數據庫主從同步如何實現,事務如何實現
- 談談你對SOA和微服務的理解,以及分佈式架構從應用層面涉及到的調整和挑戰。
- 阿里系中間件metaQ及原理與現有的kafka有什麼異同
- 在阿里有了解過什麼中間件嗎?實現原理?與其他開源消息隊列有什麼特點?
- 爲什麼選擇換公司?
- 三年到五年的職業規劃?
- 你有想問我的?
拼多多(三面)幻影讀+分段鎖+Spring Cloud+秒殺
一面
- 簡短自我介紹
- 事務的ACID,其中把事務的隔離性詳細解釋一遍
- 髒讀、幻影讀、不可重複讀
- 紅黑樹、二叉樹的算法
- 平常用到哪些集合類?ArrayList和LinkedList區別?HashMap內部數據結構?ConcurrentHashMap分段鎖?
- jdk1.8中,對hashMap和concurrentHashMap做了哪些優化
- 如何解決hash衝突的,以及如果衝突了,怎麼在hash表中找到目標值
- synchronized 和 ReentranLock的區別?
- ThreadLocal?應用場景?
- Java GC機制?GC Roots有哪些?
- MySQL行鎖是否會有死鎖的情況?
二面
- 樂觀鎖和悲觀鎖瞭解嗎?JDK中涉及到樂觀鎖和悲觀鎖的內容?
- Nginx負載均衡策略?
- Nginx和其他負載均衡框架對比過嗎?
- Redis是單線程?
- Redis高併發快的原因?
- 如何利用Redis處理熱點數據
- 談談Redis哨兵、複製、集羣
- 工作中技術優化過哪些?JVM、MySQL、代碼等都談談
三面
- Spring Cloud用到什麼東西?如何實現負載均衡?服務掛了註冊中心怎麼判斷?
- 網絡編程nio和netty相關,netty的線程模型,零拷貝實現
- 分佈式鎖的實現你知道的有哪些?具體詳細談一種實現方式
- 高併發的應用場景,技術需要涉及到哪些?怎樣來架構設計?
- 接着高併發的問題,談到了秒殺等的技術應用:kafka、redis、mycat等
- 最後談談你參與過的項目,技術含量比較高的,相關的架構設計以及你負責哪些核心編碼
抖音
一面(50分鐘)
- hashmap,怎麼擴容,怎麼處理數據衝突?怎麼高效率的實現數據遷移?
- Linux的共享內存如何實現,大概說了一下。
- socket網絡編程,說一下TCP的三次握手和四次揮手
- 同步IO和異步IO的區別?
- Java GC機制?GC Roots有哪些?
- 紅黑樹講一下,五個特性,插入刪除操作,時間複雜度?
- 快排的時間複雜度,最壞情況呢,最好情況呢,堆排序的時間複雜度呢,建堆的複雜度是多少
二面(40分鐘)
- 自我介紹,主要講講做了什麼和擅長什麼
- 設計模式瞭解哪些?
- AtomicInteger怎麼實現原子修改的?
- ConcurrentHashMap 在Java7和Java8中的區別?爲什麼Java8併發效率更好?什麼情況下用HashMap,什麼情況用ConcurrentHashMap?
- redis數據結構?
- redis數據淘汰機制?
三面(約1個小時)
- mysql實現事務的原理(MVCC)
- MySQL數據主從同步是如何實現的?
- MySQL索引的實現,innodb的索引,b+樹索引是怎麼實現的,爲什麼用b+樹做索引節點,一個節點存了多少數據,怎麼規定大小,與磁盤頁對應。
- 如果Redis有1億個key,使用keys命令是否會影響線上服務?
- Redis的持久化方式,aod和rdb,具體怎麼實現,追加日誌和備份文件,底層實現原理的話知道麼?
- 遇到最大困難是什麼?怎麼克服?
- 未來的規劃是什麼?
- 你想問我什麼?
天貓(四面)發壓測+Mina+事務+集羣+秒殺架構
一面
- 常見集合類的區別和適用場景
- 併發容器瞭解哪些?
- 如何判斷鏈表是否有環
- concurrentHashMap如何實現
- 集羣服務器 如何application 共享
- JAVA網絡編程中:BIO、NIO、AIO的區別和聯繫
- jvm內存模型jmm 知道的全講講
- JAVA的垃圾回收,標記算法和複製算法的區別,用在什麼場合?
- http和https的區別,http1.x和http2.0的區別,SSL和TSL之間的區別
- GC、G1和ZGC的區別
- B+樹和B樹的區別,和紅黑樹的區別
- 內存泄漏與內存溢出的區別
- session的生命週期是多久
- 關於Mina框架了解多少?(因爲我在項目裏用到了Mina,所以提到了這個部分)
二面
- java cas原理
- JAVA線程池有哪些參數,如果自己設計一個線程池要考慮哪些問題?
- Java的lock的底層實現?
- mysql數據庫默認存儲引擎,有什麼優點
- MySQL的事務隔離級別,分別解決什麼問題。
- 四個表 記錄成績,每個大約十萬條記錄,如何找到成績最好的同學
- 常見的負載均衡算法有哪些
- 如果Redis有1億個key,使用keys命令是否會影響線上服務
- Redis的持久化方式,aod和rdb,具體怎麼實現,追加日誌和備份文件,底層實現原理的話知道麼
三面
- 請畫一個完整大型網站的分佈式服務器集羣部署圖
- 多個RPC請求進來,服務器怎麼處理併發呢
- 講一下Redis的哨兵機制
- 數據庫分庫分表一般數據量多大才需要?
- 如何保證數據庫與redis緩存一致的
- 項目中消息隊列怎麼用的?使用哪些具體業務場景?
- JVM相關的分析工具有使用過哪些?具體的性能調優步驟嗎?
- MySQL的慢sql優化一般如何來做?除此外還有什麼方法優化?
- 線上的服務器監控指標,你認爲哪些指標是最需要關注的?爲什麼?
- 如何做壓測,抗壓手段
- 秒殺模塊怎麼設計的
HR面
- 自我介紹
- 你怎麼評價你之前的3輪面試
- 你怎麼看待你自己,你最大的核心競爭力是什麼
- 未來自己的職業規劃
- 對阿里技術氛圍有什麼樣的理解,用過哪些阿里的開源庫
- 期望的薪資是多少
- 最後,你有什麼想了解的
以上就是一些知名大廠的面試經過。小編在這分享總結的Java面試的高頻面試題(包括了Java集合,JVM,併發與多線程,Spring,MyBaits,微服務,Dubbo,Kakfa,中間件,Redis,數據庫,設計模式等)
由於內容過多,所以只截取了目錄部分。有想獲取這份文檔的朋友點贊後,私信回覆【面試資料】即可免費獲取(一定要記得關注我,不然沒辦法回覆陌生人私信)
除了這份文檔,還有一些針對技術點的面試專題和架構視頻
最後
希望大家能帶着這些問題和答案解析,能讓你進行有針對性行的學習,對面試做到知己知彼,百面百勝。