阿里Java后臺(tái)開發(fā)面經(jīng)

最近原來(lái)實(shí)習(xí)時(shí)候的Boss聯(lián)系我,說(shuō)他跳槽到了阿里,問(wèn)我有沒(méi)有興趣面一個(gè)Java后臺(tái)開發(fā)崗位。考慮到我只工作了一年,現(xiàn)在去阿里肯定要降薪,因此也沒(méi)有太強(qiáng)烈的意愿。但出于提升自我的角度考慮,參加了面試。

一面(電話面試一小時(shí))

  1. 首先做一個(gè)簡(jiǎn)單的自我介紹,主要包括學(xué)校經(jīng)歷和工作經(jīng)歷。我工作經(jīng)歷只有一年,大部分時(shí)間都是在做產(chǎn)品設(shè)計(jì)和UI/UX Design,因此隔著電話都能感受到面試官的shock。

  2. Java基礎(chǔ)。自動(dòng)拆裝箱如何實(shí)現(xiàn),String,StringBuffer,StringBuilder的異同以及各自的實(shí)現(xiàn)。

  3. JVM基礎(chǔ)。JVM的內(nèi)存模型,常見的垃圾回收算法。

參考我的文集:《深入理解Java虛擬機(jī)》

  1. 事務(wù)ACID,編程時(shí)如何保證事務(wù),分布式情況下如何保證事務(wù)。

由于分布式相關(guān)場(chǎng)景我沒(méi)有接觸過(guò),因此面試官一直誘導(dǎo)我去設(shè)計(jì)實(shí)現(xiàn)一個(gè)分布式事務(wù)。

  1. 數(shù)據(jù)庫(kù)樂(lè)觀鎖和悲觀鎖。如何實(shí)現(xiàn)一個(gè)樂(lè)觀鎖。

  2. 消息隊(duì)列使用場(chǎng)景,Kafka的架構(gòu)以及原理。

  3. 什么是restful api,和rpc調(diào)用有什么區(qū)別。

  4. 單例的幾種寫法。volatile關(guān)鍵字有什么作用。

以上就是電話面試的大體問(wèn)題,面試完之后,又發(fā)給我三道算法題目,要求我一小時(shí)內(nèi)完成,下面是三道算法題:

  1. 翻轉(zhuǎn)一個(gè)long類型數(shù)字。例如輸入123456L,輸出654321L。
public long reverse(long i){

}

Leetcode翻轉(zhuǎn)integer的變種。考察能否正確處理溢出的情況。

  1. 輸入一個(gè)double,要求返回與它最接近的.49或.99的數(shù)字。例如12.77返回12.99,11.02返回10.99,12.61返回12.49。

這道題目應(yīng)該沒(méi)有什么坑,邏輯清晰即可。

  1. 有三個(gè)線程ABC分別向一個(gè)數(shù)組中寫入a,l,i,要求最終的寫入結(jié)果形如alialiali...寫入次數(shù)由A線程決定。

考察線程等待喚醒。具體參考我的這篇文章:多線程順序打印問(wèn)題

這三道題目做的還比較順利,第二天面試官又聯(lián)系我闡述一下第一題和第三題的思路,然后通知我可以參加下一輪了。

二面(電話面試一小時(shí))

二面主要考察了一些開放式的問(wèn)題。

  1. 首先還是自我介紹。主要是工作后的經(jīng)歷。介紹一下工作一年所在team的產(chǎn)品,我承擔(dān)了什么職責(zé)。

  2. 開放式問(wèn)題。如何設(shè)計(jì)一個(gè)rpc框架。

  3. 開放式問(wèn)題。如何設(shè)計(jì)一個(gè)服務(wù)注冊(cè)中心。

  4. 集合類源碼。HashMap是如何實(shí)現(xiàn)的,擴(kuò)容的過(guò)程,為什么要擴(kuò)容為2倍。HashMap中的鏈表替換為數(shù)組可以嗎?時(shí)間復(fù)雜度相同嗎?一致性哈希算法

  5. 集合類源碼。線程安全的HashMap是什么?(HashTable和ConcurrentHashMap)ConcurrentHashMap是如何實(shí)現(xiàn)的?(Java7分段鎖和Java8的CAS+Lock)和HashTable相比有什么優(yōu)勢(shì)?

  6. 紅黑樹的結(jié)構(gòu),時(shí)間復(fù)雜度是多少,如何計(jì)算的

  7. 什么是CAS操作,如何實(shí)現(xiàn)一個(gè)自定義鎖

