面試筆試遇到的一些題(2)
主要問了java基礎知識。 1、set與list異同點。 set與list都實現了collection介面。list有序儲存,允許重複資料,查詢O(1),實現類有ArrayList、Vector、LinkedList[O(n)]。set不允許重複元素,無序,實現類hashset、linkedhashset、treeset(有序) 2、二叉樹深度優先遍歷,廣度優先遍歷。深度優先使用棧,廣度優先(層次遍歷)使用佇列。 3、二叉平衡數與紅黑樹。 二叉平衡樹所有節點的左右子樹高度差不超過1; 紅黑樹是二叉查詢樹,有以下性質: 性質1. 節點是紅色或黑色。 性質2. 根節點是黑色。 性質3 每個葉節點(NIL節點,空節點)是黑色的。 性質4 每個紅色節點的兩個子節點都是黑色。(從每個葉子到根的所有路徑上不能有兩個連續的紅色節點) 性質5. 從任一節點到其每個葉子的所有路徑都包含相同數目的黑色節點。 4、多執行緒幾種實現方法。 (1)繼承Thread類,重寫run方法。 (2)實現Runnable介面,實現run方法。 (3)通過Callable和FutureTask建立執行緒 (4)執行緒池 5、同步方式 synchronized關鍵字wait()方法和notify()方法、Lock(實現類ReentrantLock) 6、索引優缺點。 建立索引可以大大提高系統的效能。 (1)通過建立唯一性索引,可以保證資料庫表中每一行資料的唯一性。 (2)可以大大加快資料的檢索速度,這也是建立索引的最主要的原因。 (3)可以加速表和表之間的連線,特別是在實現資料的參考完整性方面特別有意義。 (4)在使用分組和排序子句進行資料檢索時,同樣可以顯著減少查詢中分組和排序的時間。 (5)通過使用索引,可以在查詢的過程中,使用優化隱藏器,提高系統的效能。 缺點: (1)建立索引和維護索引要耗費時間、空間,這種時間隨著資料量的增加而增加。 (2) 當對錶中的資料進行增加、刪除和修改的時候,索引也要動態的維護,這樣就降低了資料的維護速度。 mysql索引:唯一索引,避免重複值。普通索引,加快訪問速度。組合索引,組合起來查詢。