我的十次面試挑戰(第一次)

斐波那契數列

什麼是斐波那契數列,1,1,2,3,5,8,13…這樣一個數列就是斐波那契數列,求第n項的值。

public static int f2(int n) {
    if(n < 1) {
        return 0;
    }else if(n == 1 || n == 2) {
        return 1;
    }
    int res = 1;
    int pre = 1;
    int temp = 0;
    for(int i = 3; i < n; i++) {
        temp = res;
        res = pre + res;
        pre  = temp;
    }
    return res;

tomcat假死

1、應用本身程序的問題,造成死鎖。
2、load 太高,已經超出服務的極限
3、jvm GC 時間過長,導致應用暫停 因爲出錯項目裏面沒有打出GC的處理情況,所以不確定此原因是否也是我項目tomcat假死的原因之一。
4、大量tcp 連接 CLOSE_WAIT netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’ TIME_WAIT 48 CLOSE_WAIT 2228 ESTABLISHED 86

hashmap相關

hashmap優點:快速儲存,快速查找,可伸縮
默認16長度的數組
有hash衝突使用單向鏈表

hash衝突:不同對象算出數組下標是相同的。
解決辦法:加入下個next記錄下一個節點

擴容因子0.75,當儲存比例達到0.75原長度時,數組擴容2倍

鏈表長度大於8時,鏈表變紅黑樹
紅黑樹小於6時,變回單向鏈表

hashmap線程不安全的原因是
jdk 1.7 在多線程情況下,數組擴容時,使用的transfer函數對鏈表使用頭插發,導致鏈表死循環
jdk 1.8中使用尾插法,但是會導致值覆蓋

concureenthashmpa採用分段鎖,粒度更高

elasticsearch

index–type–mapping–document–field

bool 組和查詢條件
must 必須匹配
must not 必須不匹配
should 滿足條件後會增加權重
filter 過濾條件

普通索引:根據文檔查找關鍵字 類似與Linux grep或者word find查找
倒排縮影:通過關鍵字查找文檔

rabbitmq

Exchange 交換機類型
direct 發佈與訂閱routing-key完全匹配
fanout 廣播
topic 主題規則匹配

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