Java開發,面試題掃描


作者:gggv123
鏈接:https://www.nowcoder.com/discuss/41112
來源:牛客網

2、ArrayList、LinkedList的區別,底層怎么實現的
3、HashMap是如何實現的
4、數據庫的范式、索引
5、Java多線程有幾種實現方式
6、jdbc、Statement 和 PreparedStatement
7、設計模式有哪些,設計模式的原則
8、介紹一下SSH和Hadoop
9、講了一下筆試題
10、java訪問權限
11、序列化和網絡編程,如何實現文件的跨機器傳輸
12、樹的遍歷,深搜和廣搜
13、java面向對象的特性:封裝,繼承,多態啥的

---------------------------- ---------  --------- -----------------------------------   ---------------------------------------------------------------

2.

ArrayList和LinkedList的大致區別如下:
1.ArrayList是實現了基於動態數組的數據結構,LinkedList基於鏈表的數據結構。 
2.對於隨機訪問get和set,ArrayList覺得優於LinkedList,因為LinkedList要移動指針。 
3.對於新增和刪除操作add和remove,LinedList比較占優勢,因為ArrayList要移動數據。

ArrayList和LinkedList底層實現原理

1.說一下 ArrayList 底層實現方式?

①ArrayList 通過數組實現,一旦我們實例化 ArrayList 無參數構造函數默認為數組初始化長度為 10②add 方法底層實現如果增加的元素個數超過了 10 個,那么 ArrayList 底層會新生成一個數組,長度為原數組的 1.5 倍+1,然后將原數組的內容復制到新數組當中,並且后續增加的內容都會放到新數組當中。當新數組無法容納增加的元素時,重復該過程。是一旦數組超出長度,就開始擴容數組。擴容數組調用的方法 Arrays.copyOf(objArr, objArr.length + 1);

2.說一下 LinkedList 底層實現方式?

LinkedList 底層的數據結構是基於雙向循環鏈表的,且頭結點中不存放數據,如下:

既然是雙向鏈表,那么必定存在一種數據結構——我們可以稱之為節點,節點實例保存業務數據,前一個節點的位置信息和后一個節點位置信息,如下圖所示:

 https://blog.csdn.net/weixin_38422276/article/details/78978410


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM