JAVA面試——數據結構&算法


    • Queue
      • 繼承Collection接口,Deque、LinkedList、PriorityQueue、BlockingQueue
      • 用於緩沖、並發訪問等場景
    • Set
      • 繼承Collection接口,HashSet(哈希表)、TreeSet(紅黑樹)
      • 判斷重復元素調用hashCode()和equal()方法實現
    • List
      • ArrayList、LinkedList、Vector、Stack
    • Map
      • HashMap、ConcurrentHashMap
    • Tree
      • 紅黑樹
        • 根是黑色的
        • 葉子節點是黑色的空節點
        • 紅色節點子節點是黑色的
        • 包含相同數目的黑色節點
        • TreeMap、TreeSet、HashMap
        • 解決二叉查找樹會退化成線性結構的缺點
      • B樹、B+樹、B*樹
        • B+樹不維護關鍵字具體信息,不考慮Value的存儲,所有需要信息在葉子節點
        • B*樹在非葉子節點兄弟之間增加指針,關鍵字個數至少為(2/3)* M
      • LSM樹
        • 大樹分成多個小樹
 
  • HashMap HashTable區別
    • HashTable方法同步,方法用synchronized修飾,多線程場合
    • HashTable不允許null值
    • 遍歷方式,HashTable使用Enumeration遍歷,HashMap使用Iterator遍歷
    • 哈希值使用不同,HashTable直接使用hashCode
    • hash數組大小默認11,HshTable增加為old*2 + 1,HashMap默認16,增加為2的指數倍
    • HashTable線程安全,但是需要獲得對象鎖,一般使用CurrentHashMap
      • HashTable競爭同一把鎖,ConcurrentHashMap分段加鎖
  • HashMap Concurrent HashMap區別
    • 非線程安全&線程安全
    • 1.7ConcurrentHashMap對Hash桶分段segment(鎖),1.8Node數組+鏈表+紅黑樹,並發控制使用Synchronized和CAS來操作
    • HashTable使用Synchronized保證線程安全,效率低
    • ConcurrentHashMap鎖粒度更精細,並發性能好
  • LinkedList ArrayList區別
    • 雙向鏈表&Object數組
    • 插入刪除&隨機查找
    • 都是不同步的,不保證線程安全
    • 內存空間占用,ArrayList在結尾預留容量空間,LinkedList每一個元素消耗更多的空間
  • ArrayList Vector區別
    • Vector類所有方法同步,ArrayList不是同步的
  • HashMap實現
    • 數組+鏈表,鏈表長度大於8時轉化為紅黑樹
  • comparable和comparator區別
    • comparable有一個compareTo(Object obj)方法用來排序
    • comparator接口有一個compare(Object obj1,Object obj2)方法用來排序
  • 數組排序用Arrays.sort(),集合排序用Collections.sort()

  • 排序
    • 快速排序
      • 求解Kth Element問題
    • 堆排序
      • 求解TopK Element問題
    • 桶排序
      • 出現頻率最多的K個數
  • 搜索
    • 廣度優先
      • 求解最短路徑問題
      • 用隊列實現
      • 標記遍歷過的節點
    • 深度優先
      • 求解可達性問題
      • 使用遞歸棧實現
      • 標記遍歷過的節點
    • 回溯法(Backtracking)
      • 求解排列組合問題
      • 進入遞歸時標記為已訪問,遞歸返回時標記為未訪問
  • 動態規划
    • 0-1背包問題
      • 完全背包:可重復利用


免責聲明!

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



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