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