看了讀者阿里面經,總結了這幾個面試關鍵點

你好,我是yes。java

上週末寫文提到有一位讀者朋友拿到了有贊阿里 offer 來感謝的事兒,他說主要是看我、艾總、安琪拉的文章,哈哈夾在兩阿里P7之中的我瑟瑟發抖。mysql

今天他在艾總的公衆號上分享了他近兩個月的面經,再結合這兩個月有挺多人來找我說面試老被掛的狀況,來談談面試的幾個關鍵點。這幾點要是掌握了以後,基本上運氣不要太差,面試都是 ok 的。面試

你負責的項目

看了下他百世、光雲、來將來、大搜車、婚禮紀、銀泰、有贊、阿里的關於項目的面試題,我總結一下大體包含如下幾個方面:redis

  • 介紹下你最複雜的項目算法

  • 畫下項目的業務架構圖spring

  • 畫下項目數據流的流向sql

  • 多少個節點?數據庫

  • 項目 qps、數據量設計模式

以上幾個點須要重點把握,身爲項目開發你理應瞭解項目總體架構與數據流向,還有項目的峯值qps、平均qps、tps等,若是你不瞭解,側面反映你在現公司是邊緣人物,或者沒有本身主動去爭取、去了解、去爲了項目優化而作努力,沒有總覽全局,談何優化。緩存

還會問:

  • 爲何項目是這個架構

  • 說下你項目中比較優秀的點、最有成就感的點

  • 說下你項目線上遇到的問題、如何解決、其中最大挑戰是啥、有什麼思考?

以上幾個點主要考察你是否有自我思考,是否深刻研究或者質疑過當前的設計(而不是逆來順受)。負責的項目是否太過簡單,平平無奇?是否有排查線上問題的經驗,排的思路是否清晰,過後是否有總結覆盤等。

還會問:

  • 若是流量激增100倍,你認爲大家這個系統哪裏最早出現瓶頸?如何解決?

  • 或者問你負責的某個模塊流量激增100倍,你該如何設計?

以上仍是考察你是否有仔細思考過項目的架構,或者你本身的設計,看你是否能 hold 住更大的挑戰,也算隨機應變的能力。

還會問:

  • 項目中MQ應用場景

  • 項目中設計模式的使用

  • 項目中的開放封閉原則和自定義bean實現

  • 項目中秒單模塊的優化

以上這幾點是你誘惑面試官問你的。雖然說沒看過這位讀者的簡歷,可是從多家公司都問的狀況不難推測,簡歷裏面確定寫的利用MQ幹啥了,利用設計模式優化了什麼模塊、秒單模塊等。

因此刻意準備幾個點,寫在簡歷上,誘導面試官問,就像秒殺,你簡歷寫了負責一次秒殺活動,你以爲面試官會不會問?

即便這個秒殺活動不是你負責的,可是你爲了在簡歷上寫這點,去充分準備了,去請教負責的同事、查閱各類資料,搞清其中的複雜點,能 hold 住面試官的連環問,那這個活動不就是你本身作的?

好好準備準備,你真實作沒作過不重要,你把全部原理和細節夠能說出來就能證實你本身了,因此簡歷得準備幾個點,比較容易體現你比較牛皮的點,給面試官挖坑,讓他跳。

關於項目,上面說到的都準備了,就很穩,若是上面的題目你還答不出來,趁面試前好好理一理,理完以後找幾個公司,練練手,而後再去你心儀的公司面試,由於有時候你本身說,和麪試官問你的時候,回答出來的答案是不同的,因此須要實戰一下。

數據庫

主要是 MySQL,這個和項目同樣,必問。

第一大類:

  • MySQL索引實現原理,爲何這麼快

  • 索引數據結構,爲何不用B樹、紅黑樹之類的

  • 數據庫事務ACID是如何實現的

  • MySQL的架構圖

  • MySQL是如何排序的,排序算法

  • between  and 和 in 的區別

  • 如何預防死鎖,OS如何作的?MySQL如何作的

  • 一樣一條查詢語句,有時候快有時候慢,什麼緣由致使的?

這類屬於原理類問題,這個系列我在更新中-四本書、一個專欄,揉成這篇MySQL,如今還屬於總覽階段,也就是粗略的把關鍵知識點先過一遍,而後以後詳細深刻。出發點是想先連成面,再各個擊破。

