三顧茅廬,七面阿里,25k*16offer,還原個人大廠面經

寫在片頭:聲明,勿槓

首先簡單說一下,這三次面試阿里並非一次性去面的,實際上第一次面試時候還在大四,找的實習崗,不太清楚是什麼部門,別問我爲何還記得面試題,有記錄和覆盤的習慣,再問就是槓。程序員

我的背景不詳細多說,學歷雙非本科,不是應屆生,工做年限不長,技術不是大牛,但也非小白,面經分享是想給正面試的同行一些建議和鼓勵,但願可以多多支持。面試

三顧茅廬,七面阿里,25k*16offer,還原個人大廠面經

注意:下文內容中會提到一些簡歷模板、學習筆記、學習腦圖、Java電子書籍和視頻等,須要的redis

戳此傳送門獲取算法

One:三顧茅廬,七面阿里,拿下25K*16offer

——一顧阿里一面被懟(未知部門)數據庫

阿里巴巴未知部門一面(問的問題讓我感受是偏金融的部門,面試官很嚴肅,如今想一想都有些後怕)數組

  • 自我介紹
  • 開源項目貢獻過代碼麼?(回答沒有,很尷尬)
  • 以前在部門作什麼?簡單介紹一下業務吧,內部有哪些系統,做何交互過程說一下
  • Dubbo踩過哪些坑?分別是怎麼解決的?(我答了異常處理時業務異常捕獲的問題,自定義了一個異常攔截器)
  • 說下你對線程安全的理解
  • 事務有哪些特性?
  • 怎麼理解原子性?
  • 講一下樂觀鎖和悲觀鎖的區別,這兩種鎖在Java和MySQL分別是怎麼實現的?
  • HashMap爲何不是線程安全的?怎麼讓HashMap變得線程安全?二者的區別是什麼?
  • jdk1.8對ConcurrentHashMap作了哪些優化?爲何這樣優化?
  • redis主從機制瞭解麼?怎麼實現的?
  • 有過GC調優的經歷麼?(有點虛,答得不是很好)
  • List,Map,Set三個接口存取元素時,各有什麼特色?
  • TreeMap和TreeSet在排序時如何比較元素?Collection工具類中的sort()方法如何比較元素?
  • Thread類的sleep()方法和對象的wait()方法均可以讓線程暫停執行 它們有什麼區別?
  • 線程的sleep()方法和yield()方法有什麼區別?
  • 當一個線程進入一個對象的synchronized方法A以後 其餘線程是否可進入此對象的synchronized方法b?
  • 請說出與線程同步以及線程調度相關的方法
  • synchroized關鍵字的用法?
  • 啓動一個線程是調用run()仍是start()方法?
  • 有什麼想問的麼?

——二顧阿里二面慘敗(菜鳥網絡)緩存

阿里巴巴菜鳥網絡一面:安全

  • 先來了個自我介紹
  • 而後介紹了本身簡歷裏寫到的一個比較熟悉的項目(詢問了項目的細節及具體的實現)
  • 接着面試官開始針對項目進行提問:(1)高併發的狀況下,Kafka消費到第一條記錄,在下沉服務處理好,但因爲網絡抖動沒有正確返回給上層,上層服務再次調用服務,怎麼樣保證只處理一次請求?(我答了分佈式鎖,介紹實現)(2)有本身用Redis實現過嗎?說說看
  • 介紹一下Redis的zset實現(回答的根據skiplist+hashtable和多級索引的方式實現)
  • 介紹一下B樹。(本身拓展開來回答,講到了B+樹的區別,聚簇索引和非聚簇索引,爲何B+樹更矮胖,如何肯定B樹的階等。)
  • 若是是普通索引,如何查找到對應的數據?
  • hashmap如何擴容的?講transfer方法和resize方法。爲何容量是2的指數次冪?
  • 介紹一下悲觀鎖和樂觀鎖。
  • 當synchronized對指定的方法上鎖,一條線程獲取鎖執行任務時,另外一條線程來獲取這個方法對應實例的鎖時獲取失敗,會被阻塞。那麼當前一條線程執行完任務之後,怎麼通知被阻塞的線程能夠得到被釋放的鎖繼續執行任務?(感受回答得比較糟糕,後來覆盤的時候反思了下,建議仍是從對象頭中存儲的偏向線程ID、線程持有的鎖、鎖狀態標誌以及monitor鎖計數器結合回答)
  • 介紹一下線程池(介紹幾個參數以及幾種常見的線程池,各自的阻塞隊列)
  • 幾個參數之間的關係?大體說了一下,打斷問,若是最大線程數大於核心線程數,且阻塞隊列中任務已滿,核心線程數建立達到設置的最大值,提交任務的線程被阻塞掛起,請問此時線程池開始建立額外的線程來執行任務,是哪一個任務先被執行?隊列頭的仍是隊列尾的?
  • 介紹一下jvm內存分區和垃圾回收機制?
  • 如何肯定eden區的對象什麼時候進入老年代?當線上監控中心的新生代和老年代哪一個區域發生垃圾回收,表示此時比較危險?
  • Spring的兩大特性?Springboot如何實現自動裝配的?aop在項目中用過嗎?怎麼用的?底層是如何實現的?介紹一下動態代理。jdk原生的動態代理和cglib的動態代理有什麼區別?
  • spark和flink的區別?(簡歷沒寫flink,但以前有spark任務,就勉強回答了一下)。
  • 有沒有發生數據傾斜的狀況?如何解決的?怎麼觀察spark任務的執行狀況?
  • 有了解過apollo嗎?
  • 瞭解CAP原則嗎,介紹一下?
  • 你有什麼要問個人嗎?

