螞蟻金服面試題庫(轉載)
https://blog.csdn.net/current_person/article/details/78144886
前言
作為程式設計師,免不了要經歷面試這關,雖然平時工作勤勤懇懇,但是面試上面未必能展示的出來,比如平時都是做增刪改查的業務系統,面試官非要問你如何處理高併發大資料,本來是寫java程式碼,非要問你大型網站架構,這些問題防不勝防,本文就自己的面試經驗來總結一下,拋磚引玉。
題庫
最近阿里集團程式碼開發規約又一次火爆朋友圈,其實進來了才能體會到開發規約外掛的好處,所以這裡總結了一下面試官常問的問題,被問到了就大賺,希望大家能來杭州和北京一起工作!
這是本人面試了三年得到的面試題庫:
- HashMap 原始碼解讀(TreeMap. LinkedHashMap)
hashmap 允許 空值 和 空key, 非執行緒安全的,不保證儲存順序
初始容量 和 負載因子(0.75)
結構化改變,增加或者刪除必須是同步的, 單純的改變值不需要同步
獲取遍歷器的時候,多執行緒的結構的改變,不是通過遍歷器的remove方法的結構改變,都是在遍歷器的時候 丟擲異常,但是這個不能保證,只能是測試使用
根據hashcode排序,相同comparable的根據comparable排序
treeNode是正常節點的2倍 .
樹節點往往是根節點, iterator.remove才可能不是根節點,但是可以根據treenode.root恢復
容量必須是2的倍數,預設為16,最大為2^30
一個桶的元素>=8 就從list 變為 tree,<=6就從tree變為list
桶數量到64的時候裡面的桶才會被樹形化
4*8的元素在同一個節點的時候,會被重新更新size大小
hashBinNode hashCode是key和value的異或 heap 和 stack 的區別
stack: 先進後出
函式呼叫棧,有結構,查詢快,執行緒獨佔的,儲存引用和基本型別heap:
先進先出,沒有結構,查詢慢,執行緒共享的,儲存數值,等待垃圾回收
方法區, 儲存static唯一變數, 被所有執行緒共享
- java基礎
基本型別: byte short int double float long boolean char
快速排序:
http://baike.baidu.com/li nk?url=pqzkGbx5-idKz3_VJ1FtAS2O3SJZhsNWset3-0Tcme_d1XlFErKA50VexUcLCxW46cD8VaxhoQHkiHX6-4sJrYbP5aj77RiCCHd09uJQR0_NQoLMTwS6vxTrC-6Ti-ZDJquSjF3VoUzm9Cnoq3blGK
StringBuffer 執行緒安全和 StringBuilder非執行緒安全
Builder 設計模式
工廠方法:匯出不同格式的檔案
一個產品的時候, 返回不同的工廠
抽象工廠:不同格式的檔案,前 綴也不同
多個產品,返回不同的工廠
JVM 垃圾回收演算法:
計數器法, 標記清除, 標記整理, copy 演算法 (物件區和空閒區互相換),
java中可作為GC Root的物件有
1.虛擬機器棧中引用的物件(本地變量表)
2.方法區中靜態屬性引用的物件
3. 方法區中常量引用的物件
4.本地方法棧中引用的物件(Native物件)
分代演算法:
年輕代,年老代, 永久代
ln A B B是連結, A是實質檔案
版本號和時間戳實現樂觀鎖
JVM 卡頓調優:
-Xincgc
開啟增量gc(預設為關閉);這有助於減少長時間GC時應用程式出現的停頓;但由於可能和應用程式併發執行,所以會降低CPU對應用的處理能力
java 8:
http://www.cnblogs.com/moonandstar08/p/5001914.html
分散式鎖: 略
ConcurrentHashMap:略
java發現死鎖:
jstack -l pid 列舉出執行緒
執行緒狀態:
java.lang.Thread.State
kafka 和 redis
負載均衡, 斷路器, 服務註冊原理
Spring 迴圈依賴:
Spring cache