第二類:

  • 線上SQL調優經驗,調優的慣用思路

  • 線上MySQL CPU報警了,如何快速鎖定問題而且解決?

這是實戰問題了,若是你沒調優過 SQL,沒有處理過線上的 SQL 問題,能夠去網上找些例子,這個是必定要準備的。

你也能夠本身根據當前項目的表結構,本身給本身提一個複雜的查詢需求,本身寫寫 SQL ,而後一步步優化,這不就是線上調優嗎?

通常的調優就是爲了用上索引,有一些排序須要的內存過大,得用到磁盤,有些關聯的表太多,有些buffer配置太小等等,都是調優的方面,還有業務調優的,就是把這個需求砍了,不是產品要啥就作啥,須要評估實現難度的。

第三類:

  • 設計一個商品類目的數據庫存儲,查詢的時間複雜度說一下。如何作優化?

這種屬於數據庫設計類問題了,若是你沒有設計過數據庫,能夠本身寫一個開源項目,或者跟着寫一個開源項目來練練手。

或者仍是本身根據當前項目的表結構,假設來了一個新需求,須要加新的功能模塊,須要加表,你本身思考下看如何設計?

消息隊列

  • MQ選型,爲何用這個MQ

  • 業務上如何保證消息不丟失?

  • 業務上如何保證消息不重複?

  • 業務上如何處理消息堆積?

  • 業務上如何保持消息有序性?

  • 消息寫入失敗這麼辦?

  • RocketMQ 爲何那麼快?

  • 事務消息

  • 讓你設計一個MQ你如何設計?

讀者遇到的就是這幾個題,MQ不外乎也就這幾個題,那這幾個題呢,很巧我都寫了,看我寫的這幾篇,夠了。

Redis

  • Redis 掛了怎麼解決?

  • 分佈式鎖,爲何使用Redisson?

  • redis 持久化

  • Redis 爲何那麼快?

  • 如何保證 本地緩存 和 redis 還有mysql 的數據一致性

  • redis 的緩存穿透如何解決?

  • 布隆過濾器 如何實現的?

  • 項目中redis用來作什麼了?

  • 熱 key 的問題處理。

關於緩存基本上不外乎問的都是以上幾點,注重點放在分佈式鎖的實現和問題,緩存一致性,本地緩存兜底等操做,其餘相似 redis 的一些實現機制,單線程的執行狀況,想詳細瞭解的話,建議看書以後再看下源碼。

我以前分享過黃老師的基於 Redis 3.0的有中文註釋的源碼,公衆號後臺回覆 redis 便可得到。

Java基礎

  • 線程池問題

  • 線程OOM排查

  • GC

  • HashMap、ConcurrentHashMap

差很少就是以上幾點,關於線程池的,看我這篇就差很少了:

鎖的話,看這幾篇:

GC,看這幾篇:

筆試

  • 實現一個多叉樹,遍歷打印

  • 手寫單例

  • 實現一個雙向鏈表的insert,find,delete的方法

看了下,好像就兩家公司要求筆試,不過這方面仍是得準備的,基本題目的仍是得刷,好比劍指offer的。

其餘問題

  • spring、springboot

  • dubbo + zk

從上面面經來看,spring 和 dubbo 問的不是不少,就個別幾個問題,不過平時仍是得認真準備,主要看你簡歷突出哪些點,你突出 spring 確定問你 spring。

仍是不少零散的問題,我就不貼了,這種貼不完的。抓住上面的主線,關鍵點:項目、數據庫、消息隊列、緩存、框架。

社招基本上關注這些點,還有一些設計類題,像以前有讀者問我如何設計虛擬券、短鏈系統,等等。

主線若是抓住了、掌握了,面試就是玩兒。

對了,這位讀者三年經驗。

最後

看了面經有感,粗略地寫了這篇,但願對那些面試常常被掛的同窗有所幫助,找到主線去學就完事兒啦!

捋下來,好多面試問題個人文章都寫到了,以後再把沒寫到的填充上去,嘿嘿。

我還有個面試交流羣,交流面經,有興趣的能夠加我微信,備註面試,我拉你進羣。

個人一對一解答服務持續開放,不走知識星球直接私聊我。

詳細面經能夠看艾總的這篇


歡迎關注個人公衆號【yes的練級攻略】,更多硬核文章等你來讀。

從一點點到億點點,咱們下篇見。

本文分享自微信公衆號 - yes的練級攻略(yes_java)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。