更新時(shí)間:2024-04-01 17:10:59作者:佚名
前兩天,我收到了阿里巴巴的實(shí)習(xí)offer。 從前輩推薦到面試再到拿到最終offer,我經(jīng)歷了4個(gè)技術(shù)環(huán)節(jié)、跨級(jí)面試和HR面試。 經(jīng)過(guò)漫長(zhǎng)的等待和幾次近乎折磨的面試,我終于拿到了實(shí)習(xí)offer。
自我介紹
我來(lái)自西南地區(qū)的一所非本科學(xué)校,專業(yè)是物聯(lián)網(wǎng)工程。 我的專業(yè)與Java開發(fā)關(guān)系不大,在學(xué)校也只教過(guò)一些簡(jiǎn)單的編程課。 其余的編程相關(guān)知識(shí)都是我利用業(yè)余時(shí)間在實(shí)驗(yàn)室自學(xué)和教授的。 我不是技術(shù)大師。 我做過(guò)很多項(xiàng)目,但大部分都是我實(shí)踐過(guò)的小項(xiàng)目或者一些有趣的小項(xiàng)目。 我從來(lái)沒(méi)有接觸過(guò)真正的大項(xiàng)目。 閑暇時(shí),我喜歡瀏覽微信公眾號(hào)、簡(jiǎn)書、掘金等平臺(tái),閱讀技術(shù)文章。 我也偶爾寫一些文章。 我在學(xué)校期間花了很多時(shí)間在實(shí)驗(yàn)室,我喜歡編寫代碼和克服問(wèn)題的過(guò)程。
面試準(zhǔn)備
?首先,在準(zhǔn)備校招之前本科雙非是什么意思,一定要做好充分的準(zhǔn)備。 長(zhǎng)期的是你的基本編程能力和對(duì)各個(gè)知識(shí)點(diǎn)的理解。 短期的就是突破自己不會(huì)的知識(shí)點(diǎn)。
我在投簡(jiǎn)歷前就開始準(zhǔn)備一個(gè)半月。 第一步是溫習(xí) leetcode。 算法水平還是比較重要的,阿里巴巴也有筆試成績(jī)。 面試的時(shí)候也會(huì)問(wèn)一些筆試題,難度不是太大;
然后我需要找更多的面試,看看面試官在面試的時(shí)候問(wèn)了我的學(xué)長(zhǎng)什么問(wèn)題。 如果你遇到一些你知道該怎么做的事情,請(qǐng)嘗試自己回答。 遇到不知道怎么做的事情,就去研究;
不過(guò)網(wǎng)上找到的面試經(jīng)歷可能是因?yàn)槊總€(gè)人的學(xué)習(xí)過(guò)程不一樣。 個(gè)人感覺(jué)找到類似面試經(jīng)歷的概率不是很高。 我正好在H大學(xué)的知識(shí)星球,所以向H大學(xué)請(qǐng)教一些簡(jiǎn)歷指導(dǎo)(不是廣告方面的,真心感謝H大學(xué));
最后,我找到了一份非常完整的 Java 面試問(wèn)題和答案文檔,可以用作復(fù)習(xí)材料。 (Java面試指南及核心知識(shí)指南復(fù)習(xí))
面試過(guò)程
第一次技術(shù)面試(60 分鐘)
告訴我你用的是什么類型的線程池以及自定義線程池的參數(shù)是什么。 講一下線程池的執(zhí)行過(guò)程。 您的項(xiàng)目中核心線程數(shù)、最大線程數(shù)和隊(duì)列大小是如何定義的? 的? 為什么這樣定義呢? (我的導(dǎo)師告訴我,這道題是加分項(xiàng)。) 項(xiàng)目中如何防止超賣? 下單的SQL語(yǔ)句怎么寫? (考察MySQL的樂(lè)觀鎖)如果有用戶反饋整個(gè)系統(tǒng)的反饋比較慢,你們是如何排查和解決問(wèn)題的? 系統(tǒng)響應(yīng)慢的原因有哪些? 算法問(wèn)題:給定一個(gè)無(wú)序數(shù)組和一個(gè)目標(biāo)值,找到數(shù)組中兩個(gè)數(shù)字之和等于目標(biāo)值的所有組合,并指出其時(shí)間復(fù)雜度。 (一道很簡(jiǎn)單的算法題,leetcode簡(jiǎn)單難度)你了解JVM內(nèi)存模型了嗎? 我們來(lái)說(shuō)說(shuō)哪些是線程獨(dú)占的,哪些是線程間共享的? 下面我們?cè)敿?xì)講一下Java堆的分區(qū),它們的比例,如果比例增大會(huì)有什么后果? 我們來(lái)談?wù)?JVM 的 GC 算法以及為什么“標(biāo)記排序”方法更好。 它能解決什么樣的問(wèn)題? 你了解過(guò)Java類加載機(jī)制嗎? 有哪些類型的類加載器? 如果想查看線上運(yùn)行的服務(wù)的GC日志,需要輸入什么命令? 你了解過(guò)HashMap嗎? 我們先來(lái)說(shuō)說(shuō)HashMap的原理。 如果兩個(gè)對(duì)象的hashCode相同,那么它們一定是同一個(gè)對(duì)象嗎? 如果它們是兩個(gè)相等的對(duì)象,那么它們的hashCode是否相同? 如何解決哈希沖突? HashMap是線程安全的嗎? 如何將HashMap變成線程安全的類? 我們先來(lái)說(shuō)說(shuō)MySQL數(shù)據(jù)庫(kù)有哪些數(shù)據(jù)庫(kù)引擎? InnoDB的索引的數(shù)據(jù)結(jié)構(gòu)是怎樣的? 我們來(lái)談?wù)勊脑怼?數(shù)據(jù)庫(kù)事務(wù)級(jí)別及其解決的問(wèn)題。 請(qǐng)舉例說(shuō)明MySQL默認(rèn)的事務(wù)級(jí)別是多少? 如何在MySQL中啟用慢查詢? 說(shuō)說(shuō)Spring主要包含哪些模塊? 說(shuō)說(shuō)你對(duì)Spring的IOC容器和啟動(dòng)流程的理解。 你了解過(guò)RPC框架或者分布式的東西嗎? (后來(lái)我讓面試官測(cè)試了我對(duì)新技術(shù)的理解以及對(duì)互聯(lián)網(wǎng)發(fā)展的關(guān)注)告訴我你讀過(guò)的關(guān)于Java的書。
第二次技術(shù)面試(30分鐘)
介紹一下你做過(guò)的你認(rèn)為最好的項(xiàng)目; 談?wù)勀愕捻?xiàng)目中的技術(shù)困難和挑戰(zhàn)。 如何解決商場(chǎng)項(xiàng)目的超賣和欠賣問(wèn)題? 我們先來(lái)說(shuō)說(shuō)什么是冪等Redis,以及它是如何保證高可用的。 你知道Redis的哨兵模式嗎? 您認(rèn)為使用Redis有什么缺點(diǎn)嗎? 你如何進(jìn)行壓力測(cè)試? 壓力測(cè)試的數(shù)據(jù)是什么? 線城的參數(shù)是什么? 核心線程數(shù)和最大線程數(shù)有什么區(qū)別? 常見的拒絕策略有哪些?介紹SpringBoot的特點(diǎn),講解什么是單例模式,什么是饑餓模式,懶惰模式,使用懶惰模式的注意事項(xiàng)以及如何解決,講解 volatile 關(guān)鍵字的作用和原理本科雙非是什么意思,講解自旋鎖以及一些常見的自旋鎖。 下面講一下數(shù)據(jù)庫(kù)的左外連接數(shù)據(jù)庫(kù)索引的實(shí)現(xiàn)以及優(yōu)化數(shù)據(jù)庫(kù)索引的數(shù)據(jù)結(jié)構(gòu)。
第三次技術(shù)面試(25分鐘)
如何解決商場(chǎng)項(xiàng)目的超賣和欠賣問(wèn)題? 開發(fā)項(xiàng)目過(guò)程中遇到了哪些問(wèn)題? Redis與數(shù)據(jù)庫(kù)同步時(shí)出現(xiàn)問(wèn)題如何解決? 我們先來(lái)說(shuō)說(shuō)Java中線程的狀態(tài)。 線程阻塞和等待有什么區(qū)別? 介紹一些Java鎖機(jī)制。 你了解過(guò)哪些類型的鎖? 為什么Object中有wait和notify方法? 課下的分布式和RPC框架你了解了嗎? Redis的線程模型是怎樣的(考察NIO) Redis實(shí)現(xiàn)的消息隊(duì)列是如何保證消息不丟失的? 介紹一下堆排序是如何實(shí)現(xiàn)的。 介紹TCP/IP協(xié)議如何保證消息不丟失。 TCP/IP協(xié)議為了可靠傳輸做了哪些優(yōu)化(擁塞控制和流量控制)
第四次技術(shù)面試(15分鐘)
告訴我你提交的文章是關(guān)于什么的以及如何解決消息隊(duì)列超賣的問(wèn)題? 訂購(gòu)流程是如何設(shè)計(jì)的? 介紹雪花算法。 怎么理解分布呢? 分布式系統(tǒng)之間如何通信? 生產(chǎn)者和消費(fèi)者模型如何運(yùn)作? Java創(chuàng)建線程的代碼場(chǎng)景:給定一個(gè)字符串,統(tǒng)計(jì)每個(gè)大寫字母出現(xiàn)的次數(shù),按數(shù)字排序,從小到大輸出字母和出現(xiàn)次數(shù)。
交叉采訪(30分鐘)
您在校學(xué)習(xí)期間,哪些課程可能取得了較好的成績(jī),為什么您在這些課程中取得了較好的成績(jī)? 您學(xué)習(xí) Java 有多久了? 你是如何學(xué)習(xí)Java的? 你見過(guò)哪些開源框架源碼? 如何查看開源框架的源碼? 介紹一個(gè)你參與較多或者難度較大的項(xiàng)目。 你們團(tuán)隊(duì)開發(fā)項(xiàng)目的時(shí)候,有沒(méi)有遇到什么技術(shù)問(wèn)題大家一起解決的? 這個(gè)項(xiàng)目有借鑒其他成熟項(xiàng)目的經(jīng)驗(yàn)嗎? 告訴我們您的項(xiàng)目的要求和指標(biāo)。 您的項(xiàng)目中線程池隊(duì)列容量大約是多少? 它是如何確定的? 項(xiàng)目中的某些解決方案是個(gè)人想出的還是團(tuán)隊(duì)討論的結(jié)果? 如果再讓你建設(shè)一個(gè)商場(chǎng)系統(tǒng),你會(huì)做哪些技術(shù)選型項(xiàng)目? 采取了哪些安全措施?您將如何設(shè)計(jì)淘寶會(huì)員系統(tǒng)? 未來(lái)的方向是什么?采訪總結(jié)
每次面試都感覺(jué)像是一種折磨。 雖然之前看過(guò)很多阿里的面試,都說(shuō)阿里的面試官會(huì)抓住某個(gè)點(diǎn),一直問(wèn)到你不知道為止。 但當(dāng)?shù)谝淮谓?jīng)歷的時(shí)候,有時(shí)候,我還是覺(jué)得很折磨。
但最后的結(jié)果還是好的。 至少我收到了我想要的offer,而且在疫情期間的環(huán)境不好的情況下也能找到一份實(shí)習(xí)工作。
整個(gè)學(xué)習(xí)過(guò)程和面試過(guò)程,我最大的感悟有四點(diǎn):