【阿里面經分享】螞蟻金服研發面經+阿里中間件研發面經+面試題

【阿里面經分享】螞蟻金服研發面經+阿里中間件研發面經+面試題

螞蟻金服研發面經

  • 螞蟻金服中間件

  • 螞蟻財富

  • 研發工程師

之前面了阿里中間件的提前批,不過沒走流程。同期還面了螞蟻中間件的兩輪面試,被告知不走流程就不能面了,所以也沒面完。

後來走了螞蟻金服財富事業羣這邊的流程。前幾天剛剛面完HR。

正好今天分享一下面經,大家可以多交流交流哈。

1. 螞蟻中間件(面了三次,兩次一面,一次二面)
2. 螞蟻財富(1+2+交叉+HR)

【阿里面經分享】螞蟻金服研發面經+阿里中間件研發面經+面試題

螞蟻金服中間件一號機

一面

自我介紹

  1. Java中的多線程瞭解麼,線程池的增長策略和拒絕策略瞭解麼,說一下。

  2. 講一下線程增加的過程和拒絕策略的執行。

  3. 講了一下fixthreadpool的增長策略,然後幾種拒絕策略。

  4. 高併發情況下,如何使用線程池,用哪個,問了一下線程結束要多久,是否在下一個線程結束前完成(我想的是cachethreadpool,其實思路錯了)。

  5. 表示併發量比較大,所以我說可以考慮併發量是否大於隊列長度加上最大線程數量和,如果不超過的話可以是用fixthreadpool。

  6. 併發juc瞭解麼,有哪些線程安全的list。說了個copyonwritelist,想了半天說不出第二個了。尷尬,那就vector把,不是juc裏的。
    貌似併發包裏確實沒有其他list啊。
    還問了concurrenthashmap1.8的改動。

  7. HTTP協議瞭解麼,和tcp有什麼區別。

  8. http1.0和2.0的區別。
    答了TCP連接複用,加入ssl,以及壓縮請求頭。
    其中哪個更新比較有意義,爲什麼。我說的是壓縮請求頭,這樣可以優化HTTP服務的性能。

  9. Java的網絡編程,比如NIO和Socket瞭解麼。
    說下BIO和NIO的區別把。
    我說了BIO的阻塞用法,以及NIO的IO多路複用用法,說了selector,seletedkey,channel等類的使用流程,以及單線程處理連接,多線程處理IO請求的好處。

  10. 說一下NIO的類庫或框架
    講了netty,寫過服務端和客戶端的demo,沒有在生產中實踐。

    • channelhandler負責請求就緒時的io響應。
    • bytebuf支持零拷貝,通過邏輯buff合併實際buff。
    • eventloop線程組負責實現線程池,任務隊列裏就是io請求任務,類似線程池調度執行。
    • acceptor接收線程負責接收tcp請求,並且註冊任務到隊列裏。
  11. 倒排索引瞭解麼,我說不了解。
    其實就是搜索引擎的基礎索引,根據關鍵字到文檔的映射關係建立索引,中文關鍵字可以使用中文分詞,查詢時通過關鍵字來定位索引,並且進行排序後得到文檔結果集。
    然後面試官說講一下數據庫把,說下sql優化的方式
    我說的是MySQL,先講了一下sql使用索引的優化,然後基於索引說了幾條優化方案。

  12. 索引什麼時候會失效變成全表掃描
    說了聯合索引的前綴匹配,跳躍索引,聚合函數,判空和<>這些情況。

  13. 分佈式的paxos和raft算法瞭解麼
    瞭解過,但是講不清楚。

paxos:多個proposer發請提議(每個提議有id+value),acceptor接受最新id的提議並把之前保留的提議返回。當超過半數的accetor返回某個提議時,此時要求value修改爲propeser歷史上最大值,propeser認爲可以接受該提議,於是廣播給每個acceptor,acceptor發現該提議和自己保存的一致,於是接受該提議並且learner同步該提議。