阿里巴巴菜鳥網絡二面:markdown

  • 自我介紹,此次着重介紹本身的項目經歷和項目總結。
  • 介紹項目,我剛說第一個就被面試官打斷了,感受要開始懟我,直接問有沒有更亮點的項目。而後我介紹了另外一個比較難的項目,講了一些業務背景以及使用到的技術棧,不知道爲何面試官沒有拓展開繼續問下去了。
  • 網絡協議有哪些?
  • 講講ThreadLocal的做用,是否線程安全?
  • 進程間的通訊
  • TreeMap講解,裏面有什麼屬性,entry裏有什麼屬性?
  • Java裏有哪些是不須要加鎖的同步方法?
  • 行鎖和表鎖的區別、場景
  • 組合索引的使用,eg. (a, b, c)索引,where a=x;where b=x;where a=x and b=x;哪一個能使用索引?
  • ArrayList和linkedlist的區別?
  • 有哪些集合類是線程安全的?
  • 算法:(1)排好序的數組,找2個數的和爲M的全部組合;(2)大數據下,找出出現頻率topK的ip
  • 上家公司的研發部門有哪些組?大體的工做內容是什麼?一個組多少人?你在什麼組?負責什麼?
  • 離開上家公司後,在看什麼書?學習什麼技術?(回答在研究Dubbo和MySQL,還看了一些底層實現的東西)
  • 截止目前,你本身感受面試表現怎麼樣?
  • 你有沒有要問個人?

——三顧阿里四面拿offer(一淘事業部)網絡

阿里巴巴一淘事業部一面:

  • 按照自我介紹,項目介紹
  • 大家天天這麼大的數據量,都是保存在關係型數據庫中嗎?
  • 那大家有沒有對查詢作一些優化呢?
  • 能說說爲何B+樹相對於B樹在查詢上會更加優勝嗎?
  • 除了上面這個範圍查詢,你還能說出其餘的一些區別嗎?
  • 剛剛咱們聊到B+ Tree,那你知道B+Tree的葉子節點均可以存哪些東西嗎?
  • 聚簇索引和非聚簇索引,在查詢數據的時候有區別嗎?
  • 剛剛你提到主鍵索引查詢只會查一次,而非主鍵索引須要回表查詢屢次。是全部狀況都是這樣的嗎?非主鍵索引必定會查詢屢次嗎?
  • 在建立索引的時候你都會考慮哪些因素呢?有用過聯合索引嗎?
  • 在建立聯合索引的時候,須要作聯合索引多個字段之間順序大家是如何選擇的呢?
  • 知道在MySQL 5.6中,對索引作了哪些優化嗎?
  • 大家建立那麼多索引,到底有沒有生效,或者說大家的SQL語句有沒有使用索引查詢大家有統計過嗎?
  • 那排查的時候,有什麼手段能夠知道有沒有走索引查詢呢?
  • 那什麼狀況下會發生明明建立了索引,可是執行的時候並無經過索引呢?
  • 大家線上數據的事務隔離級別是什麼?
  • 手撕代碼:鏈表內指定區間反轉

