本文是 quiet 同窗投稿的面試經歷php
恭喜 quiet 同窗,拿下技術專家的職位java
先作個自我介紹,本人座標魔都,13年畢業,工做6年,以前一直在互聯網公司工做,曾經在阿里系公司下擔任資深工程師的職位。mysql
今年大環境很差,但仍是毅然決然的出去試了試,而我此次面試的目標期待,是但願想找一個知名互聯網公司的技術專家的職位。面試
拼多多redis
首先說說我面試上海拼多多的經歷,我是朋友內推過去的,面試的是拼多多的商品中心部門,內推人說是拼多多技術要求最高的幾個部門之一。本身以前作過商品相關業務,業務上有些對口。sql
一面面試官首先讓我寫一下觀察者模式代碼(設計模式有專門準備),而後跟技術官聊技術業務,聊分佈式鎖的實現,redis用的什麼命令,問 redis 集羣緩存數據不均衡怎麼作。數據庫
我就說計算機領域有一句名言:計算機科學領域的任何問題均可以經過增長一個間接的中間層來解決,我感受在客戶端和redis服務之間加一層就能解決了,問我具體怎麼作,我說了個人思路。設計模式
接着面試官問咱們公司的一些緩存架構,咱們公司通常都是使用的堆內緩存 + redis 緩存(二層緩存架構方案)。緩存
而後圍繞着這個,問了數據一致性怎麼作的?有沒有作過相關壓測?指標是多少?熔斷降級有沒有作過?性能優化
而後說說sentinel和hystrix的區別?我知道拼多多這二個框架都有使用,限流的一些參數怎麼設置,依據是什麼?這個是真的考驗有沒有在生產上玩過了。而後讓我設計一個高併發系統,從哪些方面考慮。
最後面試官問我有什麼問題想問他,這一塊我是精心準備過的,我就問他以前我在設計商品域的時候走的彎路。
好比商品快照問題怎麼解決的,由於當時咱們作這一塊的時候,全部涉及到商品域屬性變動都會生成快照,形成數據量暴增。
而後面試官說他們也是這麼作的,因此他說他們的一些操做日誌表有的表已經有分庫分表上萬張了
我問面試官的第二個問題是詳情頁的設計,怎麼作的緩存設計?(好比從不一樣的業務緯度拆分key,更新頻率拆分key)
由於我一直想了解一下大公司在庫存和價格這塊有沒有應用緩存這種形式,由於咱們以前由於QPS都不算高,價格,庫存都是直接實時查詢數據的,結合兜底方案來解決。
因此這二個問題一提,一面面試官以爲我以前有過思考,就讓我進入了二面。
二面是hr,聊了薪水,加班,補助等。問我有沒有買房,有沒有在上海買房的打算?若是有的話,二年拼多多就能夠湊足首付了。(拼多多二面都是hr,這個是槽點)。
三面商品部的老大來面試,也是聊設計技術方案爲主,由於以前我作過訂單,而後他問我下單要建幾張表?我說訂單主表,訂單條目表(有的場景下,訂單條目會建立不少條)。
面試官問我怎麼優化?(針對建立的訂單條目太多的問題)
首先我說訂單表能夠分庫分表來解決單DB的寫入瓶頸;面試官不滿意,我說能夠先建立訂單主表,若是訂單條目表是瓶頸那麼梳理一下業務,看看訂單條目是否能夠異步建立,走MQ,而後面試官仍是不滿意,我說我只能這麼優化了,暫時沒想到更多的方案
而後又聊了下分佈式事務,可靠消息最終一致性的方案講了一下,講解了咱們目前怎樣使用這套架構來採集上游數據,清洗數據,而後消費落到業務數據庫的。
又聊了一些其餘的方案設計,細節的技術點聊的少,大多數都是系統設計方面
我其實care到他的核心思路,由於拼多多商品應用的流量特別大,不少時候更多的時候在設計能夠避免一些性能問題,而不是簡單的堆機器。
總體下來,我感受有些高併發的優化經驗欠缺,總體技術二面還能夠(自我感受)。
面完,hr讓我回去等消息,說明天下午4點給回覆,我很開心,以爲應該差很少了,懷着加班都是浮雲,買房纔是主要道理的心理,開開心心的回家了,次日hr告訴我說,我掛了,掛在最終面的技術面上,我淚崩,很無奈。
再說說面試阿里,先是面的螞蟻金服。
一面是電話面試,一面聊了40分鐘的業務,當時我正在坐地鐵,而後在一站下車就直接在地鐵站聊了40min。
面試官問了我在上家公司作的訂單模塊,正向下單流程業務是怎樣的,系統流轉怎樣的,涉及到哪些域。
個人回答是下單流程根據不一樣的業務涉及到的流轉都不同,通常涉及到庫存,訂單,營銷。訂單完成以後涉及到調度域,積分域,用戶等等。
而後又問我具體的訂單模型是怎樣設計的,拆單的依據是什麼?我把訂單的模型說了一下,通常都是訂單主表和訂單條目表,根據供應商的維度進行拆分訂單。
接着問了正向下單流程中,優惠劵,庫存,訂單三者的事務如何保證的?
咱們作的很low,沒有用分佈式事務,直接在訂單這邊catch,catch裏面作一些異常反向流程,好比說釋放存儲,更改優惠券狀態等。
面試官緊接着問這樣作的問題在哪裏?
問題確定很是明顯了,就是catch中失敗如何去作。當時咱們只是記錄了相關接口調用日誌,會有1min的job會去輪詢這些狀態記錄,並告警通知的。咱們也考慮過調研過一些分佈式事務框架,目前也在調研中。
而後就一直聊的是業務和方案設計,聊完我本身以爲一面應該是過了。過幾天接到電話約二面。
二面是現場面試,2個面試官,問我爲何從阿里出來,爲何想回阿里。這個問題我以前沒有準備過,就臨場發揮了一下。
接着就是一連串連環炮:
如今公司用戶中心怎麼設計的?爲何這麼設計?
爲何用redis?更新策略是什麼?
下單的鏈路怎麼樣的?
怎麼解決正向下單流程中庫存,訂單,積分的分佈式事務問題?履約的過程?履約的後續流程?畫出系統架構圖(感受每一個面試官都會問)
平時架構設計中要畫哪些圖?
我說通常會畫一些數據庫ER模型,重要的流程時序圖,邏輯架構圖,物理架構圖等等
問我哪些中間件瞭解的特別深刻,我說es,redis,聊了聊使用場景,怎樣同步mysql數據到es的,這樣的架構有沒有遇到問題,redis的一些性能優化等等。
二面結束了,下樓的時候我問二個技術官何時有結果,他們說一週吧,而後等了三週纔有結果,整個到接到三面通知大概接近了二個月,在這期間我已經選了另外一家在線教育公司。
當時新公司已經入職二週了,週五接到螞蟻金服hr的電話約三面,當時剛入職新公司一段時間,由於太忙了,因而就沒去,放棄了三面。
又過了一段時間,阿里的一個面試官又打我電話,當時我在下班的路上,大概晚上9點40左右,說他是阿里的另一個部門,在系統上看到個人面試結果超時了,問我要不要面試這個杭州的職位
我就試試跟面試官聊了聊,聊到了最近作的一個作的一個面向B端的招聘項目使用的技術棧,數據的採集來源,怎麼清洗數據,怎麼維護數據池,面試官說很符合他們如今作的業務,一面過了
我說平時太忙了,沒啥時間去杭州二面,面試官講週六在盒馬生鮮他們部門會來上海有個面試專場,此次週末時間,再去學習學習
二面的面試官應該是個p7,技術大牛,聊了一個多小時,java技術棧最考驗候選人功底的就是java併發和jvm,面試官問我怎樣寫一個程序,快速打滿方法區;讓你設計一下可達性分析,思路大概是什麼;可重複讀有用到鎖等等
三面的面試官是部門主管(大概p8,p9職位),聊聊DDD的理解;3點15時針分針的角度是多少😂;最瞭解的中間件是什麼,說說你的理解;瞭解hive嗎,等等;
第四面,hr面,爲何以前離開阿里;工做中學到哪些,怎樣以爲跳出到另一個環境成長會更多;到新公司以後發現成長環境並非本身指望,怎麼辦?
而後問了我以前面試螞蟻金服什麼狀況,由於HR只能在系統看到我今年面試超時,問緣由,我說面試週期太長了,三面沒時間;
這邊我也犯傻了,問了一個問題,說我面試若是過了能在阿里評級是什麼,她反問我,你以爲呢。。。面試結束的時候,我問hr大概多久面試結果出來,hr說月底以前通知
而後在月底接到了阿里hr的電話,通知我面試過了,薪水大概和我如今這家在線教育差很少,問職級,給了p6+
最終作了一些對比,仍是以爲去阿里作 p6 或者 p6+ 並非我現階段的意願,在中等公司作技術專家或許能夠能作更多的事情,所以拒絕了阿里的offer。
第一家公司是一家在線教育公司,boss上投的,總體面試的還不錯。
一面的問題都是一些基礎知識點的考察,面試官主要問了Java內存模型,ReentractLock與synchronized之間的區別,HashMap 1.7和1.8之間的區別,分庫分表怎麼作的,MQ怎樣作到消息的可靠性,順利經過。
二面的時候,和麪試官聊了一些業務知識,交易相關的一些設計思路看法,因爲我對本身作過的項目的業務很熟悉,聊的也比較順利,面試也順利經過。
三面面試官就是我入職的直接領導,問了對共享業務(大中臺)的理解,服務邊界怎麼劃分的,微服務的治理通常包括哪些,監控通常監控哪些等等,面試的都還不錯。
而後hr來了談了薪水,聊了換工做的緣由,下一份工做的指望等等,加了微信,路上說讓我發給他以前公司流水,而後hr又具體聊了一下薪資指望,當天晚上23點發了offer(汗,當時就以爲這公司加班挺狠的,hr都如此)
最終我選擇了這家offer,給的職級是技術專家的崗位,平臺和發展我的都比較看好,也有很多技術挑戰。
喜馬拉雅是朋友內推的,技術經理職位,在浦東。以前這一家的公司面試成功,讓我喜馬拉雅的面試頗有自信。
一面面了一個多小時,總體面試的還不錯,大概2,3個回答的很差,好比說雙親委任機制和SPI,線程池執行的時候怎樣在服務中止的時候優雅關閉線程池。不過我也在面試過程當中給了對方不少思路。
最後結束的時候面試官讓我手寫一個隊列,我以爲是一個比較簡單的面試題,就口述了下思路,而後面試官堅持問了我第二遍,要不要手寫出來,我說仍是不要了。
而後面試官走了,我覺得進入二面了,由於我本身也一直作面試官,也有一些面試經驗,覺得這個一面差很少過了
可是過了5min,一面面試官說今天就到這邊,讓我回去了,非常驚訝。灰溜溜的走了,由於是內推,本身堅持要了沒過的答案,是否是一面最後不手寫代碼的緣由,打聽了一些,大意如此,汗。。。
上面就是一些面試的主要公司,除此以外,還面了好比上海本土的一家生鮮平臺公司,面試經過了,hr問我有沒有offer,我認可有,最後也談了offer
不事後來我拒絕了一是由於首先這家公司不是java技術棧(php,面試的時候說要重構平臺,java在分佈式架構中的生態優點),二是hr給我考慮的時間過短了。
還面試了上海的一家出行公司,這家公司須要我降薪,給期權,最後拒絕了,由於職位沒給到指望,薪水方面感受也沒收到尊重
我有以前的很多同事在這家公司,以前印象還不錯,可是hr真的給我太差的印象了,面試次日說打電話跟我聊薪水,拖到下週二的晚上給我打電話。
而後我拒絕大幅度降薪(4k),說幫我談降薪2k,次日給回覆,而後次日又沒給回覆,也推到週五,反正後來hr加我微信,跟hr吵了一架。
另一個關於這家公司的槽點是,我面的是技術專家崗,最終技術面第四面,不知道什麼職位的大佬過來問我 synchronize 和 lock 的區別,volatile 關鍵字的做用,問完了2個問題就走了,先後不到5min,感受面試太不專業了,這個也是我拒毫不去這家公司的緣由。
END
我的公衆號:石杉的架構筆記(ID:shishan100)
歡迎長按下圖關注公衆號:石杉的架構筆記!
公衆號後臺回覆資料,獲取做者獨家祕製學習資料
石杉的架構筆記,BAT架構經驗傾囊相授