秋招熱潮過去大半,經過兩個月的辛苦奮戰,最終拿到了阿裡、美團、位元組、騰訊的offer,感覺面試的時候還是很幸運的,很多題都是我之前刷題刷到過的,哈哈哈~~下面給廣大網友們分享一下我的面經「阿裡/美團/位元組」供大家參考參考...
由于文章幅篇的限制小編就用截圖的方式給大家展示需要擷取完整版的小夥伴關注我之後點贊+轉發,私信回複【666】即可領取
01 阿裡巴巴(Java研發工程師)
一面(40分鐘)
- 常用的資料結構
- 各種連結清單之間的差別
- 算法:連結清單歸并排序。遞歸寫法和非遞歸寫法兩種
- 歸并排序的難點
- 資料庫 索引 什麼時候不适合用
二面(80分鐘)
- 算法:實作根号2,保留10位小數
- 算法:實作一緻性hash
- 一緻性hash底層用的什麼資料結構
- 介紹項目
- HTTP協定1.0、1.1、2.0的差別
- HTTPS協定雙方确認傳輸密鑰過程
- 場景:select name, age from user的資料庫查詢過程,以及怎麼優化,有索引以及無索引時
- update age from user無索引是行鎖還是表鎖,為什麼
- mvcc隔離級别怎麼防止幻讀
- 主從同步過程,binlog兩種類型的差別
- 場景:用資料庫實作分布式資料庫唯一id遞增
- 每個資料庫緩存失效的那一刻怎麼辦
- 說下對dubbo、zk等分布式的了解
- 自己設計一個PRC架構要考慮什麼
- 用Tomcat主要是解決什麼問題
- SpringBoot了解嗎
三面(30分鐘)
- 怎麼設計一對多關系資料表、多對多關系資料表
- 資料庫第一第二第三範式
- 資料庫死鎖
- HTTP的get、post、delete之類
- 算法:矩陣走方格的最短路徑,有障礙物(BFS)
- 設計微信發朋友圈、浏覽朋友圈、删除朋友圈的整個流程和存儲結構
- 說項目和論文……
- 工作崗位意向 想做哪方面
- 團隊部門更喜歡哪個
hr面(30分鐘)
- 自我介紹
- 面對非計算機專業的我,你來介紹下自己的項目
- 遇到的最大的困難,如何克服的自己最自豪的一件事
- 說一下自己的優缺點
- 平時除了在實驗室外,其他的愛好
- 團隊工作中如果有一個人沒有完成 如何對上級傳遞
- 平時團隊合作的多嗎 說一個例子
- 生活工作如何平衡
- 現在有哪些offer了
02 美團(系統開發工程師)
一面(一小時)
- 說項目
- 令牌桶算法
- 登入驗證碼怎麼做
- Cookie和Session存在哪 如果是多機存儲都會有什麼問題 帶id去找重複了怎麼辦 多使用者修改了怎麼辦
- zookeeper資料結構 寫節點的記憶體限制 在dubbo裡作為什麼角色
- dubbo中服務調用的幾種形式
- RPC過程 怎麼知道要調用的遠端主機的方法
- 怎麼把一個異步過程的傳回結果轉為同步的
- IOC的循環依賴 怎麼解決 有哪幾種
- AOP原理
- 你遇到的常見異常
- StringBuilder和StringBuffer差別
- ==和equals的差別
- HashMap、concurrentHashMap
- HTTP有哪些方法 get和post的差別
- 設計模式
- CAS實作原理
- ThreadLocal原理,底層,放在哪
- AQS實作原理 隊列為啥要雙向的
- Condition隊列
- 平時怎麼學習的
- 給你自己的技術打幾分、學習能力打幾分
二面(40分鐘)
- TCP和UDP的差別
- TCP時間和資源消耗具體在哪
- 滑動視窗大小初始值
- TCP和UDP可以共用端口嗎
- socket先啟動伺服器還是先三次握手 對應關系
- 三次握手過程中存在的問題
- Linux程序通信方式 最常用的哪種
- 共享記憶體生命周期
- Linux堆棧和Java堆棧差別
- Java線程池 ScheduledThreadPool
- 項目應用屬于io密集還是cpu密集
- Spring的優點和缺點
- Bean對象作用域有哪些
- 知道什麼别的類似于Spring這樣的架構
- 反向代理為啥叫反向不叫正向
- Nginx和Apache 為什麼Nginx快 底層實作是什麼
- 資料庫mysql存儲引擎 innodb優勢 其他引擎
- 用索引一定快嗎 什麼情況下查詢快/慢
三面(一小時)
- 深挖項目 挨個問一遍
- 對Spring架構的了解 畫類關系繼承圖
- 對Dubbo的了解 結構是什麼樣的
- 設計題:電商系統設計 畫類圖和UML圖表示之間的負責關系
- 如果給你一個大型系統開發 如何分工統籌 按什麼原則分
- 項目中和别人遇到沖突的例子 怎麼解決的
- 平時為什麼看源碼 如何讀源碼 按照什麼順序學習
- 對架構設計有什麼看法
- 了解領域驅動設計嗎
Hr面(40分鐘)
- 介紹下做過的數模比賽 為什麼要做這個
- 做過的課題中遇到的最難的問題 怎麼解決的
- 從大學到現在印象最深的一件事
- 為什麼選這個研究方向 喜歡嗎
- 導師當時是什麼标準選擇的
- 為什麼想做背景 對背景的了解
- 前端崗,安全崗為什麼不考慮
- 職業規劃
- 平時的愛好
- 家庭情況
- 家裡人對你去網際網路工作怎麼看
- 網際網路工作壓力和強度大 你怎麼看
- 工作地點問題 為什麼想去北京
- 現在有幾個offer 選擇時會如何考慮
03 位元組
一面
- 上來先讓我做了自我介紹,簡單介紹了一下之前做過什麼項目,用了什麼技術等等,沒有詳細問項目的細節,但具體的功能和業務一定要講清楚。
- 中間穿插着會問到一些基礎知識。總共面了50多分鐘,java基礎能問的基本都問完了。
- JVM垃圾回收,fullgc是否可以回收方法區
- redis支援的資料類型到跳躍表,redis同步政策
- 如何自己實作lru
- mysql索引的資料結構,為什麼用B+樹不用B樹
- 事務隔離級别,聚集鎖非聚集鎖(問到了一個非常細節的問題:如何用可重複讀的隔離級别避免幻讀)
- 線程池的構造函數參數,隊列的拒絕政策
- spring相關、bean的生命周期,循環引用問題spring如何處理
- concurrentHashmap1.8為什麼放棄了分段鎖
- 資料庫分庫分表相關
感覺一面主要考察的是知識廣度。
二面
- springAOP的原理,動态代理是怎麼實作的
- snmp
- fullgc的時候會導緻接口的響應速度特别慢,如何排查和解決
- netty,如何避免的NIO空循環,零拷貝
- 問了一些簡單的算法,說一下思路
二面考察的主要是知識的深度以及解決問題的能力。開篇正常先簡單自我介紹以及介紹項目。
三面
- kafka的replicas的作用,為什麼比其他的消息隊列好。
- 微網誌評論長連結短連結的問題,讓我設計一個服務來處理長連結短連結,包括怎麼讀怎麼存等。
三面面試官特别關注項目的實作和細節。為什麼分這幾個子產品,每個子產品做什麼以及為什麼要用這些技術,都需要非常清楚地解釋,中間如果他有疑問會立馬打斷來問問題。
随着網際網路的飛速發展,高吞吐、高并發、低延遲和負載均衡已成為普遍需求,為此,作為樞紐的中間件也從“集中式”發展為“分布式”——如基于 Redis 分布式緩存、基于 Kafka 分布式消息隊列、基于 ZooKeeper 的分布式鎖等等。
前段時間,在抖音上一份來自阿裡面試官的面試手冊《阿裡巴巴面試官手冊》遭到瘋傳,内容共206頁,包含分布式,中間件,大資料與高并發,資料庫,設計模式與實踐,資料結構與算法,HR面試題舉例等,我也是冒險分享出來給大家看看,也是給大家平時查漏補缺。
本文檔注重理論與實戰結合,不僅提供關鍵源代碼供讀者快速實踐,而且闡明其中原理并給出案例。
一、分布式
- 大型網站系統的特點
- 大型網站架構演化發展曆程
- 拆分 VS 叢集
- 微服務 VS SOA
- 前後端完全分離與Rest規範
- CAP三進二和Base定理
二、中間件
- 緩存
- 消息隊列
- 搜尋引擎
三、大資料與高并發
- 秒殺架構設計
- 資料庫架構發展曆程
- MySQL的擴充性瓶頸
- 為什麼要使用NOSQL NOT ONLY SQL
- 傳統RDBMS VS NOSQL
- NOSQL資料庫的類型
- 阿裡巴巴中文站商品資訊如何存放
- 資料的水準拆分和垂直拆分
- 分布式事務十、BitMap
- Bloom Filter
- 常見的限流算法
- 負載均衡
- 一緻性Hash算法
四、資料庫
- 資料庫範式
- 資料庫開發規範
- 資料庫索引
- MySM VS InnoDB
- 并發事務帶來的問題
- 事務隔離級别及鎖的實作機制
- MVCC(多版本并發控制)
- 間隙鎖與幻讀
五、設計模式與實踐
- OOP五大原則SOLID
- 設計模式
- 代理模式
- 面向切面程式設計(AOP)
- 工廠模式
- 控制反轉IOC
- 觀察者模式
- Zookeeper
六、資料結構與算法
- 資料結構與算法
- HashMap
- ConcurrentHashMap
- ConcurrentLinkedQueue
- Topk問題
- 資源池思想
- JVM記憶體管理算法
- 容器虛拟化技術,Doocker思想
- 持續內建、持續釋出,jenkins
七、面試題舉例
- 設計一個分布式環境下全局唯一的發号器
- 設計一個帶有過期時間的LRU緩存
- 設計一個分布式鎖
- 設計一個分布式環境下的統一配置中心
- 如何準備HR面試
由于文章幅篇的限制小編就用截圖的方式給大家展示需要擷取完整版的小夥伴關注我之後點贊+轉發,私信回複【666】即可領取
好了,本文就寫到這了,上述所有題目的答案我都整理成PDF了