螞蟻金服中間件mysql
螞蟻財富linux
研發工程師程序員
以前面了阿里中間件的提早批,不過沒走流程。同期還面了螞蟻中間件的兩輪面試,被告知不走流程就不能面了,因此也沒面完。web
後來走了螞蟻金服財富事業羣這邊的流程。前幾天剛剛面完HR。面試
正好今天分享一下面經,你們能夠多交流交流哈。redis
1. 螞蟻中間件(面了三次,兩次一面,一次二面) 2. 螞蟻財富(1+2+交叉+HR)算法
一面:sql
自我介紹docker
Java中的多線程瞭解麼,線程池的增加策略和拒絕策略瞭解麼,說一下。數據庫
講一下線程增長的過程和拒絕策略的執行。
講了一下fixthreadpool的增加策略,而後幾種拒絕策略。
高併發狀況下,如何使用線程池,用哪一個,問了一下線程結束要多久,是否在下一個線程結束前完成(我想的是cachethreadpool,其實思路錯了)。
表示併發量比較大,因此我說能夠考慮併發量是否大於隊列長度加上最大線程數量和,若是不超過的話能夠是用fixthreadpool。
併發juc瞭解麼,有哪些線程安全的list。說了個copyonwritelist,想了半天說不出第二個了。尷尬,那就vector把,不是juc裏的。 貌似併發包裏確實沒有其餘list啊。 還問了concurrenthashmap1.8的改動。
HTTP協議瞭解麼,和tcp有什麼區別。
http1.0和2.0的區別。 答了TCP鏈接複用,加入ssl,以及壓縮請求頭。 其中哪一個更新比較有意義,爲何。我說的是壓縮請求頭,這樣能夠優化HTTP服務的性能。
Java的網絡編程,好比NIO和Socket瞭解麼。 說下BIO和NIO的區別把。 我說了BIO的阻塞用法,以及NIO的IO多路複用用法,說了selector,seletedkey,channel等類的使用流程,以及單線程處理鏈接,多線程處理IO請求的好處。
說一下NIO的類庫或框架 講了netty,寫過服務端和客戶端的demo,沒有在生產中實踐。
倒排索引瞭解麼,我說不了解。 其實就是搜索引擎的基礎索引,根據關鍵字到文檔的映射關係創建索引,中文關鍵字可使用中文分詞,查詢時經過關鍵字來定位索引,而且進行排序後獲得文檔結果集。 而後面試官說講一下數據庫把,說下sql優化的方式 我說的是MySQL,先講了一下sql使用索引的優化,而後基於索引說了幾條優化方案。
索引何時會失效變成全表掃描 說了聯合索引的前綴匹配,跳躍索引,聚合函數,判空和<>這些狀況。
分佈式的paxos和raft算法瞭解麼 瞭解過,可是講不清楚。
paxos:多個proposer發請提議(每一個提議有id+value),acceptor接受最新id的提議並把以前保留的提議返回。當超過半數的accetor返回某個提議時,此時要求value修改成propeser歷史上最大值,propeser認爲能夠接受該提議,因而廣播給每一個acceptor,acceptor發現該提議和本身保存的一致,因而接受該提議而且learner同步該提議。
raft:raft要求每一個節點有一個選主的時間間隔,每過一個時間間隔向master發送心跳包,小心跳失敗,該節點從新發起選主,當過半節點響應時則該節點當選主機,廣播狀態,而後之後繼續下一輪選主。
中間件知道哪些,阿里的dubbo,rocketmq的事務消息,問了TCC回答說這個以前沒看明白。 說了mycat實現分表分庫,消息隊列kafka和rabbitmq等。
平時看什麼書,怎麼學習的。還跟我說他們部門3個華科的,校友多多。
Spring和Springmvc講一下。講了Spring的ioc和aop,Springmvc的基本架構,請求流程。
一面:
自我介紹
講一下ArrayList和linkedlist的區別,ArrayList的擴容方式,擴容時機。
hashmap的實現。
NIO瞭解麼,講一下和BIO的區別,AIO呢。阻塞,非阻塞,異步。具體。
你說了解分佈式服務,那麼你怎麼理解分佈式服務。
你說了解Tomcat的基本原理,瞭解的是哪一部分,基本架構,connector和container
你在項目中怎麼用到併發的
docker和虛擬機講一下。
有啥想問的
項目
說一下Spring源碼把,它的架構,流程。
Spring的bean若是要在實例化過程當中修改其某一個成員變量,應該怎麼作呢。不經過構造方法,而且AOP也並不能實現。
Tomcat的類加載器瞭解麼,回答不瞭解只瞭解Java的類加載器。
自定義類加載器怎麼實現,其中哪一個方法走雙親委派模型,哪一個不走,不走的話怎麼加載類(實現findclass方法,通常用defineclass加載外部類),如何才能不走雙親委派。(重寫loadclass方法)
布隆過濾器瞭解麼,講了ip地址過濾的布隆過濾器實現。
據說你項目用過docker,講一下docker的實現原理,說了虛擬機通常要對內核進行虛擬化,docker則用cgroup和namespace分別進行硬件和命名空間的隔離。
項目中遇到的最大挑戰。
項目中學到最多的東西
有什麼想問
一面:
億級ip地址過濾
排序算法和適用場景
數據庫的事務有什麼用
數據庫的悲觀鎖和樂觀鎖
數據的索引有什麼用,怎麼實現
聯合索引的匹配原則
數據庫萬級變成億級,怎麼處理。分庫分表,分片規則hash和取餘數。使用mycat中間件實現。
redis這種nosql和mysql有什麼區別,講了一遍redis
Spring瞭解不,用到了哪些設計模式,說了四個,單例,工廠,代理,觀察者,模板其實也算。
web請求的過程,講了瀏覽器到http服務器的過程,再講了mvc的請求處理過程。
你的職業規劃
沒了。
二面:
沒有二面,好像說是跳過了一輪,直接技術主管面。
三面:
項目中的多線程,爲何用chm,還有什麼能夠避免併發問題。
平時在看什麼,寫什麼博客,我說分佈式,關注什麼內容,大後端,Hadoop生態。
dubbo瞭解麼
dubbo的基本架構,幾個組件說一下
服務生產者和消費者怎麼進行rpc調用
怎麼進行服務註冊發現 zk實現具體說說
dubbo的負載均衡怎麼作,講一下具體代碼實現。
dubbo的服務容錯怎麼作,怎麼知道服務器宕機了 zk的心跳機制維持服務器鏈接
好了我要問的差很少啦。
交叉面:
隔壁部門的技術主管,問了一道算法題。。就沒問別的了。。我也是很醉。。。
題目是鏈表的排序,扯了四、5種方案,轉成數組,直接排序,拆分再排序,順序鏈接等等。。而後我表示不能再優化了。他就說沒別的問題了。。。有點吃驚。
興趣愛好
三年到五年的職業規劃
意向公司和城市
實習經歷和收穫
實習中最大的困難
爲何換公司,爲何拒絕菜鳥實習offer
你的缺點和優勢
你以爲你比其餘人優秀的地方說三個
爲何想來咱們部門
巴拉巴拉
我參與了阿里巴巴中間件部門的提早批面試,一共經歷了四次面試,拿到了口頭offer。這是個人面經,在這裏分享給你們。
自我介紹
項目中作了什麼,難點呢。
Java的線程池說一下,各個參數的做用,如何進行的。
Redis講一下
分佈式系統的全局id如何實現。用zookeeper如何實現的呢,機器號+時間戳便可。
分佈式鎖的方案,redis和zookeeper那個好,若是是集羣部署,高併發狀況下哪一個性能更好。
kafka瞭解麼,瞭解哪些消息隊列。
想作業務仍是研究。
而後出了一道題,linux的訪問權限是rwx格式的。使用一個類支持訪問權限的增刪改查,而且注意使用的數據格式以及方法效率,規範。給了一個多小時寫題。
耗時將近30分鐘。
介紹你作的項目和其中的難點。
上次面試官問的問題,反射的做用是什麼。
數據倉庫,多線程和併發工具等。
私有云,docker和k8s等。
瞭解哪些中間件,dubbo,rocketmq,mycat等。
dubbo中的rpc如何實現。
本身實現rpc應該怎麼作
dubbo的服務註冊與發現。
據說我是非科班,因而問了些排序算法
耗時將近30分鐘。
三面不是面試,而是筆試,耗時三個小時,考的是Java核心的基礎。可是好像不能透題,就不說了。都挺有難度的。
大概說一下就是有幾個考點,Java併發的知識點,集合類,線程池,多線程之間的通訊等。
聊人生談理想,HR小姐姐很是溫柔,交流十分愉快。30分鐘。
分享免費學習資料
針對於Java程序員,我這邊準備免費的Java架構學習資料(裏面有高可用、高併發、高性能及分佈式、Jvm性能調優、MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)
爲何某些人會一直比你優秀,是由於他自己就很優秀還一直在持續努力變得更優秀,而你是否是還在知足於現狀心裏在竊喜!但願讀到這的您能點個小贊和關注下我,之後還會更新技術乾貨,謝謝您的支持!資料領取方式:加入Java技術交流羣963944895
,點擊加入羣聊,私信管理員便可免費領取