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