【面試題解析】-- 20200312Java軟件開發工程師面試題解析

1. 請談談ArrayList的擴容機制

ArrayList如果使用默認構造方法創建,那麼第一次添加元素時將會執行一次擴容操作,ArrayList的擴容其實質上就是數組元素的拷貝,ArrayList在每次執行add()操作時都會檢查當前ArrayList大小,如果檢查到容量不夠了,那麼將執行擴容操作。

2. 請簡單的介紹一下LinkedList的工作原理

LinkedList的底層實現是一個雙向鏈表,它的底層是以Node類作爲一個元素節點,Node中記錄了上一個節點是什麼元素、下一個節點是什麼元素,如果Node是第一個元素則上一個節點則標識爲null,如果爲最後一個元素則下一個節點標識爲null,如果是LinkedList只有一個元素的話,上一個、下一個節點都爲null。

3. 請說明ArrayList是否會越界

在併發的業務場景下ArrayList是可能會導致越界的,因爲ArrayList的底層實現是一個數組,而且ArrayList還是線程不安全的,故可能會發生越界。

4. 請解釋爲什麼集合類沒有實現Cloneable和Serializable接口?

Cloneable與Serializable分別是爲了實現對象克隆與序列化,雖然集合類沒有實現這兩個接口但是他的實現類對這兩個接口進行實現的,因爲父類不能夠知道子類中哪些成員是需要序列化的,通過子類實現能夠更加靈活。

5. 如果現在請求數達到10000服務器1分鐘之內只能處理1000個請求,你怎麼實現?

最簡單的做法是進行限流操作,可以通過令牌桶算法,將那些獲得令牌的請求給予放行,將那些沒有獲得令牌的請求快速返回錯誤信息。

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