阿里面試經驗貼

(阿里巴巴供應鏈部門--Java實習崗)

歷時長達一小時二十分鐘的面試終於結束了,儘管飢寒交迫,還是奮筆疾書,寫下這篇文章共勉。目的很簡單,一是對自己成長曆程的記錄,二是分享一些經驗給大家,希望其中的某一點能起到哪怕一丁點的作用。

首先,面試官開場自然就是讓自我介紹。在這裏要注意說話的語速、語調、以及自己想要突出表達的點,可以把自認爲的閃光點展示出來,比如實習經歷,比如英語水平等。

然後,開啓技術棧的面試。

Java技術棧

由於我在自我介紹時提到應聘的是Java崗,因此面試官直接拋出問題:“你對Java這門語言瞭解的深度是多少”,“是否看過JDK的源碼”(當場傻眼...)。如果回答看過,好,進坑了,因爲面試官會繼續追問:“那來說一下都看過哪部分”(大型懵逼現場)。卡殼了,好,引導來了,“比如Java的集合有看過嗎”,於是大膽引出HashMap。好,又進坑了,“那咱們聊一下HashMap,首先說一下它的原理吧,它是以一種什麼樣的數據結構來實現的”(劃重點!!!HashMap是幾乎所有面試官的最愛,沒有之一

(後面廢話不多說,儘量上乾貨)

1.HashMap的數據結構——引出Java7跟Java8的區別

2.在什麼情況下會做一個鏈表到紅黑樹的轉換

3.除了數據結構之外,Java8跟Java7在HashMap上還有什麼不同

4.擴容的過程,在什麼情況下會擴容

5.擴容機制中的capacity初始值爲什麼是16,可不可以自定義成15,爲什麼一定要是2的指數次方

6.簡單介紹一下hash算法,它的核心性能,或者說判斷一個hash算法好壞的指標是什麼,indexFor()函數的實現

7.HashMap爲了解決什麼問題?——引出哈希碰撞

8.介紹ConcurrentHashMap的數據結構

9.ConcurrentHashMap可以支持多少併發線程

10.ConcurrentHashMap屬於JOC下的一個類,對JOC這個包的瞭解

11.是否用過synchronized,之前是否碰到過併發問題,怎麼處理

12.在Java技術棧方面,有沒有比較擅長或者深入瞭解的點,是否從源碼上看過一些東西(此處再次提到源碼)

數據結構

1.介紹鏈表的數據結構;對一個鏈表,怎麼判斷它是否有環,以及對應的時間複雜度/空間複雜度

2.對時間複雜度/空間複雜度的理解(劃重點!!!必問,數據結構的精華

3.算法題:現在有100萬個十進制整數,找出其中最小的100個,給出方法,以及對應的時間複雜度/空間複雜度

4.算法題:有一個棋盤,假設這個棋盤由100個方格組成,每個方格都有一個權值,現在有一顆棋子在棋盤的左上角,要走到棋盤的右下角,並且每次只能往右或下方走,不能往回走,求使得最後所走過的路徑加權和最小,應該怎麼走

數據庫

1.對MySQL瞭解多少——引出必問知識點(劃重點!!!事務和索引

2.MySQL用的隔離級別是什麼,這個隔離級別下會出現什麼問題——引出數據庫的併發問題

3.MySQL使用這種隔離級別時,是如何解決幻讀問題的(這裏可以同步理解其他併發問題的解決原理)

4.MySQL的調優機制,主要是哪些方面的調優

5.在MySQL的InnoDB這個存儲引擎下,聚集索引(或者聚簇索引)和非聚集索引這兩個概念

6.MySQL中的索引是用什麼數據結構存儲的——此處應該引出B+樹

7.爲什麼通過索引查詢速度會更快一些——此處應該引出二叉樹算法

簡而言之,對於實習生和應屆生,如果沒有很厲害的實習經歷和科研成果,面試官關注的往往是技術棧層面掌握的深度,這是對一個應聘者在短時間內對其學習能力和未來發展的有效評判標準。

後續會持續更新,爭取把面試知識點整理成思維導圖。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章