我是怎样刚拿饿了么P7 offer,然后途虎一轮游的
本文轉載自微信公眾號:科技繆繆
今年初拿了個餓了么P7的offer,于此同時大家順便看看我怎么途虎一輪游的。廢話不多說,直接上題吧。
?
一面
首先上來就是自我介紹,簡單的說下自己的項目經驗,涉及的技術棧之類的。
然后每一輪必問的問題來了:說說你印象最深刻的項目!
這個已經被問的都不想說了,挑個有很多槽點的來說,并且自己已經知道問題答案的,我說了一個服務遷移同時雙寫的解決方案。
接著按照國際慣例先來一個HashMap原理。。。
那就來吧,簡單說下HashMap數組+鏈表結構,hash的實現方式和好處,高低位異或降低沖突,擴容的方式,頭插和尾差這些差不多就好了。
這里我也不等他問了直接講ConcurrentHashMap了,反正接下來肯定是問的,就說了下1.7和1.8的實現區別啊,1.7使用分段鎖啊,而1.8使用CAS+synchronized實現,增加了紅黑樹避免鏈表過長導致的性能問題,put和get的實現我一般就不主動說了太累了,等他問問了就說,不問就省點功夫。
然后既然說到了synchronized那就說說它的原理吧,接下來又是什么monitor對象啊,對象頭啊,鎖信息、分代年齡、GC標志一些難懂的話,整個電話里都充滿了歡樂的氣息。
好吧,接著自己老實點說鎖的優化吧,自旋、消除、粗化、輕量級、重量級、偏向都說一遍,我記得我就說了下自旋和偏向就完了,因為我發現年紀大了這些東西跟背書一樣總是忘。。。
一切跟著節奏走,說了鎖,那就ReentrantLock繼續走著啊,AQS實現原來來一發,然后說CAS state賦值,失敗進入等待隊列,講下公平鎖非公平鎖。
然后發現java面試真的是八股文套路,又來了新詞了吧,CAS原理又說一通,然后有的面試官又會問ABA的一些東西,又扯下樂觀鎖版本號之類的。
說到這里面試官好在沒跟著樂觀鎖直接走到數據庫去了,問了下線程池原理,這個太簡單了,幾個名詞maxSize、coreSize、keepAliveTime、queue說一說就好了,基礎。
完了真的就開始數據庫了,都是常規題,索引B+數啊,覆蓋索引,回表啊什么的,還有也是必問的事務ACID,隔離級別,MVCC原理。
一面都比較基礎吧,也沒什么難點,簡單就過了。
二面-交叉面
過了快一周接到了二面的電話,是在釘釘里拉了個群,說是要視頻面試,在家里快發霉了好好的洗了個頭結果沒和我視頻,只是釘釘打了個電話過來,國際慣例,自我介紹+印象最深刻項目!
二面是交叉面,其他組的一個架構師來面的,上來就是送命題,說是假設有1億的用戶session數據緩存到redis,怎么做保證高可用?這種題我覺得都是看你有沒有思路了,比如我問他我們根據日活或者其他的數據可以選擇緩存一部分熱點數據啊,根據停留時長選擇過期時間、過期策略,然后看存儲的數據類型來選擇什么數據格式。
接著講怎么保證redis的高可用,這個可就簡單多了,這就是面試技巧了,講高可用就講會出現的問題就行了,redis就直接從主從復制、哨兵、集群、持久化什么AOF RDB說,夠說10分鐘,說完了看情況接著說緩存擊穿、雪崩、穿透、熱key怎么解決,把能說的都說一遍就結束了。面試官肯定一看這小伙子不錯,我都沒問他就說完了,妥了妥了。
接著問了個問題說cpu負載和CPU使用率區別,我告訴他醫院有3個醫生,10個病人都排在一個醫生下面,另外2個醫生沒人,這時候CPU使用率是33.33%,但是負載就非常高了。然后接著問系統負載過高怎么辦?不是CPU負載也不是IO負載!
這一題我沒回答,主要是感覺沒太明白意思,后面去網上搜了一下,說是阿里面試必問題,大家有興趣可以去搜搜看。接著又問CPU很高怎么排查?這個也沒啥,我前面的面試詳解六里面寫了,這里不展開。
然后接著聊了下GC,年輕代老年代的收集器哪些,GC過程,不是很深入。接著說餓了么日訂單過千萬,針對這個場景分庫分表你怎么做?這個按照我們之前的經驗說了下之前的解決方案,根據用戶或者商家維度sharding,歷史數據歸檔,只能查詢3個月或者半年數據,有更多的需要走離線數倉這種。
然后一定會問那根據用戶sharding其他維度的查詢怎么辦,這里就是關聯表啊,索引啊,如果可以一定帶著sharding_key去查詢啊,實在不行只能多線程掃表啊,還有打寬表之類的。
接著又聊MQ,怎么保證消息的可靠性,因為我們之前用阿里云的ONS,就以RocketMQ舉例子,丟失的場景啊,生產者發送失敗、MQ自己丟失、消費者消費失敗3個方面說就好了。
最后就聊了下1.8的新特性stream啥的說說,BIO\NIO說說最后就結束了。整體感覺還行,除了那個負載的問題有點坑,另外就是NIO這個確實基本沒用上靠背書了。。
三面-老板P8面
3面就是以后直屬老板面試了,這一輪沒太多聊技術問題,主要是聊項目怎么做的啊,怎么設計啊,讓你設計的話你怎么設計,不過這一輪感覺當時腦子有點抽就是面的不太行,反應遲鈍,反而最簡單的是面的最不好的一輪。。本來還以為掛了,最后過了。
四面-部門leader P9面
4面就是中臺的大領導面了,3面老板是P8,4面的話是P9面,這一輪的問題也比較中規中矩吧,基于項目問的非常細,我這里也就沒辦法表述了,還有就是又把dubbo、mq、redis又說了一遍,可沒把我累死。這一輪面的比較好,輕松通過吧。
終面-HR
因為我面的是7所以一般就是5面了,除非可能其他幾面的面試官意見不統一可能要加面,我一個朋友就加面了一輪還是過了。最后就是HR談薪資了,這里HR先問我你期望薪資多少,我說漲幅20-30%,然后他直接給我報了一個數。。。。我想問那你問我干啥??小朋友頭上有很多問號好不好。。。
題外話-途虎面
放到最后來說途虎,實際上還是因為感覺被坑了,在中間面餓了么的時候先是面了1輪很簡單的過了,然后中間說這個部門沒HC了,換另外一個部門面,那我說行吧,既然都這樣了,那就面吧。結果嘛,好家伙,第一回一面算是挺正常的一面,這一回的我有點慘, springboot要支持mybatis怎么配置?那個什么方法我忘記了有幾個參數?我當時的內心。。。然后我就掛了。我很絕望你知道吧!
有道無術,術可成;有術無道,止于術
歡迎大家關注Java之道公眾號
好文章,我在看??
總結
以上是生活随笔為你收集整理的我是怎样刚拿饿了么P7 offer,然后途虎一轮游的的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阶段1 语言基础+高级_1-3-Java
- 下一篇: 威海天罡资料