發(fā)布時(shí)間:2022-09-12
欄目:電商資訊
說實(shí)話,能有機(jī)會(huì)面一下阿里對(duì)我來說幫助確實(shí)有蠻多,至少讓我知道了自己的不足在哪,都說面試造火箭,上班擰螺絲。但就算是如此,為了生存,你也只有不停的學(xué)習(xí),唯有光頭,才能更強(qiáng)。哈哈
2月28日在Boss上,有個(gè)阿里的大佬找我打招呼說可以幫我內(nèi)推,我想也沒想就把簡歷給它了,然后就一直忘記這事了。因?yàn)槲矣X得我一個(gè)垃圾學(xué)校的小垃圾,怎么會(huì)有面試機(jī)會(huì),虧人家還讓我預(yù)備一下,我也拋到九霄云外了。
然后也收到了阿里的內(nèi)推消息
然后在3月4號(hào)的晚上8點(diǎn)鐘(看來阿里的工作時(shí)間確實(shí)長,我估計(jì)面試也是他們kpi的一部分吧),一個(gè)來自杭州的生疏電話打過來
xxx,你好,我是杭州阿里巴巴xxx的,我想問你現(xiàn)在有沒有時(shí)間,我來簡單的給你做個(gè)面試,你這邊先來個(gè)自我介紹
當(dāng)時(shí)我還沒意識(shí)到是內(nèi)推,因?yàn)槲以缫呀?jīng)忘的差不多了,還以為是啥新的炸騙方式,直到他說它是來給我面試的,然后說有人內(nèi)推過我的簡歷,我這才想起幾天前的事情。然后我巴拉巴拉的做了一個(gè)傳統(tǒng)的自我介紹,就是那些套路,之類的,然后面試官開始問問題了
你對(duì)多線程了解嗎,說說你對(duì)Synchronized和lock,說說他們之間的區(qū)別
其實(shí)這個(gè)問題,應(yīng)該算是很基礎(chǔ)的問題了,我就說了一下,一個(gè)樂觀鎖,一個(gè)是悲觀鎖,然后說了一下Synchronized的鎖升級(jí)的過程(這個(gè)還行我自己覺得),然后我說了一下Synchronized鎖方法,靜態(tài)方法,同步代碼塊的一些區(qū)別(這個(gè)點(diǎn)其實(shí)我沒答上來,有點(diǎn)忘記了。就是在JVM里面的標(biāo)記位不同的區(qū)別),然后是lock這點(diǎn)我也沒答上,這個(gè)應(yīng)該說他的幾個(gè)實(shí)現(xiàn),然后跟面試官聊聊他的底層實(shí)現(xiàn)原理,但是我這個(gè)是目前真的不是很熟悉,因?yàn)槠綍r(shí)不用,可能前面走馬觀花的看了,但是這次面試是突擊,所以真的對(duì)于lock就是知道他是aqs實(shí)現(xiàn)的具體的全忘記了
然后面試官說lock不熟,沒事,那你還有沒有用過什么東西來保證線程安全
然后忽然想到了一下CAS,然后說了一下CAS,這個(gè)我感覺說的7788吧,至少怎么保證安全的我說出來,先在本地線程記錄原來的值和計(jì)算之后的值,去刷到主存的時(shí)候,先比較原來的值。但是他讓我說底層原來的時(shí)候,我又似乎說錯(cuò)了,我把他和voliate搞混了,我竟然說是因?yàn)橛幸粋€(gè)內(nèi)存總線,真的是尷尬呀,能夠說讓其他的本地線程無效,在Cpu層面(這就是那種靠背的結(jié)果,哎),其實(shí)CAS的底層是一個(gè)lock指令來實(shí)現(xiàn)的再多核系統(tǒng)中,反正就這樣扯。。被我扯到了分布式鎖。。。我感覺自己拉開話題的技術(shù)還是可以的,哈哈
你說你們公司用的redisson來實(shí)現(xiàn)分布式鎖,假如不用redisson你能實(shí)現(xiàn)分布式鎖嘛,自己用redis,或者你給我說說redission是怎么實(shí)現(xiàn)分布式鎖的
當(dāng)時(shí)我就在想,我怎么把自己從一個(gè)坑,挖到另外一個(gè)坑,因?yàn)閞edisson的底層源碼,我是真的沒看,這個(gè)我是真說不出來,然后我就說怎么實(shí)現(xiàn)分布式鎖,用exist和setNX命令,還有加超時(shí)時(shí)間,然后用lua腳本做成一個(gè)原子性操作,來實(shí)現(xiàn)一個(gè)分布式鎖,這個(gè)我以前自己做過demo,然后現(xiàn)在手寫不出來,但是至少做過,印象還是深點(diǎn)。然后我就搭了一下,然后他又說,那你還有什么方法保證原子性呢?我其實(shí)也不清楚他想問的是啥,我就隨便搭了個(gè)事務(wù)。。。。
我看你對(duì)redis蠻熟悉的,那我們就來聊聊redis,說說他的數(shù)據(jù)結(jié)構(gòu)
我靠,終于來了個(gè)會(huì)的了,嗶哩吧啦的說了一下,然后他又問了一些基礎(chǔ)的東西,比如說緩存穿透這些,這些其實(shí)還好,究竟自己有試過。
既然你對(duì)redis那么熟悉,你知道為啥redis那么快嘛
其實(shí)這個(gè)問題是為后面做鋪墊的,我搭單線程內(nèi)存IO多路復(fù)用,媽的這個(gè)IO多路復(fù)用我只是以前看書的時(shí)候看過,我根本還不是很熟悉這個(gè)東西,然后他就盯著這個(gè)問了。。。然后我就尷尬的一批。就沒問我了,可能知道了我的深度了吧,哈哈
那你對(duì)多線程方面的知識(shí),還有哪些了解的,比如線程池,或者原子性的類這些
我心里,一萬字曹尼瑪,又來多線程,然后我說了幾個(gè)我自己并不是很熟悉的原子類,然后聊到底層,又不會(huì)(還是太菜),然后聊線程池,然后聊線程池的創(chuàng)建,線程池的運(yùn)行過程,然后他的優(yōu)化啥的,然后聊了一下,感覺我也沒啥深度,就終于不再跟我聊多線程了,(目前為止,就聊了2個(gè)東西redis和多線程,redis的東西,至少我感覺比多線程要好很多),然后面試官,又開始問了
我看你用的rabbitmq說說你是如何保證消息的可靠性的
這個(gè)其實(shí)還是很簡單,從發(fā)送端就是confirm機(jī)制,接收端就是用的ack機(jī)制,然后引用到我們自己項(xiàng)目用的Aop把失敗的消息存到redis中,并通知相關(guān)負(fù)責(zé)人去處理,這樣,然后我來聊到了我用它來做分布式事務(wù)的可靠消息很終一致性,因?yàn)檫@些東西都是我自己引申過去說的,肯定是我比較會(huì)的,說到了如何去做它的冪等,防止重復(fù)消費(fèi),然后中間還插了一下rocketmq,可惜我不是很熟悉,它里面的事務(wù)機(jī)制,稍微說了下然后說了一下它的持久化機(jī)制啥的,很后它問了一個(gè)啥問題,說假設(shè)你什么都做到很好的情況下,怎么樣才能更好的保證消息的可靠,包括你的服務(wù)器被炸了,斷點(diǎn),啥的。。。完成不知道再問啥,然后mq就沒問了,其實(shí)看著說的簡單,但是實(shí)際聊的東西還是有點(diǎn)的,什么死信隊(duì)列啥的都是有設(shè)計(jì)到的。
我看你對(duì)JVM調(diào)優(yōu)有了解,我們聊聊JVM吧,然后因?yàn)槔厥账惴ǎ厥掌鳌?
這個(gè)還好究竟自己有看過這方面的知識(shí),然后就把JVM的知識(shí)說了一遍,反正就是自己知道各種扯
說說你是怎么定位線上問題的定位吧,比如說CPU或者是內(nèi)存
其實(shí)我這快沒怎么實(shí)戰(zhàn)過,還是看過一些人家的解決方案,然后我就靠著記憶Cpu:通過top命令找到CPU消耗很高的進(jìn)程,并記住進(jìn)程ID。再次通過top-Hp[進(jìn)程ID]找到CPU消耗很高的線程ID,然后找到線程ID是十進(jìn)制的,把他轉(zhuǎn)換成十六進(jìn)制,然后用jstack找到當(dāng)前線程的jstack.log的快照,然后分析他的問題。內(nèi)存:其實(shí)對(duì)于內(nèi)存的話無非就是2種一直是內(nèi)存溢出,另外一種是內(nèi)存不健康,就是內(nèi)存泄露內(nèi)存溢出的情況可以通過加上-XX:+HeapDumpOnOutOfMemoryError參數(shù),該參數(shù)作用是:在程序內(nèi)存溢出時(shí)輸出dump文件。有了dump文件,我們找問題就很簡單了,比如我們用MAT等等,找到原因假如是內(nèi)存泄露的話就得具體分析了比如你的youngGC的頻率,和FullGC的頻率,假如是和平時(shí)完全不一樣的話,我們也可以用MAT去分析一下看是否是每個(gè)對(duì)象占用的內(nèi)存尤其大,并且還沒有回收他,然后找到這個(gè)對(duì)象去分析他的邏輯,并且來解決這種內(nèi)存泄露的問題
聊聊mysql把,平時(shí)怎么做查詢,優(yōu)化
反正就是那些套路什么索引啥的,說到索引了,那你對(duì)b+數(shù)熟悉嗎,我。。。。又是挖坑給我,我擦。我就其實(shí)我不懂,我因?yàn)闆]有預(yù)備去面試題。。。。唉(還是不能注重形式)
沒關(guān)系,我們來聊聊mysql的隔離級(jí)別
我又把那幾個(gè)背了一下(還好這個(gè)好記得,因?yàn)檎娴氖撬辣车囊郧埃?
那你給我說說可重復(fù)讀的底層實(shí)現(xiàn)原理嘛
我擦,又掉坑里面去了。。。。唉我就只好說,還沒空去了解這塊
沒關(guān)系我看你用的SpringCloud聊聊他的組件吧
然后我有嗶嗶嗶啦把這些基礎(chǔ)的平時(shí)工作的這些分布式組件給他說了

