校招阿里四個部門的面經,真實學生面試經歷
部門 A 預面 64 min (過)
- 自我介紹
- 學校的學習和實習的時間是怎么分配的?
- 實習的項目做了什么?遇到的難點?
- 在實驗室做的項目遇到的難點?
- JPA 和 MyBatis 的區別?講一下對象字段映射的細節
- MySQL 各種索引的一些差異
- 什么是聚簇索引?什么是非聚簇索引?
- Innodb 是怎么保證崩潰恢復能力的?(兩階段日志提交)
- Innodb的優缺點?(圍繞索引數展開講)
- 索引覆蓋?回表?唯一索引?非唯一索引?最左原則?
- explain 里面有哪些字段?
- 一個 SQL 查詢很慢,從哪些地方進行優化?
- 自增 ID 和 UUID 的區別?(葉分裂)
- 自增 ID 申請完了會發生什么事情?
- 分庫解決了什么問題?分表解決了什么問題?
- 你覺得學 JAVA 需要具備哪些基本條件?哪些地方特別重要?
- 七層網絡模型
- 為什么有了七層還有五層的概念?
- JVM 內存模型(概述)
- 講講雙親委派,為什么?
- 你覺得雙親委派這個名字有沒有什么問題?你講講自己的理解
- 打破雙親委派的例子,舉個例子?怎么打破?
- 你現在用什么 GC 收集器?
- Eden 區的對象回收策略?
- CMS 的 STW 情況?
- CMS 什么情況會觸發 Full GC?
- 新對象一定會在新生代 new 出來么?
- Java8 有什么新的 GC 算法?
- 了解 G1 收集器么?
- 考研么?為什么現在的實習想離職了?
- Golang 和 Java 的區別?
- 反問:有什么需要提高的?
部門 B 一面 50 min (過)
- 上一次面試問了些什么問題?
- 啥時候過來實習?
- 挑一兩個你實習或者項目當中遇到的難題?講一講怎么解決的?
- 項目當中的代碼你有沒有想過有一些地方可以優化?
- 哪些情況會出現 OOM?
- 堆中內存分配比例?
- 新生代 GC 工作流程?
- 為什么新生代年齡是 15 次進入老年代?
- 大對象進入老年代,這個大對象是有多大?
- 怎么排查 OOM?
- 你現在用過哪些中間件?
- RPC 了解么?
- RPC 解決了現在的哪些問題?
- 有沒有想過把你的項目改造成 RPC?
- IOC 的初始化流程?
- AOP是怎么和 IOC 做整合的?
- 循環依賴怎么解決?
- 項目怎么分層的?
- JPA 和 MyBatis 做對象映射的區別?原理?
- 數據庫熱點查詢的數據,怎么做性能優化?
- Innodb 的索引樹數據結構?
- 最左原則?
- 有沒有其他復雜的項目?
- 排查問題的手段,你目前知道哪些?
- 講講你的優勢?
部門 C 一面 72 min (過)
- 自我介紹
- 介紹一下項目和實習
- 你對 RPC 的理解?
- HTTP 和 RPC 的關系?區別?
- RPC 的優點?
- 任何一個請求過來都會打到注冊中心么?
- 關于項目和實習的一些問題
- HDFS 了解么?
- Java 的流式處理了解么?
- SpringMVC 處理請求的一個流程?
- Servlet 的監聽器和攔截器?
- 有哪些方法可以攔截一個 HTTP 請求?
- 關于接受請求的參數,你有沒有一套自己總結的方法?
- 在學校還做過哪些項目?
- 你覺得學 Java,最重要的是什么?
- 你對 IOC 的理解?
- AOP 的各種實現有什么差異?
- 為什么會有多種代理的方式?
- HTTPS 的秘鑰交換過程?
- 有中間人劫持則么辦?
- 雙親委派的理解?
- 為什么有雙親委派?一定要遵循雙親委派么?
- 怎么打破雙親委派?
- 有一個線程要等待其他線程執行完再執行?
- 有一個線程要等待其他線程都就緒再執行?
- 順序打印 ABC?
- Innodb 索引的數據結構?為什么用 B+樹?
- 100 瓶藥一瓶毒藥.懂得都懂.
- 海量數據取前
部門 B 一面 52 min (過)
- 自我介紹
- 有沒有面其他的部門?
- 介紹一下自己的實習項目?
- 關于項目的一些問題
- 你覺得實習做的事情還有沒有什么可以優化的?
- 為什么 TX 用 Golang?(我怎么知道?)
- DNS 解析流程?
- 怎樣解析一個域名?解析一個域名需要哪些信息?
- 為什么用 Nginx?
- 你覺得 Nginx 在你的項目中最大的作用是什么?
- HTTPS 的秘鑰交換過程?
- 你覺得使用了 HTTPS 之后還會出現問題么?出現問題了怎么辦?
- 外掛的 Tomcat 和 SpringBoot 內嵌的 Tomcat 有什么區別?
- Tomcat 的設計模式了解么?
- SpringBoot 怎么調起Tomcat?
- 你對 IOC 的理解?
- 實際開發當中你哪些地方使用了 Bean 的前置后置處理器?
- AOP 是怎么和 IOC 進行整合的?
- Spring 怎么把 Java 對象初始化成 SpringBean 的?
- HashMap 八股文講講?
- 哪些情況下會產生 Full GC?
- 方法區的大小怎么設置?
- 棧大小怎么設置?
- 你遇到過堆棧溢出的情況么?怎么解決的?
- MySQl 主從集群怎么搞?
- Binlog 有幾種?區別是什么?
部門 B 二面 75 min (過)
- 面試官上來花了 10 分鐘介紹了他們部門
- 關于 Github 上面的項目的問題(這個代碼是大二上期寫的)
- 項目當中的數據庫設計,你是怎么做的?
- 項目怎么分層的?
- 流量打到 SpringMVC 上面之后的處理流程?
- 微信小程序登錄的流程?
- JS SDK 登錄和后端請求微信服務器登錄的區別?
- 你覺得微信登錄獲得的 raw 信息可以被黑客劫持么?
- 你使用過分表么?分庫分表分別解決了什么問題?
- 分表的時候,怎么設計主鍵?
- 自己的項目當中,用到自定義索引的情況?
- 最左原則?聯合索引?
- 為什么會有最左匹配原則?(根據 B+樹排序規則去回答)
- 為什么使用 B+樹?回表?怎么減少回表?
- 數據庫的樂觀鎖和悲觀鎖?
- 讀鎖和寫鎖的區別?
- 假設現在有一個需求,需要在一個 for 循環里面連續 100 次去更新一個行記錄,這個過程中會出現阻塞的情況?怎么使用編碼的方式來規避這種情況?(手動繼承 AQS)
- 怎么關閉長事務?
- 為什么想來阿里?
- 微服務實例是怎么暫停的?了解么?
- 關于實習和項目的一些問題
- 線程池 7 個參數的含義?
- 線程池提交任務的流程?
- 對分布式的了解有多少?
部門 C 二面 50 min (過)
- 這輪面試忘了錄音了,有些問題不記得了.
- 關于項目和實習的一些問題.
- 一個分布式部署的項目?至少需要哪些模塊?
- 任何一個流量打過來都會打到注冊中心么?
- 一個注冊中心,至少需要具備哪些條件?
- 有一大批流量總是被打到一個實例上面,這個實例的兄弟實例分到的流量很少,怎么辦?
- 有一個實例掛了怎么辦?
- 注冊中心集群的時候,其中一個注冊中心掛了怎么辦?
- 平時通過哪些渠道學習?
- 看過哪些博客?
- 你覺得美團的博客上面有哪幾篇對你幫助特別大?
- 然后具體談了談這一篇博客
- 你看視頻一般在哪兒看?看那些類型的視頻?
- 能給我推薦一個關于技術的公眾號么?
- 你有看過阿里的一些技術博客么?你覺得他們寫的博客對你有沒有幫助?
- 剩下的八股文問題不記得了.....
部門 A 二面 60 min (過)
- 這一輪面試也忘了錄音了....
- 自我介紹
- 關于項目和實習的一些問題
- HashMap put 里面已經有100000 個數據了,往里面 put 第 100001 個數據會不會擴容?
- 你覺得采用鏈表加紅黑樹的組合方式之后解決了什么問題?
- 那么多數據結構,為什么偏偏使用紅黑樹?
- 紅黑樹的平衡怎么做?
- 鏈表轉化成紅黑樹的閾值怎么算出來的?
- 為什么紅黑樹縮回鏈表的閾值和進化的閾值不一樣?
- 現在用編碼的方式進行代碼同步,有哪些方法?
- 公平鎖和非公平鎖的實現(AQS 八股文)
- volatile 的特性?
- 一個 volatile 變量,一個線程寫,多個線程讀會不會出現線程不安全的問題?
- IOC 的初始化流程?
- Java 的類加載過程?
- 為什么會有 TIMEWAIT這個狀態?
- 擁塞控制?流量控制?
- 10000 億條淘寶訂單,每條訂單當中包含了一個交易流水,流水里面有商品的 ID,有購買數量,同一個商品在這個訂單會出現多次,現在要統計銷量最好的 10 件商品.
- 能記起來的就這些.....
部門 D 一面 70 min (過)
- 為什么不找硬件相關的實習來做軟件?
- 能給我介紹一下微電子科學與工程這個專業是干什么的么?
- 你是怎么學習軟件開發的這些東西?
- 關于實習和項目的問題
- 講講面向對象的一些特性?
- Java 7 大原則?
- 面向過程和面向對象的區別?
- 對象和類的關系?
- Java 容器八股文
- HashMap 八股文
- 進程和線程的區別?
- Java 創建線程的方式?
- 線程池參數和任務提交到執行的過程?
- 對于線程池參數的設定,你有沒有自己的一套方案?
- 代碼的同步怎么做?
- Java 的類加載過程?什么時候回觸發到 Java 類的加載?什么時候回觸發類的卸載?
- 雙親委派?打破雙親委派?
- 重載和重寫在 JVM 層面是怎么鑒別的?
- JVM當中的方法內聯?
- MySQL中的事務是怎么實現的?
- 隔離級別的區別?都是怎么實現的?
- 事務數組是什么?高水位指的是哪些?低水位指的是哪些?
- Innodb 索引數據結構?阿巴阿巴
- SQL 語句執行流程?分析器優化器執行器都是什么?
- 回表?索引下推?
- IOC 的初始化流程?
- 為什么會有 SpringBoot 的出現?
- 講講自動裝配?
- 你更傾向于 MyBatis 還是 JPA?
- 這兩個 ORM 的實現和區別?
- 問項目....
- 問實習...
- 你的大學生活,時間一般是怎樣安排的?
- 你覺得你自己的大學生活充實么?
- 一般采用哪些方式學習?
- B 端業務和 C 端業務你更傾向于哪種?
部門 D 二面 110 min (過)
- 自我介紹
- 本專業的成績怎么樣?
- 掛過科么?為什么會掛科?能不能總結一下這一次掛科?
- JVM內存模型概念?
- 你對方法區/元空間的理解?
- 堆中內存的分配?
- 永久帶會涉及到 GC 回收么?
- 程序運行的時候,怎么監控內存使用情況?
- 程序運行的時候,怎么看堆棧信息?
- Java 類加載的過程?
- 魔數是什么?
- 為什么叫雙親委派?你有沒有覺得這個名字怪怪的?
- 在一個類中調用了另一個類的私有方法能不能通過編譯?
- ClassNotFoundException出現在哪些地方?
- 假如說現在有一個 可執行的A.jar和 B.jar,他們都互相引用了對方,現在 B.jar 里面的某些類已經不在了,A還能啟動么?
- ldc,iconst,getstatic,ACC_FLAG 這幾個指令都是什么意思?
- IOC 的特性?你對 IOC 的理解?
- 我們自己也可以實現 IOC 和 AOP,甚至是前置后置處理器,為什么還要用 Spring 提供的?
- 怎樣才能知道 Spring 的 IOC 容器已經完全初始化了?
- 事件訂閱的接口名字是什么?
- 為什么我會問這個問題?為什么我們需要知道 Spring IOC 容器的初始化進度?
- Spring 的后置處理器接口名字是什么?
- AOP 和 IOC 的整合流程?
- AOP 是怎么做動態代理的?
- CGLIB 是怎么操作字節碼的?
- ASM 操作字節碼的原理?
- XML 的兩種解析策略?兩種有什么差異?
- 線程池參數?
- 任務提交到線程池之后會遇到哪些情況?
- 用銀行取錢的例子給我講講線程池?
- sync 對應的字節碼是什么?
- sync 鎖靜態方法和非靜態方法鎖的分別是什么對象?
- 為什么鎖的對象不一樣?
- 為什么使用 Maven?
- 一個 a.jar 引用了 c,版本是 1.0.0,b.jar 引用的 c 版本是 2.0.0,一個項目當中同時依賴了a 和 b,這時候依賴的 c 版本是哪一個?為什么?
- Maven 仲裁策略有幾步?
- 數據庫的事務特性?
- 隔離級別的差異?為什么會有這種差異?
- 講講可重復讀和讀提交隔離級別和實現機制?
- 什么是"當前讀"?
- 為什么項目當中要使用緩存?
- 為什么 redis 這么快?
- Redis的持久化機制?
- 在生成 RDB 的過程當中,還能繼續進行寫入么?
- 為什么 AOF 是數據先落盤再寫日志?而數據庫是先寫日志再落盤?
- 哨兵的選主策略?一個哨兵是怎么知道其他哨兵的存在的?
- HashMap 八股文
- 紅黑樹的特點?
- 三次握手和四次揮手的過程?
- TIMEWAIT 為什么要等待 2MSL?
- 301 和 302 狀態碼的區別?
- 磁盤調度算法?
- 操作系統死鎖?
- 進程和線程的區別?
- 哪一種 IPC 最快?
- 線程的幾種狀態?
- 進程調度策略?
- 三點十五分時針和分針的夾角?
部門 B 三面 35min (過)
- 自我介紹
- 問項目,問實習
- 你在項目當中擔任的角色?
- 你覺得 TX 的氛圍怎么樣?
- 你一般幾點走?
- 那邊加班嚴重么?
- RPC 調用過程中,現在要在消費者這一端配置某種調用超時之后的服務,怎么才能判斷是否已經超時呢?
- 關于超時時間的設定,怎么設置呢?
- 有幾種超時的情況?對應不同的情況你會怎么辦?
- 301 和 302 狀態碼的區別?
- HTTP 和 RPC 的關系?
- 哪里人?平時怎么學習?
- 你對 B 端和 C 端業務的看法?
- 寫在最后
面試的時候盡量追求實事求是,千萬不要想著打面試官的馬虎眼,有些東西沒做過就是沒做過。現在社會資源分享是我們的福利,明明有很多時間提前準備的,不要為自己的懶惰找借口,先過一遍,看看自己回答的怎么樣,哪里欠缺哪里補。