raft:raft要求每個節點有一個選主的時間間隔,每過一個時間間隔向master發送心跳包,當心跳失敗,該節點重新發起選主,當過半節點響應時則該節點當選主機,廣播狀態,然後以後繼續下一輪選主。

  1. 中間件知道哪些,阿里的dubbo,rocketmq的事務消息,問了TCC回答說這個之前沒看明白。
    說了mycat實現分表分庫,消息隊列kafka和rabbitmq等。

  2. 平時看什麼書,怎麼學習的。還跟我說他們部門3個華科的,校友多多。

  3. Spring和Springmvc講一下。講了Spring的ioc和aop,Springmvc的基本架構,請求流程。

螞蟻金服中間件二號機

一面

  1. 自我介紹

  2. 講一下ArrayList和linkedlist的區別,ArrayList的擴容方式,擴容時機。

  3. hashmap的實現。

  4. NIO瞭解麼,講一下和BIO的區別,AIO呢。阻塞,非阻塞,異步。具體。

  5. 你說了解分佈式服務,那麼你怎麼理解分佈式服務。

  6. 你說了解Tomcat的基本原理,瞭解的是哪一部分,基本架構,connector和container

  7. 你在項目中怎麼用到併發的

  8. docker和虛擬機講一下。

  9. 有啥想問的

螞蟻金服中間件二面

  1. 項目

  2. 說一下Spring源碼把,它的架構,流程。

  3. Spring的bean如果要在實例化過程中修改其某一個成員變量,應該怎麼做呢。不通過構造方法,並且AOP也並不能實現。

  4. Tomcat的類加載器瞭解麼,回答不瞭解只瞭解Java的類加載器。

  5. 自定義類加載器怎麼實現,其中哪個方法走雙親委派模型,哪個不走,不走的話怎麼加載類(實現findclass方法,一般用defineclass加載外部類),如何才能不走雙親委派。(重寫loadclass方法)

  6. 布隆過濾器瞭解麼,講了ip地址過濾的布隆過濾器實現。

  7. 聽說你項目用過docker,講一下docker的實現原理,說了虛擬機一般要對內核進行虛擬化,docker則用cgroup和namespace分別進行硬件和命名空間的隔離。

  8. 項目中遇到的最大挑戰。

  9. 項目中學到最多的東西

  10. 有什麼想問

螞蟻財富事業部

一面

  1. 億級ip地址過濾

  2. 排序算法和適用場景

  3. 數據庫的事務有什麼用

  4. 數據庫的悲觀鎖和樂觀鎖

  5. 數據的索引有什麼用,怎麼實現

  6. 聯合索引的匹配原則

  7. 數據庫萬級變成億級,怎麼處理。分庫分表,分片規則hash和取餘數。使用mycat中間件實現。

  8. redis這種nosql和mysql有什麼區別,講了一遍redis

  9. Spring瞭解不,用到了哪些設計模式,說了四個,單例,工廠,代理,觀察者,模板其實也算。

  10. web請求的過程,講了瀏覽器到http服務器的過程,再講了mvc的請求處理過程。

  11. 你的職業規劃

  12. 沒了。

二面

沒有二面,好像說是跳過了一輪,直接技術主管面。

三面:

  1. 項目中的多線程,爲什麼用chm,還有什麼可以避免併發問題。

  2. 平時在看什麼,寫什麼博客,我說分佈式,關注什麼內容,大後端,Hadoop生態。

  3. dubbo瞭解麼

  4. dubbo的基本架構,幾個組件說一下

  5. 服務生產者和消費者怎麼進行rpc調用

  6. 怎麼進行服務註冊發現 zk實現具體說說

  7. dubbo的負載均衡怎麼做,講一下具體代碼實現。

  8. dubbo的服務容錯怎麼做,怎麼知道服務器宕機了 zk的心跳機制維持服務器連接

  9. 好了我要問的差不多啦。

