阿里巴巴Java崗面試題分享
1.HashMap 的內部結構?內部原理?和 HashTable 的區別,假如發?了 hash 碰撞,如何設計能讓遍歷效率??
2.講一講講講 ConcurrentHashMap吧。
3.講一下JVM虛擬機內存結構,以及它們的作?。
4.講講JVM的類加載過程&&雙親委派模型。
5.談談Java的垃圾回收算法。
6.談談Java垃圾回收的觸發條件。
7.synchronized和Lock的區別。
8.volatile的作?,為什么會出現變量讀取不?致的情況,與 synchronized 的區別?
9.++i 在多線程環境下是否存在問題,怎么解決?
10.講一講Thread.sleep() 和 Thread.yield() 區別?
11.講講常?的容器類?
12.如何去除 ArrayList 的重復元素?
- 直接采? HashSet 即可。作為它的參數,然后再 addAll。但這種?式不能保證原來的順序,如果要求順序,可以使? LinkedHashSet 即可。
13.講講 Java 的泛型擦除,泛型主要是為了解決什么問題?如何?泛型做 Json 的解析的?
14.談談 Java 的 Error 和 Exception 的區別聯系。
- Error 和 Exception 均集成? Throwable,但 Error ?般指的是和虛擬機相關的問題,?如系統崩潰,虛擬機錯誤,OOM 等,遇到這樣的錯誤,程序應該被終?。? Exception 表示程序可以處理的異常,可以捕獲并且可能恢復。
15.說一下軟引?和弱引?的區別?
16.成員變量和靜態?法可以被重寫么?重寫的規則是怎樣的?
17.內部類訪問局部變量的時候,為什么變量必須加上fifinal修飾符?
- 因為?命周期不同。
18.什么情況會造成內存泄漏?
19.什么是線程死鎖,如何解決?
20.十億條淘寶購買記錄,怎么獲取出現最多的前十個 ?
- 這是一道典型的有限內存的海量數據處理的題目。一般這類題目的解答無非是以下幾種:
- 分治,hash映射,堆排序,雙層桶劃分,Bloom Filter,bitmap,數據庫索引,mapreduce等。
- 具體情形都有很多不同的方案。這類題目可以到網上搜索一下,了解下套路,后面就基本都會了。
21.說一下Innodb和MySIAM的區別
22.說一下jvm內存模型,介紹一下你了解的垃圾收集器
- 其實并沒有jvm內存模型的概念。應該是Java內存模型或者jvm內存結構,這里面試者一定要聽清楚問的是哪個,再回答。
23.如何訪問鏈表中間節點
- 對于這個問題,我們首先能夠想到的就是先遍歷一遍整個的鏈表,然后計算出鏈表的長度,進而遍歷第二遍找出中間位置的數據。這種方式非常簡單。
- 若題目要求只能遍歷一次鏈表,那又當如何解決問題?
- 可以采取建立兩個指針,一個指針一次遍歷兩個節點,另一個節點一次遍歷一個節點,當快指針遍歷到空節點時,慢指針指向的位置為鏈表的中間位置,這種解決問題的方法稱為快慢指針方法。
23.HR問
- 從技術角度來說,你覺得你跟前同事比怎么樣?
- 說一下自己的個人優勢。
- 工作中覺得哪方面欠缺?
- 為什么想來阿里?阿里的什么方面吸引了你?
結尾
這不止是一份面試清單,更是一種”被期望的責任“,因為有無數個待面試者,希望從這篇文章中,找出通往期望公司的”鑰匙“,所以上面每道選題都是結合我自身的經驗于千萬個面試題中經過艱辛的兩周,一個題一個題篩選出來再次對好答案和格式做出來的,面試的答案也是再三斟酌,深怕誤人子弟是小,影響他人仕途才是大過,也希望您能把這篇文章分享給更多的朋友,讓他幫助更多的人,幫助他人,快樂自己,最后,感謝您的閱讀。
資料領取方式:戳這里免費獲取
,最后,感謝您的閱讀。
資料領取方式:戳這里免費獲取
由于細節內容實在太多啦,在這里我花了兩周的時間把這些答案整理成一份文檔了,在這里只把部分知識點截圖出來粗略的介紹,每個小節點里面都有更細化的內容!