阿里巴巴一淘事業部第二面:

  • 直接上來就手撕代碼:重建二叉樹
  • JVM:類加載機制,沙箱安全
  • 問到運行時數據區,我答漏了一個程序計數器,而後面試官就接着問到了程序計數器。
  • 問可達性分析,什麼樣的對象能夠做爲GcRoot、加載的時候把這些對象提早找好用的OopMap
  • 新生代幾回對象幾回到老年代?
  • 有沒有可能直接就把剛new出來的對象放在老年代?(第一次碰到這個問題,有些慌,我答的有可能,畢竟有些垃圾回收器會有一個空間分配擔保策略)
  • 多線程:volatile,CAS,總線嗅探,CPU緩存一致性協議
  • 講一講ReentrantLock、ThreadLocal、Lock和Synchronized的區別。
  • CountDownLatch,ABC三個線程怎麼去保證順序執行?
  • 數據庫優化:B+樹,Hash索引,最左前綴,索引優化分析,一條龍服務,都問了一下。
  • Redis:一來就是分佈式鎖,而後別的就沒問了,可能也是以爲我回答得還行就跳過了。
  • HashMap:擴容的觸發條件是什麼?我答只是一個達到負載就擴容了,明顯錯了。而後面試官糾正說負載和Hash衝突同時發生。
  • 死鎖怎麼排查?
  • JVM調優怎麼作?
  • 問了幾個索引題。字符串要寫單引號,字符串查詢怎麼增長查詢效率,字符串索引太大了那就截取幾個作索引,叫前綴索引。怎麼判斷一個索引字段選得好很差,看不重複的和總數的比值,越大越好。
  • 假如如今系統裏面就是要模糊匹配怎麼辦?

阿里巴巴一淘事業部第三面

  • 自我介紹,直接問到了技術棧。(此次優化了自我介紹的內容,主要圍繞4個點去講。自報家門、項目經驗、技術棧以及求職願景)
  • 根據項目來提問,技術問題(這部分大體是對你的總體價值觀作宏觀的把控,包括上進心、責任心、心態以及工做激情等)
  • 在項目中遇到了哪些比較棘手的問題?是如何解決的呢?
  • 目前系統支撐的用戶量是多少?假如用戶量提高10倍,系統會出現什麼樣的問題?如何從新設計系統?(這部分就是主要考察你對問題的預見能力、解決能力,考察你對項目、問題解決的總體思路)
  • 使用memcached是一個什麼樣的原理?
  • 如何存放數據到memcached集羣中,介紹一下這個過程。跟進的問題,講一下一致性哈希算法的實現原理。
  • JVM中堆是如何管理的?JVM的內存回收機制,介紹一下
  • 分佈式事務實現方式
  • 熱點帳戶問題(項目中有就會問到)
  • 類加載委託機制
  • 鎖的應用
  • 項目架構
  • 最後一問:你以爲你在同事眼中是一個什麼樣的人?

阿里巴巴一淘事業部第四面(終面:Hr面)

  • 自我介紹
  • 看你工做換得比較勤?你的職業規劃是怎麼樣的?
  • 上一份工做爲何要換?(我回答的是:上份工做讓我處於一個溫馨區,但我比較喜歡作有挑戰的事情,巴拉巴拉)
  • 對阿里瞭解多少?對電商瞭解多少?
  • 知道新零售嗎?說說看
  • 讀過哪些算法方面的書籍?
  • 開放題:數據和商業的關係
  • 薪資待遇
  • 你有什麼想問的?

面試題答案:

三顧茅廬,七面阿里,25k*16offer,還原個人大廠面經

Two:三顧阿里,七輪面試,個人經驗覆盤

1.阿里面試注意事項

  1. 部門選擇:從這三次面試經從來看,部門不一樣,問到的技術棧都有所區別,因此在面試前最好是根據本身所面試的部門作相應的準備。
  2. 崗位選擇:根據崗位介紹可以洞見的關鍵信息並很少,基於有限的信息,所謂合適一般需知足如下幾點:①自身的核心競爭力與所應聘的崗位具備較高的匹配度;②對崗位的工做內容感興趣,至少不排斥;③崗位所在的業務具備良好的前景;④工做地點可接受。
  3. 應變能力:幾輪面試下來,給我最大的一個感覺就是必定要培養本身的應變能力。在面試過程當中,面試官會根據和你交流的過程當中,找一些細節進行提問,一旦應變能力不強,就容易慌了張影響面試發揮,致使失敗。