交叉面

隔壁部門的技術主管,問了一道算法題。。就沒問別的了。。我也是很醉。。。

題目是鏈表的排序,扯了4、5種方案,轉成數組,直接排序,拆分再排序,順序連接等等。。然後我表示不能再優化了。他就說沒別的問題了。。。有點吃驚。

HR面:

  1. 興趣愛好

  2. 三年到五年的職業規劃

  3. 意向公司和城市

  4. 實習經歷和收穫

  5. 實習中最大的困難

  6. 爲什麼換公司,爲什麼拒絕菜鳥實習offer

  7. 你的缺點和優點

  8. 你覺得你比其他人優秀的地方說三個

  9. 爲什麼想來我們部門

  10. 巴拉巴拉

阿里中間件研發面經

我參與了阿里巴巴中間件部門的提前批面試,一共經歷了四次面試,拿到了口頭offer。這是我的面經,在這裏分享給大家。

【阿里面經分享】螞蟻金服研發面經+阿里中間件研發面經+面試題

一面:

  1. 自我介紹

  2. 項目中做了什麼,難點呢。

  3. Java的線程池說一下,各個參數的作用,如何進行的。

  4. Redis講一下

  5. 分佈式系統的全局id如何實現。用zookeeper如何實現的呢,機器號+時間戳即可。

  6. 分佈式鎖的方案,redis和zookeeper那個好,如果是集羣部署,高併發情況下哪個性能更好。

  7. kafka瞭解麼,瞭解哪些消息隊列。

  8. 想做業務還是研究。

  9. 然後出了一道題,linux的訪問權限是rwx格式的。使用一個類支持訪問權限的增刪改查,並且注意使用的數據格式以及方法效率,規範。給了一個多小時寫題。

耗時將近30分鐘。

二面:

  1. 介紹你做的項目和其中的難點。

  2. 上次面試官問的問題,反射的作用是什麼。

  3. 數據倉庫,多線程和併發工具等。

  4. 私有云,docker和k8s等。

  5. 瞭解哪些中間件,dubbo,rocketmq,mycat等。

  6. dubbo中的rpc如何實現。

  7. 自己實現rpc應該怎麼做

  8. dubbo的服務註冊與發現。

  9. 聽說我是非科班,於是問了些排序算法

耗時將近30分鐘。

三面:

三面不是面試,而是筆試,耗時三個小時,考的是Java核心的基礎。但是好像不能透題,就不說了。都挺有難度的。

大概說一下就是有幾個考點,Java併發的知識點,集合類,線程池,多線程之間的通信等。

HR面:

聊人生談理想,HR×××姐非常溫柔,交流十分愉快。30分鐘。

讀者福利

分享免費學習資料

針對於Java程序員,我這邊準備免費的Java架構學習資料(裏面有高可用、高併發、高性能及分佈式、Jvm性能調優、MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)

【阿里面經分享】螞蟻金服研發面經+阿里中間件研發面經+面試題

爲什麼某些人會一直比你優秀,是因爲他本身就很優秀還一直在持續努力變得更優秀,而你是不是還在滿足於現狀內心在竊喜!希望讀到這的您能點個小贊和關注下我,以後還會更新技術乾貨,謝謝您的支持!

資料領取方式:加入Java技術交流羣963944895點擊加入羣聊,私信管理員即可免費領取

如何成爲一個有逼格的Java架構師

怎麼提高代碼質量?——來自阿里P8架構師的研發經驗總結

阿里P8分享Java架構師的學習路線,第六點尤爲重要

每個Java開發者應該知道的八個工具

想面試Java架構師?這些最基本的東西你都會了嗎?

畫個圖來找你的核心競爭力,變中年危機爲加油站

哪有什麼中年危機,不過是把定目標當成了有計劃

被裁員不是寒冬重點,重點是怎麼破解職業瓶頸

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章