參考我的文章:Chapter 5 Java中的鎖(一)Chapter 5 Java中的鎖(二)

  1. 數(shù)據(jù)庫(kù)設(shè)計(jì)。有一張很大的order表,如何設(shè)計(jì)能夠提升查詢效率(同時(shí)滿足根據(jù)買家id和賣家id查詢)?

二面也同樣是一小時(shí)左右,面試過(guò)程還算順利。只是當(dāng)時(shí)我在廈門鼓浪嶼的一家小餐館吃晚飯,周圍的嘈雜和悶熱使我很煩躁,感覺(jué)面試官態(tài)度有些傲慢。。。ps.一面二面結(jié)束后面試官都各種暗示我要瘋狂加班能不能接受blabla。。。

三面(電話面試一個(gè)半小時(shí))

二面結(jié)束后的第三天,就收到了現(xiàn)場(chǎng)三面的通知。然而我還在廈門旅行,因此改為了電話面試。
三面是一個(gè)大Boss,因此面試的問(wèn)題都更考察一些分析問(wèn)題的能力。

  1. 介紹一下你工作一年學(xué)習(xí)到什么?所在項(xiàng)目的架構(gòu)是什么樣的?UI/UX設(shè)計(jì)有哪些規(guī)范(由于我說(shuō)我學(xué)到了一些UI/UX設(shè)計(jì)方法,因此面試官就問(wèn)了)?

  2. 數(shù)據(jù)隔離級(jí)別,臟讀幻讀。

具體參考我的這篇文章:數(shù)據(jù)庫(kù)復(fù)習(xí)

  1. 線程池原理。

具體參考我的這篇文章:Chapter 9 Java中的線程池

  1. Synchronized的實(shí)現(xiàn),鎖的升級(jí)過(guò)程。

具體參考我的這篇文章:Chapter 2 Java并發(fā)機(jī)制的底層實(shí)現(xiàn)原理

  1. K8s的作用,K8s的底層架構(gòu)。

具體參考我的K8s文集:Kubernetes從入門到實(shí)踐

  1. 對(duì)我業(yè)余時(shí)間做的一些項(xiàng)目做了介紹。

  2. 你覺(jué)得加入阿里你能給阿里帶來(lái)什么?

  3. 進(jìn)入阿里你需要忍受很多困難,需要迎難而上,如果績(jī)效考評(píng)拿到差評(píng),你會(huì)怎么辦?

三面總的來(lái)說(shuō)也還算順利,面試官也算和藹。

總結(jié)

整個(gè)流程從一面到三面結(jié)束大約持續(xù)了10天左右??偟膩?lái)說(shuō),問(wèn)題都是預(yù)期范圍內(nèi)的,雖然面試過(guò)程中問(wèn)到了一些分布式相關(guān)問(wèn)題,我都沒(méi)有任何經(jīng)驗(yàn),這時(shí)候不要放棄,主動(dòng)說(shuō)出你的思路,然后在面試官的誘導(dǎo)下,相信你能說(shuō)出屬于的答案。

最后,是我總結(jié)的一些面試Java后臺(tái)工程師必須要掌握的知識(shí)點(diǎn)。相信這些知識(shí)點(diǎn)都掌握了,就是一名入門的Java工程師了!

1. 集合類源碼

  • ArrayList:內(nèi)部數(shù)據(jù)結(jié)構(gòu),數(shù)組擴(kuò)容機(jī)制
  • LinkedList:內(nèi)部數(shù)據(jù)結(jié)構(gòu),為什么使用雙向鏈表
  • HashMap:內(nèi)部數(shù)據(jù)結(jié)構(gòu),put方法的完整流程,擴(kuò)容機(jī)制
  • LikedHashMap:內(nèi)部數(shù)據(jù)結(jié)構(gòu),如何實(shí)現(xiàn)一個(gè)Cache
  • TreeMap:內(nèi)部數(shù)據(jù)結(jié)構(gòu),時(shí)間復(fù)雜度
  • CurrentHashMap:內(nèi)部數(shù)據(jù)結(jié)構(gòu),Java7分段鎖,Java8 CAS+Synchronized

2. Java基礎(chǔ)

3. JVM基礎(chǔ)(參考我的文集:《深入理解Java虛擬機(jī)》

4. 并發(fā)編程基礎(chǔ)(參考我的文集:《Java 并發(fā)編程的藝術(shù)》《Java Concurrency in Practice》

5. 數(shù)據(jù)庫(kù)基礎(chǔ)

6. 網(wǎng)絡(luò)基礎(chǔ)

7. 常見設(shè)計(jì)模式

  • 裝飾者,模板方法,策略,工廠,狀態(tài)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容