2.面試核心知識點梳理

除了阿里之外,其餘七七七八八的互聯網公司我也面過很多,不說身經百戰,那也面臨過一些槍林彈雨的。因此,對於面試會問到什麼技術棧,仍是作了一些詳細的梳理,這些面試梳理仍是至關有說服力的。

針對面試核心知識點的梳理,我提供瞭如下的思惟導圖和麪試核心點PDF:

  • Java面試核心知識導圖

三顧茅廬,七面阿里,25k*16offer,還原個人大廠面經

  • Java面試核心點PDF

三顧茅廬,七面阿里,25k*16offer,還原個人大廠面經

3.簡歷優化

不要覺得簡歷只是一個 「敲門磚」而已,事實上,它將伴隨你走過應聘流程中的幾個關鍵環節:簡歷評估,技術面試,HR 面試。

一份優質的簡歷有助於應聘者展現本身的能力和優點,同時,也能夠爲面試官提供 「提問指導」 (一般面試官會根據簡歷內容有針對性地提問,有的放矢),所以不斷去優化本身的簡歷是頗有必要的。

關於簡歷,我能夠提供我我的的簡歷模板給你參考:

Three:個人將來規劃(滿足常樂,但不安於現狀)

1.職業規劃

程序員職業發展通常分三條路:

  • 技術
  • 管理
  • 創業

放到本身身上來看,很顯然,沒有創業的頭腦,那這條路天然是行不通的。那走技術仍是走管理?實際上並不須要過早定下來,等到必定年紀天然會開始方向的轉移,但不管是走技術仍是管理,一開始就要把技術打得紮實,由此,對於技術癡迷的我,先以技術路線爲主,管理路線爲輔。

三顧茅廬,七面阿里,25k*16offer,還原個人大廠面經

2.學習規劃

說得難聽點,程序員不學習,那就是在「等死」,尤爲是對於大廠程序員來講,所以接下來的時間要有一個清晰的學習規劃。

個人學習規劃以下:

  • Step1:按照技術路線圖學習

三顧茅廬,七面阿里,25k*16offer,還原個人大廠面經

  • Step2:啃完這些電子書籍和技術筆記

三顧茅廬,七面阿里,25k*16offer,還原個人大廠面經

三顧茅廬,七面阿里,25k*16offer,還原個人大廠面經

  • Step3:利用碎片時間看視頻學習

三顧茅廬,七面阿里,25k*16offer,還原個人大廠面經

3.業餘規劃

  • 搞副業:用業餘時間搞點副業仍是ok的,接點小項目,或寫寫博客(正在作)。
  • 混論壇:混跡各大程序員知名論壇中,如GitHub等,可以參與開源最好不過。
  • 交朋友:加一些社羣,參加線下面基,結識一些同行朋友,或許能碰撞出一些不同的代碼火花?

三顧茅廬,七面阿里,25k*16offer,還原個人大廠面經

寫在末尾:一些建議和行業願景

文章寫到這裏差很少能夠停筆了,可是又好像還想說點什麼,或許是對同行的你一些小建議,也或許是對整個行業的一些願景。

近幾年來,鋪天蓋地而來的「程序員35歲」製造了很多年齡焦慮,試問本身被公司裁人,被社會淘汰真的是年齡致使的嗎?大多數仍是與本身能力相關,在我接觸到的認知裏,互聯網公司35歲以上的技術經理,技術大牛仍有很多。實際上,不管你是什麼行業,能力不過關,都會被淘汰,而避免被淘汰的惟一辦法:堅持學習。

因此,最後但願同爲代碼獻身的咱們,不負初衷,不畏困難,擁抱發展!

以上文章內容所說起的【Java面試核心點】+【Java電子書+技術筆記】+【學習視頻】均免費分享,須要的朋友只需你:

——點贊+評論文章,關注我,戳此傳送門獲取

相關文章
相關標籤/搜索