?2021 阿里淘系 Java 面經(jīng),二面卒!
今天下午把 JavaGuide[1]上 MySQL 以及書單部分的內(nèi)容完善了一下。

晚上出去吃了飯,本來是想著寫寫水文,聊聊近期的生活。不過,看著很多小伙伴被各種面試毒打,我很難受啊,還是做點什么吧!

給小伙伴們分享兩個近期的面經(jīng),問的問題挺有代表性的,你們可以拿來自測一下!
參考答案我這里也沒有,也沒時間一個一個幫你們回答。你們可以到 JavaGuide 上找,JavaGuide 上面找不到的,自己搜一下、看看書。
阿里淘系 Java(大三實習(xí))
一面
首先還是沒有自我介紹,直接是項目介紹,項目使用的什么技術(shù)棧,里面的一些難點。 項目中的大致流程,怎么去運行的。 項目中的容器使用到 MySQL,ES,MongoDB,Redis,這些都是干嘛?為什么要用他們(他們有什么好處?解決什么額問題?),項目中怎么使用的? 那么你們肯定使用到了索引對吧,詳細(xì)說說 mysql 索引吧? 你們建立索引有什么規(guī)則?怎么建立的?哪些地方使用到了索引?有什么好處?結(jié)合具體場景回答回答。 索引是 B+樹是吧?這個有什么優(yōu)點呢,為什么 MySQL 要使用 B+樹,不用別的呢?(這里我想問下大佬們,除了減少 io 次數(shù),局部性原理,穩(wěn)定,有序還有什么優(yōu)點呢?) 存儲引擎了解過嗎? 你使用過 MVC 是吧,具體說說是什么,為什么選擇這個,怎么封裝的,如何方便? MVC 是什么?三層架構(gòu)指什么?為什么使用三層架構(gòu),具體說說怎么松耦合的,舉例子? MVC 請求執(zhí)行流程 你說說為什么松耦合,你代碼中怎么實現(xiàn)松耦合?這樣為什么就能體現(xiàn)松耦合,是什么和什么之間的耦合? Spring 是什么?有什么優(yōu)點?IOC 具體講講,為什么交給 Spring 容器管理就會松耦合,你來具體說一說? HashMap 底層了解過吧?說說底層吧,數(shù)據(jù)結(jié)構(gòu)。 HashMap 查詢,刪除的時間復(fù)雜度。 保證線程安全,為什么推薦使用 ConcurrentHashMap,有什么特點。就只是使用數(shù)據(jù)結(jié)構(gòu) cas volatile 嗎?除了這些沒別的優(yōu)點了嗎? cas 為什么就比 synchronized 輕量,什么原因,synchronized 怎么調(diào)用到操作系統(tǒng)的?具體說說,操作系統(tǒng)消耗什么資源呢? Java 內(nèi)存模型,那怎么保證可見性?加鎖為什么就可以保證內(nèi)存屏障? 內(nèi)存屏障是什么?具體說說吧?內(nèi)存屏障為什么保障可見性?指令重排序?happen-before 原則了解么? 線程這邊在操作系統(tǒng)怎么體現(xiàn)的,解決什么問題?在單核 cpu 中線程起什么作用?為什么輕量? 單核 CPU 線程解決問題,多核 CPU 中解決什么問題? 怎么設(shè)置 CPU 最佳線程數(shù)? 操作系統(tǒng)內(nèi)存管理?分頁?置換算法?有去深入了解嗎? 線程池聊聊?怎么設(shè)置線程數(shù),什么時候最優(yōu),為什么這么設(shè)置? 好的我這邊已經(jīng)大致了解了,你還有什么想問的嗎?(我反問:部門干什么的,我表現(xiàn)怎么樣?)
二面
自我介紹 項目介紹,技術(shù)難點 看你項目使用到反射,談?wù)勀銓τ诜瓷涞睦斫?,你?項目中怎么使用的反射,有什么好處? 說說 jvm 吧?jvm 怎么樣你所了解的?(內(nèi)存結(jié)構(gòu),堆,垃圾收集 算法。垃圾收集器,各個特點) 類加載?雙親委派?你怎么能實現(xiàn)類加載機制?有什么需要考慮的嗎? 使用類加載機制能實現(xiàn)嗎?考慮什么問題? 說說 fullgc 你說說你的了解?jvm 觸發(fā) fullGC 老年代沒有減少可能是什么原因? 說說你使用的集合?底層了解多少? 說說 ArrayList 和 LinkedList 底層有什么區(qū)別?說說怎么刪除固定的位置的元素?有什么線程安全問題嗎?為什么會產(chǎn)生? 說說 HashMap 的底層原理?數(shù)據(jù)結(jié)構(gòu)?擴容? 說說 ConcurrentHashMap? 說說你的 MySQL 理解?有沒有寫過什么復(fù)雜的 SQL?使用什么優(yōu)化了嗎?你平時是如何優(yōu)化 SQL 的?如何查看 SQL 語句的執(zhí)行速度? 索引說一說?分庫分表? 說說 synchronized 和 volatile? 說說 url 從輸入到回車經(jīng)歷的過程?http tcp(三次握手,對應(yīng)的狀態(tài)) 說說 ARP 協(xié)議? 說說磁盤調(diào)度 算法?說說電梯 算法?說說掃描 算法? 說說 Java 的線程和操作系統(tǒng)的線程是不是一樣的?有什么區(qū)別? 說說你理解的線程?說說線程池?幾種方式?阿里巴巴開發(fā)手冊為什么推薦使用自定義線程池? 說說你的實習(xí)? 說說怎么創(chuàng)建線程?有幾種方式,為什么?有什么區(qū)別? 移位操作為什么快?從底層是二進制,補碼原碼真值回答底層的原理。反問:部門干什么的?我表現(xiàn)怎么樣?
二面之后,就沒有下文了。這次面試確實有點受到了打擊,業(yè)務(wù)場景確實我菜了。
攜程春招 Java 后端
一面
介紹下項目,熱點數(shù)據(jù)用 Redis 的什么數(shù)據(jù)結(jié)構(gòu)存儲? zset。你這個負(fù)載均衡算法中的加權(quán)輪訓(xùn)算法怎么實現(xiàn)的?Rpc 項目中客戶端調(diào)用服務(wù)的整個過程?怎么使用 Netty 進行通訊的?SpringBoot 常用注解? SpringBootApllication由哪些注解組成?由三個注解組成,其中有一個開啟自動配置的注解。說一下 volatile?volatile有內(nèi)存可見性和有序性,底層通過 lock 前綴的一個空指令實現(xiàn)。sleep和wait的區(qū)別?一個釋放鎖,一個不會,wait 可以無限阻塞,sleep 不能。了解哪些設(shè)計模式?寫一個雙重檢測的單例模式,為什么要加 synchronized?因為要考慮線程安全,加在類方法和普通方法有什么區(qū)別? 了解注解嗎?自己的項目使用到了自定義注解。注解怎么實現(xiàn)的?通過反射實現(xiàn)。反射中獲取 class 對象的三種方式?通過 object 類的 getClass 方法,類的 class 屬性,class 類的 forName 方法。 了解哪些排序算法,寫一個快排吧。
二面
詳細(xì)講解你的項目,細(xì)節(jié)與難點。項目中使用的序列器,protobuf 為什么快? Java 的 io 模型?bio,nio,aio。其中 nio 使用操作系統(tǒng)的 io 多路復(fù)用。io 多路復(fù)用的實現(xiàn)有哪些?select,poll,epoll。 寫一個多線程的題,線程 1 打印 a,線程 2 打印 b,線程 3 打印 c,要求順序打印出 abcabcabc。
反問,對自己有什么建議,按校招已經(jīng)到達(dá)標(biāo)準(zhǔn),由于時間問題沒法再深入了解項目,所以也沒有什么建議。
整體難度不是很大,不像大廠那樣死扣細(xì)節(jié)。最后求個 hr 面,不然真的要失業(yè)了。
HR 面
自我介紹 為什么不讀研究生了 工作地點有要求嗎 薪資要求 有過實習(xí)嗎 你這個項目的難點是什么 比較看中公司的哪些方面 有其他 offer 嗎,哪些公司還在流程中 過四六級嗎?多少分?等下發(fā)個英語測評有時間去做下,會根據(jù)測評結(jié)果安排后續(xù)的進程
反問,公司對應(yīng)屆生的培訓(xùn)機制,多長時間出結(jié)果。
參考資料
JavaGuide: https://github.com/Snailclimb/JavaGuide
歡迎加入我的星球,一個純 Java 面試交流圈子 !Ready!。目前星球已經(jīng)更新 3 個原創(chuàng)小冊:《Java面試進階指北》、《從零開始寫一個 RPC 框架》 、《程序員副業(yè)賺錢之路》。累計幫助 520+ 位球友提供了免費的簡歷修改服務(wù),回答了 500+ 個問題,產(chǎn)出了 1300+ 個主題。
推薦?? :1049天,100K!簡單復(fù)盤!
推薦?? :匯報一下2020的工作
推薦?? :Github掘金計劃:Github上的一些優(yōu)質(zhì)項目搜羅
評論
圖片
表情
