2019秋招|螞蟻財富+金服面經

2019秋招|螞蟻財富+金服面經

來自專欄筆經面經13 人贊了文章

作者:How_2_Play_Life

鏈接:nowcoder.com/discuss/91

來源:牛客網

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

後來走了螞蟻金服財富事業群這邊的流程。前幾天剛剛面完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,沒有在生產中實踐。

1 channelhandler負責請求就緒時的io響應。

2 bytebuf支持零拷貝,通過邏輯buff合併實際buff。

3 eventloop線程組負責實現線程池,任務隊列里就是io請求任務,類似線程池調度執行。

4 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發送心跳包,當心跳失敗,該節點重新發起選主,當過半節點響應時則該節點當選主機,廣播狀態,然後以後繼續下一輪選主。

14.中間件知道哪些,阿里的dubbo,rocketmq的事務消息,問了TCC回答說這個之前沒看明白。

說了mycat實現分表分庫,消息隊列kafka和rabbitmq等。

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

16.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+2+交叉+HR)

跟這邊的部門主管說了一下之前面試的情況,然後他幫忙催了下進度。

一面:

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 巴拉巴拉

與作者交流:nowcoder.com/discuss/91

更多筆經面經:nowcoder.com/discuss?


推薦閱讀:

求職面試必備技能有哪些?
刁鑽的面試
面試最初5分鐘是關鍵? 犯上3項低級錯誤隨時「取消資格」!
面試的穿著禮儀
職場面試最刁鑽的五大問題!

TAG:螞蟻金服體驗科技 | 秋招 | 面試 |