前言
現在已經是2020年了,相信很多人都在準備面試,,如何拿到心儀的 Offer,進入夢寐以求的大廠,實現自己的職業理想,達到程式設計師的小康水平。
這篇文章主要介紹了劉哥一月份的幾次面經,(一次性查缺補漏個夠),!(感謝劉哥的內容提供)
對於面試的那幾家公司暫不公布,望理解。
第一家(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,具體怎麼實現,追加日誌和備份文件,底層實現原理的話知道麼?
- 遇到最大困難是什麼?怎麼克服?
- 未來的規劃是什麼?
- 你想問我什麼?
第四家 (事務+集群+秒殺架構)
一面
- 常見集合類的區別和適用場景
- 並發容器了解哪些?
- 如何判斷鍊表是否有環
- 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輪面試
- 你怎麼看待你自己,你最大的核心競爭力是什麼
- 未來自己的職業規劃
- 對阿里技術氛圍有什麼樣的理解,用過哪些阿里的開源庫
- 期望的薪資是多少
- 最後,你有什麼想了解的
作者:豆汁
連結:https://juejin.im/post/5e200e676fb9a02fc6360ac1