1. 程式人生 > >螞蟻金服面試題庫(轉載)

螞蟻金服面試題庫(轉載)

https://blog.csdn.net/current_person/article/details/78144886

前言

作為程式設計師,免不了要經歷面試這關,雖然平時工作勤勤懇懇,但是面試上面未必能展示的出來,比如平時都是做增刪改查的業務系統,面試官非要問你如何處理高併發大資料,本來是寫java程式碼,非要問你大型網站架構,這些問題防不勝防,本文就自己的面試經驗來總結一下,拋磚引玉。

題庫

最近阿里集團程式碼開發規約又一次火爆朋友圈,其實進來了才能體會到開發規約外掛的好處,所以這裡總結了一下面試官常問的問題,被問到了就大賺,希望大家能來杭州和北京一起工作!

這是本人面試了三年得到的面試題庫:

  1. 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的異或
  2. heap 和 stack 的區別 
    stack: 先進後出 
    函式呼叫棧,有結構,查詢快,執行緒獨佔的,儲存引用和基本型別

    heap: 
    先進先出,沒有結構,查詢慢,執行緒共享的,儲存數值,等待垃圾回收

方法區, 儲存static唯一變數, 被所有執行緒共享

  1. 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

連結