前言:阿里其實是我想去的地方,昨天offer call了。部門是新零售。許願offer。
其實春招我基本就結束了,就面了三個地方:阿里,騰訊,美團。騰訊和美團目前都拿到了Offer,阿里還在等待。縱觀所有的面試中,其實感覺對於我最大幫助的有兩個,第一就是算法能力,這個讓我在筆試還是面試手撕代碼都很輕鬆,基本上沒有碰到難題,都是一眼秒。第二就是實習經歷,在字節學到了很多東西,見識了很多新技術。其他公司簡歷也投了,有的也邀請筆試,比如pdd,快手。這個還沒開始,後面佛系隨緣了。有空就參加,沒空就g了。
1.一面。
(1)自我介紹
(2)聊聊項目中的難點?
(3)你們服務中的qps大概是多少?(這個其實還是挺大的,有幾千萬)
(4)怎麼解決的高併發?(從負載均衡到存儲說了一遍)
(5)剛纔聽你說了後端存儲是MySQL+Redis。說說MySQL?
(6)MySQL主從同步怎麼實現的?
(7)MySQL索引?
(8)修改主鍵會有什麼影響?
(9)Redis雪崩/擊穿/穿透的概念?
(10)怎麼解決這些問題?
(11)能說說Redis常用的架構嗎?
(12)分佈式緩存一致性知道嗎?
(13)一致性Hash算法說說?
(14)操作系統瞭解嗎
(15)能說說死鎖嗎
(16)死鎖的解決?(從死鎖的產生條件,預防,解除等)
(17)剛纔聽你說了銀行家算法,能說說這個算法嗎
(18)有什麼想問我的?
2.二面
(1)自我介紹
(2)看你簡歷上寫了瞭解Kafka,Rocket MQ ,nsq等,能說說這些嗎?
(3)說說你們項目上消息隊列的選型?
(4)Kafka高吞吐的原因?
(5)Kafka 用於流式計算做過嗎?
(6)Rocket MQ爲什麼經常被用於在線業務?
(7)剛纔聽你說了tag過濾,能說說這是個什麼東西嗎?
(8)你們爲什麼要從nsq遷移到Rocket MQ?(這個我咋知道,公司推得大家都得遷移。。。。,但是當時幸虧有大佬來講了講,我聽了一下,說了幾個重要的點,主要是nsq的雙機房容災這些)
(9)多線程瞭解嗎?
(10)說說synchronized關鍵字?
(11)wait/sleep的區別?
(12)nitify/notifyall 的區別?
(13)線程的創建方式?
(14)callable 的優點?
(15)future 接口用過嗎?
(16)線程池有幾種?
(17)你平時用的哪一種?
(18)說說常用的拒絕策略?
(19)鎖知道嗎?
(20)自旋鎖是什麼?(這個最後還說了一下自適應自旋鎖)
(21)樂觀鎖在JDK哪裏有?(ConCurrentHashMap裏面有)
(22)JAVA的GC?
(23)GC算法/垃圾回收器/分代回收
(24)頻繁Full GC怎麼處理?
(25)Linux 瞭解嗎?
(26)IO模型說說?
(27)多路複用怎麼實現的?
(28)epoll 一定比select/poll 高效嗎?(不一定,具體要考活躍的連接數量)
(29)查看當前cpu的狀況的命令?(top 就知道這一個)
(30)查看tcp端口?(netstat -t )
(31)微服務瞭解嗎?
(32)服務註冊發現是什麼意思?
(33)熔斷的概念能說說嗎?
(34)能說說常見的熔斷算法嗎(說了一個基於水滴漏斗的算法)
(35)有什麼想問我的?
二面說實話,身體被掏空。幾乎把我知道的都問了一遍。感覺就是在探底的。然後面完沒有一個小時,查了一下就過了。
3.筆試。
面完又被拉去做了筆試,兩道編程題。
(1)N個人選出i個組成一隊,再從這i個選出一個隊長,有多少種方案?這個題很簡單。抽象完就是這個:
這個求和很簡單,答案是:
至於爲啥,簡單推理一下,考慮二項式:
對這個二項式求導,然後就會發現結果了。最後令x=1就是答案。這個推到我當時直接在腦子裏完成的,前後沒有到30秒。這個題需要用到快速冪,大概3分鐘就秒了第一題。
(2)一個搜索+DP。我寫了一個bfs+dfs+dp 。寫了100多行勉強AC.
4.代碼評測
本來以爲筆試完了就沒了,然後又要部門代碼評測。四個題。兩個算法題我已經記不清楚了,因爲很簡單。還有兩個JAVA多線程。
(1)用兩個線程交替打印1-100裏面的數字,一個奇數一個偶數。
(2)寫個簡單的多線程網絡程序,這個寫的比較簡答,寫的是基於TCP的同步阻塞搞法,最後又說了可以用JDK的NIO框架或者封裝好的Netty可以高效實現。
5.三面
(1)自我介紹
(2)學校裏幹了啥?
(3)JAVA 學了多少?
(4)框架了解過嗎?
(5)能說說Spring裏的IOC嗎?
(6)依賴注入是什麼意思?
(7)AOP呢?
(8)Spring AOP 的底層實現?
(9)Proxy 類裏面的Invoke是什麼意思?
(10)說說你對回調的理解?
(11)Spring Boot 也瞭解過嗎?
(12)說說它和Spring的區別(幸虧,因爲我真的沒用過,只知道區別)
(13)網絡了嗎
(14)說說TCP的三次握手?
(15)四次揮手呢?
(16)爲什麼要有TIME_WAIT?
(17)包會在鏈路裏面一直死循環嗎?(不會,有個ttl)
(18)說說你在字節的項目吧
(19)服務端推送你們是怎麼實現的?(說了個WebSocket的搞法,其實我沒怎麼做這個)
(20)你們的數據量多大?
(21)怎麼提高吞吐量?
(22)剛聽你說了Faas?能說說這是什麼嗎?
(23)說說IAAS,PAAS,SAAS?
(24)你怎麼看待Faas這個東西?和之前的有什麼改進?
(25)剛纔聽你說你的Faas上游延時其實很高,怎麼解決的。(這個瞎說了幾個點,其實我一般都是屏蔽掉延時報警。。。。)
(26)有什麼想問我的?
三面其實聊得挺舒服的,面完查了一下也直接過了。
6.四面
(1)自我介紹
(2)說說你在字節的項目
(3)權限控制怎麼做的?
到了這裏,我介紹了一下xxx,然後xxx,最後xxx。
面試官提了一個問題,他這個問題在我看來不是問題,因爲不可能出現這種情況。我沒get到他的點,就一直bbll這個東西,有10多分鐘吧。。。。。最後不了了之。因爲我都告訴他了,這種情況不會出現,就是出現在中間件部分就被攔截了,不會打到我這裏。他硬要說不安全,問我怎麼解決,我就說我再加一層鑑權邏輯。。。。然後我倆bbll個沒完了。
(4)好吧,其實你沒講清楚。換個話題。JAVA學的怎麼樣?
(5)說說你對線程的理解。
(6)多個線程之間的同步?
(7)synchorized 和Lock的區別
(8)能說一下JVM的synchronized支持嗎
(9)集合類用過多少?
(10)HashMap 的實現?
(12)線程安全嗎?不安全說一下哪些安全?
(13)HashTable 和HashMap 的區別?
(14)設計模式用過哪些?
(15)單例會在哪些應用場景中使用?
(16)單例的線程安全怎麼保證?
(17)觀察者模式是怎麼實現的?
(18)說說消息隊列的應用場景。
(19)Rocket MQ 的特點?
(20)爲什麼常用與在線業務(低延時)
(21)平時看過那些書?
(22)能實習多長時間,什麼時候開始?
(23)有什麼想問我的?
四面面完感覺沒了。。。。因爲最後問了一下面試官比較看重面試中的那些點,他說對問題的理解,看看能不能解釋清楚,這不是擺明了說我有些問題沒說明白嗎?感覺gg
過了幾天,查了一下還是過了。
7.HR面。
聊了很多,從高中聊到大學以及未來。爲啥學計算機?爲啥去這個大學?好吧,還算行。
8.昨天 Offer Call 了。
阿里面試算是結束了,看一下還是挺不容易的。