那你給我說說注冊(cè)中心怎么保證自己的高可用的
其實(shí)這個(gè)還好,以前背過哈哈我就把自己對(duì)2pc的選舉過程崩潰恢復(fù),數(shù)據(jù)同步的過程扯了一遍
既然你對(duì)2pc這么熟悉。我給你個(gè)場(chǎng)景,你說說看這種情況怎么處理,就是因?yàn)榫W(wǎng)絡(luò)原因,出現(xiàn)了雙主問題。
我的內(nèi)心的崩潰的,其實(shí)我都不知道再說啥了反正,不過有一點(diǎn)我是知道的,肯定是再瞎說,因?yàn)槲易约阂舱娌恢雷约涸僬f什么了,然后只能說,這個(gè)不是很清楚
好點(diǎn),沒事。那你說對(duì)于分布式系統(tǒng)來說,除了我們經(jīng)常說的2pc3pc還有什么更好的方法來做數(shù)據(jù)一致性
然后我又不知道要說啥了,又只能說不知道了
然后又問了下Spring,對(duì)于Spring的一些源碼的理解
我靠,終于問到一個(gè)我會(huì)的了,然后我就Spring容器的初始化過程和Spring單例bean的注入過程,和循環(huán)依靠講了一下。這個(gè)它竟然沒往死里問我了,哈哈(看來平時(shí)看點(diǎn)源碼還是有點(diǎn)用的)
你現(xiàn)在有電腦嗎,我們來做個(gè)機(jī)試吧,
然后我說我沒帶電腦,我想著就說算了把,謝謝您的好意,我反正也過不了,然后它就再三約我明天晚上來做,我就說沒有補(bǔ)全我代碼都寫不全的,但是它還是邀請(qǐng)我參加,我就只能答應(yīng)了,然后就掛了電話
當(dāng)時(shí)我跟這個(gè)面試官約的是3月5號(hào)8點(diǎn)以后,看來再阿里工作也是蠻長時(shí)間的,但是人家工資高,哪里像我們做的多,工資少,不過人家水平高,這個(gè)沒辦法
到了8點(diǎn),面試官主動(dòng)給我打了個(gè)電話,然后把機(jī)試題目發(fā)到了我郵箱,然后高速我看著我寫,我心理拔涼的,擔(dān)心啥也寫不來
然后題目其實(shí)很簡單是力扣上的24題,但是我當(dāng)時(shí)做的時(shí)候并不知道,我也不能百度,可惜我在那瞎寫寫了30來分鐘,但是也是完成沒有搞懂再干嘛
很后只能選擇放棄
哈哈,其實(shí)還是自己太菜了,雖然說我連一面都沒過(菜是原罪),但是這次面試給我的幫助還是很大,讓我在沒有預(yù)備的情況下知道了自己的水平,應(yīng)該算是比較真實(shí)了把,還有一點(diǎn)就是我們工作中大都是CV大法,導(dǎo)致我很多的基礎(chǔ)代碼都不是很會(huì),基礎(chǔ)不扎實(shí),雖然這個(gè)機(jī)試是算法,但是我很多簡單代碼沒有補(bǔ)全都不會(huì),很多簡單工作的實(shí)現(xiàn)都是百度,導(dǎo)致自己的動(dòng)手能力弱了很多。這點(diǎn)以后要改,我呢?把這次經(jīng)歷分享給大家,希望大家要引以為戒。好好學(xué)習(xí),扎實(shí)基礎(chǔ)。
文章地址:http://www.meyanliao.com/article/online/11430.html

- 1互聯(lián)網(wǎng)對(duì)傳統(tǒng)企業(yè)的沖擊有多大
- 2美團(tuán)再因不正當(dāng)競爭敗訴新反法互聯(lián)網(wǎng)專條首次適用外賣領(lǐng)域!
- 32021互聯(lián)網(wǎng)十件大事對(duì)不起賈躍亭你只能排第四
- 4互聯(lián)網(wǎng)宣傳做的就是用戶體驗(yàn)
- 5互聯(lián)網(wǎng)創(chuàng)業(yè)到底需要怎樣的能力
- 6適合上班族的25個(gè)副業(yè)(適合上班族的互聯(lián)網(wǎng)副業(yè))
- 7互聯(lián)網(wǎng)的世界沒有永遠(yuǎn)的敵人只有永遠(yuǎn)的利益
- 8押唄進(jìn)駐天線貓助力互聯(lián)網(wǎng)數(shù)碼產(chǎn)品寄存行業(yè)經(jīng)濟(jì)持續(xù)發(fā)展
- 9互聯(lián)網(wǎng)公司如何做好品牌定位
- 102021年互聯(lián)網(wǎng)金融發(fā)展回顧冬去春欲來改弦當(dāng)更張