螞蟻金服面經


連接:https://www.nowcoder.com/discuss/91738?type=0&order=4&pos=30&page=1mysql

螞蟻中間件(面了三次,兩次一面,一次二面

螞蟻金服中間件一號機

一面:
自我介紹

1Java中的多線程瞭解麼,線程池的增加策略和拒絕策略瞭解麼,說一下。
2講一下線程增長的過程和拒絕策略的執行。
3講了一下fixthreadpool的增加策略,而後幾種拒絕策略。

4高併發狀況下,如何使用線程池,用哪一個,問了一下線程結束要多久,是否在下一個線程結束前完成(我想的是cachethreadpool,其實思路錯了)。
5表示併發量比較大,因此我說能夠考慮併發量是否大於隊列長度加上最大線程數量和,若是不超過的話能夠是用fixthreadpool。

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

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

9Java的網絡編程,好比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個華科的,校友多多。

16Spring和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 好了我要問的差很少啦。

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

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

HR面:
1 興趣愛好
2 三年到五年的職業規劃
3 意向公司和城市
4 實習經歷和收穫
5 實習中最大的困難
6 爲何換公司,爲何拒絕菜鳥實習offer
7 你的缺點和優勢
8 你以爲你比其餘人優秀的地方說三個
9 爲何想來咱們部門
10 巴拉巴拉

轉載連接: https://www.nowcoder.com/discuss/91278?type=0&order=4&pos=27&page=1

一面 簡歷面: web

全程大概40多分鐘 面試

面試官一來講我有兩段實習經歷,讓我簡單介紹一下本身實習作過的事情。 redis

而後讓我說一下項目的架構 算法

而後一道設計題 問我克隆方面的知識 好比傳入Object,返回Object sql

又問了一道設計題 可是確實很緊張就回答不會 後來直接問基礎 docker

問我Spring IoC AOP(IoC從源碼層面理了一遍,AOP的話沒看源碼講了Spring下如何使用以及兩種動態代理方式) 數據庫

靜態代理如何實現 編程

還有AOP中的動態代理 jdk動態代理 cglib(也坦言只看過JDK動態代理的源碼,對CGLIB源碼不熟悉) 後端

cglib爲何不用實現接口(InterfaceMaker)

cglib效率問題(FastClass)

二面 team leader 電面:
二面問了不少,差很少1個小時,不少內容都忘記了。
先是自我介紹環節
剛開始先仔細問項目,問了一些難點和解決方案
平時如何設計和作項目(從軟件工程需求分析,設計,實現,測試等方面回答)
一道核心的場景題,這題應該是面試官打分的重點:雙11這樣的併發流量如何確保服務的可用性(這道題回答而且細問了好久,從前臺到後臺一些處理回答,面試官深問了好久,包括各類場景的拓展,讀寫分離,緩存、中間件、分庫分表等,主要考察思惟的發散,一系列回答完面試官比較滿意)
2G的日誌文件如何查找到異常日誌數量
問我算法如何我說通常就問了一道不難的算法題 從空間複雜度和時間複雜度優化給了兩個方案
問我Java8是否瞭解,我覺得會問我lambda以及stream,面試官說了一個很低層的,具體我也忘了,當時確實不知道就跳過
Java內存模型(也就是常規的回答,自頂向下,介紹原理而後從原子性、可見性、有序性再分別深刻回答,答到了一些Unsafe類的處理,面試官說不錯)
GC機制(常見的問題,各方面回答就行)
最後聊一些興趣愛好以及學習生活上的事情,
總的來講面試官比較滿意,和我說經過面試
平時看得最多的是多線程和JVM結果問的很少,很傷心hhh

三面 部門總監視頻面:
三面的面試官級別是P9,技術很強,基本上每一個點都問到不會爲止,面完覺得本身涼了就沒關注校招的事情。
先仔細問項目,問到沒法解釋爲止
三面面完也沒有立刻記錄,大體的知識點是這些,本人回答的比較馬虎,部門總監確實很厲害,全程花了30多分鐘,所有問分佈式的知識
細問實習項目
消息中間件:消息丟失、一致性
redis緩存:watch
dubbo架構
zookeeper如何保證一致性
分佈式理論:CAP、2PC、3PC等
最後問了一些大一大二作的項目
過了一遍計算機網絡和操做系統都沒用上很難受emmmm
四面 交叉面:
全程46分鐘
三面過了大概快兩週了,覺得本身涼告終果前幾天早上9:30左右剛在工位還沒坐熱乎就打給我,一手措手不及,對方自我介紹是天貓的來進行一輪交叉面,我當時急忙找了個空位置開始面試。
首先自我介紹
介紹項目
平時項目有用到優化的地方嗎 如何優化的
我回答了項目從寫方面的優化(服務端對數據庫樂觀鎖自旋等待、redis緩存對併發的抵擋,消息中間件進行異步)面試官又問我若是讀取如何優化
而後高併發狀況下如何處理(開放題,和二面差很少)
數據庫主從複製、分庫分表
分庫分表後如何保證主鍵惟一性
Java容器是如何啓動的
類加載過程
JVM字節碼優化
實現面向切面有哪些方法 具體怎麼實現的
進程間通訊的方法
三道算法題,左神書上的原題或變題,可是因爲半年沒刷左神的書很生疏了:1.用其餘數據結構設計棧 2.實現棧getMax函數 3.遞歸和非遞歸中序遍歷
因爲當時太急沒帶筆和紙,面試官也很耐心引導,但最終也給出瞭解決方案
最後問了平時如何保證代碼質量的
在實習期間出現過什麼bug 怎麼解決
五面 HR 視頻面:
全程20多分鐘,基本上在聊人生,面試官小哥哥也超nice,問了何時有結果,他說兩週以內有offer的話會再通知~
自我介紹
項目的收穫
項目遇到的難點如何解決
你實習的兩家公司有什麼優勢與不足
爲何春招沒有投阿里
將來的職業規劃
將來打算定居杭州嗎

打個總結:
由於第一次據說測開這個崗位,以前也糾結要不要換崗位,不少人都以爲測試開發好像很容易,以前也在意別人的見解,可是真正給你幫助的不是你認識的人倒是不少一塊兒準備秋招而加的陌生人,也算是認清了一些現實。其實阿里的測試開發面試要求和開發是同樣的,並且內部測開也不少種,而且今年整體校招hc每一個部門都在控制。實習作的是電商,投遞BU也屬於阿里電商核心,能接觸到更普遍的業務,將來也頗有挑戰。和TL以及主管們深刻了解以後更加堅決了個人想法,雖然崗位title是測試開發,作的內容也是純技術,對雙十一、618等活動提供保障,還有橫向業務的支撐,有很高的併發和實際場景處理,對我的成長確實很高,並且纔剛20出頭還有不少機會去嘗試,TL也一直很照顧重視我,相信是最好的安排。
另外給個建議:通常面試的問題是差很少的,可是每一個人能夠更深刻的回答,這樣比較加分,也更能和其餘人區分開,也祝願你們也能拿到合適的offer~
相關文章
相關標籤/搜索