鏈接:https://www.nowcoder.com/discuss/91738?type=0&order=4&pos=30&page=1
螞蟻中間件(面了三次,兩次一面,一次二面
)
螞蟻金服中間件一號機
一面:
自我介紹
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 好了我要問的差不多啦。
交叉面:
隔壁部門的技術主管,問了一道算法題。。就沒問別的了。。我也是很醉。。。
題目是鏈表的排序,扯了4、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
一面 簡歷面:
全程大概40多分鍾
面試官一來說我有兩段實習經歷,讓我簡單介紹一下自己實習做過的事情。
然后讓我說一下項目的架構
然后一道設計題 問我克隆方面的知識 比如傳入Object,返回Object
又問了一道設計題 但是確實很緊張就回答不會 后來直接問基礎
問我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是測試開發,做的內容也是純技術,對雙11、618等活動提供保障,還有橫向業務的支撐,有很高的並發和實際場景處理,對個人成長確實很高,而且才剛20出頭還有很多機會去嘗試,TL也一直很照顧重視我,相信是最好的安排。
另外給個建議:一般面試的問題是差不多的,但是每個人可以更深入的回答,這樣比較加分,也更能和其他人區分開,也祝願大家也能拿到合適的offer~